Time Engine je generični časovni motor za CM PRO.
Time Engine izvaja načrtovane CM PRO jobe: expiry checks, payment lifecycle, heartbeat triggers in prihodnje specializirane motorje, kot sta Price Engine in analytics snapshots. Cron, CLI in admin gumbi samo sprožijo isti scheduler core.
Current status
20260722213141-7700fb4e
Every 10 min
2026-07-22T21:30:01+02:00
Manual actions
Manual runs use the same scheduler core as cron. They do not bypass job safety settings.
Job groups
Last: 2026-07-22T21:30:01+02:00
Last summary
{
"checked": 0,
"expired": 0,
"awaiting_payment": null
}
Last: 2026-07-22T21:31:42+02:00
Last summary
{
"checked": 8,
"expired": null,
"awaiting_payment": 1
}
Trigger Layer / Heartbeat
Admin page-load heartbeat calls cm_te_maybe_wake('admin_heartbeat'). It is throttled, lock-protected and best-effort.
20260722213141-7700fb4e
throttled · 73 sec
ran
Raw heartbeat result
{
"ok": true,
"engine": "CM PRO Time Engine",
"helper": "cm_te_maybe_wake",
"version": "0.4a",
"trigger": "admin_heartbeat",
"now": "2026-07-22T21:31:41+02:00",
"settings_path": "/var/www/html/app_pro/common/data/json/scheduler/settings.json",
"state_path": "/var/www/html/app_pro/common/data/json/scheduler/heartbeat_state.json",
"lock_path": "/var/www/html/app_pro/common/data/json/scheduler/heartbeat.lock",
"config": {
"enabled": true,
"admin_heartbeat_enabled": true,
"public_heartbeat_enabled": true,
"min_interval_seconds": 900,
"force": false
},
"skipped": false,
"reason": "ran",
"run": {
"ok": true,
"engine": "CM PRO Time Engine",
"version": "0.1",
"run_id": "20260722213141-7700fb4e",
"timezone": "Europe/Ljubljana",
"started_at": "2026-07-22T21:31:41+02:00",
"finished_at": "2026-07-22T21:31:42+02:00",
"jobs": [
{
"job": "payment_lifecycle_scan",
"ok": true,
"mode": "mutate_v0_3e_payment_lifecycle_safety_config",
"now": "2026-07-22T21:31:41+02:00",
"checked": 8,
"with_payment_block": 8,
"missing_payment_block": 0,
"legacy_deadline_only": 0,
"awaiting_payment": 1,
"sepa_awaiting_payment": 1,
"non_sepa_awaiting_payment": 0,
"bonus_expired_candidates": 0,
"bonus_deactivated": 0,
"reminder_candidates": 0,
"reminder_due_logged": 0,
"reminder_email_candidates": 0,
"reminder_email_sent": 0,
"reminder_email_failed": 0,
"payment_deadline_candidates": 0,
"auto_cancel_due_logged": 0,
"auto_cancel_status_mutated": 0,
"occupancy_release_candidates": 0,
"occupancy_released": 0,
"occupancy_release_failed": 0,
"deadline_expired_email_candidates": 0,
"deadline_expired_email_sent": 0,
"deadline_expired_email_failed": 0,
"parse_errors": [],
"write_errors": [],
"email_errors": [],
"emails_skipped_by_config": 0,
"config": {
"settings_path": "/var/www/html/app_pro/common/data/json/scheduler/settings.json",
"payment_lifecycle_enabled": true,
"business_mutations_enabled": true,
"emails_enabled": true,
"dry_run_emails": false,
"send_emails_from": "2026-06-13T16:58:26.084198+02:00",
"reminder_emails_enabled": true,
"deadline_expired_emails_enabled": true
},
"items": [],
"notes": [
"v0.3e keeps v0.3d behavior and adds payment lifecycle safety/config guards.",
"Payment deadline due is logged and reservation/payment status is changed to cancelled_unpaid.",
"Reservation status is cancelled and occupancy is released through cm_regen_merged_for_unit().",
"Occupancy is released by regenerating occupancy_merged.json and publishing occupancy.json.",
"Guest notification emails are controlled by payment_lifecycle settings, dry-run flag and send_emails_from watermark.",
"The operational payment lifecycle source is active reservations JSON, not confirmed inquiry archive copies."
],
"started_at": "2026-07-22T21:31:41+02:00",
"finished_at": "2026-07-22T21:31:42+02:00"
}
]
}
}
Engine & job safety settings
These settings are stored in common/data/json/scheduler/settings.json. They separate core trigger behavior from individual job safety controls.
Cron / CLI diagnostics
Web UI does not edit system crontab directly. It shows the safe CLI commands. The installer writes only the managed block between CM PRO markers.
Install / update cron:
php /var/www/html/app_pro/scripts/scheduler_install_cron.php --install
Check cron installer status:
php /var/www/html/app_pro/scripts/scheduler_install_cron.php --status
Remove managed cron block:
php /var/www/html/app_pro/scripts/scheduler_install_cron.php --remove
Manual CLI run:
php /var/www/html/app_pro/scripts/scheduler_run.php
Recent runs
2026-07-22T21:30:01+02:00
2026-07-22T21:20:01+02:00
2026-07-22T21:10:01+02:00
2026-07-22T21:00:01+02:00
Diagnostics / raw API output
Manual run and refresh responses are shown here. This is intentionally below the operational dashboard.
{}