DASHBOARD_APP_KEYS = {
    "auto_sync_master_minutes": "auto_sync_master_minutes",
    "auto_sync_start_delay_seconds": "auto_sync_start_delay_seconds",
    # edited by glg
    # Interval probe ringan saat mode notify_only (tanpa apply otomatis).
    "auto_sync_probe_interval_seconds": "auto_sync_probe_interval_seconds",
    # edited by glg
    # Jeda pengulangan notifikasi update bila user memilih "Nanti".
    "auto_sync_notify_reminder_minutes": "auto_sync_notify_reminder_minutes",
    "sync_tables": "sync_tables",
    "export_json_interval_minutes": "export_json_interval_minutes",
    "export_on_close": "export_on_close",
    # edited by glg
    "export_on_settlement": "export_on_settlement",
    # edited by glg
    "settlement_delivery_mode": "settlement_delivery_mode",
    "settlement_direct_enabled": "settlement_direct_enabled",
    # edited by glg
    "export_replay_on_startup_enabled": "export_replay_on_startup_enabled",
    "export_replay_on_startup_delay_ms": "export_replay_on_startup_delay_ms",
    "export_replay_on_startup_require_online": "export_replay_on_startup_require_online",
    "export_replay_on_startup_upload_batch_limit": "export_replay_on_startup_upload_batch_limit",
    "export_requeue_failed_transient_on_startup": "export_requeue_failed_transient_on_startup",
    "export_requeue_failed_transient_limit": "export_requeue_failed_transient_limit",
    "export_requeue_failed_transient_max_age_hours": "export_requeue_failed_transient_max_age_hours",
    # edited by glg
    "online_poll_interval_ms": "dashboard_online_poll_interval_ms",
    "online_probe_timeout_sec": "dashboard_online_probe_timeout_sec",
}

DASHBOARD_ENDPOINT_KEYS = {
    "api_base_url": "api_base_url",
    "ui_assets_endpoint": "ep_ui_assets",
    "request_timeout": "request_timeout",
}

DASHBOARD_LAYOUT_KEYS = {
    "logo_size": "dashboard_logo_size",
    "logo_width": "dashboard_logo_width",
    "sidebar_width": "dashboard_sidebar_width",
    "sidebar_btn_height": "dashboard_sidebar_btn_height",
    "sidebar_spacing": "dashboard_sidebar_spacing",
    "sidebar_margin": "dashboard_sidebar_margin",
    "status_icon_box": "dashboard_status_icon_box",
    "status_icon_size": "dashboard_status_icon_size",
}

DASHBOARD_DEFAULTS = {
    "ui_assets_endpoint": "/eusvc/DataSync/uiAssets",
    "request_timeout": 3,
    "auto_sync_master_minutes": 5,
    "auto_sync_start_delay_seconds": 10,
    # edited by glg
    # Best practice:
    # - cek update ringan lebih sering (default 60 detik)
    # - apply tetap manual setelah konfirmasi user.
    "auto_sync_probe_interval_seconds": 60,
    # edited by glg
    # Reminder ulang notifikasi update saat user menunda.
    "auto_sync_notify_reminder_minutes": 10,
    "export_json_interval_minutes": 5,
    "export_on_close": 0,
    # edited by glg
    "export_on_settlement": 1,
    # edited by glg
    # Opsi valid: direct_only | dual | export_only
    "settlement_delivery_mode": "direct_only",
    "settlement_direct_enabled": 0,
    # edited by glg
    "export_replay_on_startup_enabled": 1,
    "export_replay_on_startup_delay_ms": 1500,
    "export_replay_on_startup_require_online": 1,
    "export_replay_on_startup_upload_batch_limit": 25,
    "export_requeue_failed_transient_on_startup": 1,
    "export_requeue_failed_transient_limit": 100,
    "export_requeue_failed_transient_max_age_hours": 72,
    # edited by glg
    "online_poll_interval_ms": 30000,
    "online_probe_timeout_sec": 1.0,
    "logo_size": 70,
    "logo_width": 70,
    "sidebar_width": 200,
    "sidebar_btn_height": 36,
    "sidebar_spacing": 2,
    "sidebar_margin": 4,
    "status_icon_box": 28,
    "status_icon_size": 20,
}
