feat(schedule): add schedule:bootstrap and minute-precise automation runs

Install per-module schedule:run cron from artisan, store sms/in_app send minutes, and match scheduled triggers at exact HH:mm Tehran time.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-24 22:13:06 +03:30
co-authored by Cursor
parent 9bb0fa3a1d
commit 1c8ab4b725
7 changed files with 214 additions and 17 deletions
+19 -6
View File
@@ -1,14 +1,27 @@
#!/bin/sh
# نصب کران قیمت — یکی از دو روش را انتخاب کنید.
# مسیر را با مسیر واقعی سرور عوض کنید.
# نصب کران — برای هر ماژول/tenant یک‌بار از داخل همان مسیر سرور:
# cd /opt/test/server && php artisan schedule:bootstrap
#
# این دستور:
# 1) اگر خط cron این ماژول نبود، اضافه می‌کند
# 2) یک‌بار schedule:run را اجرا می‌کند
#
# فقط نصب cron:
# php artisan schedule:bootstrap --install-only
#
# فقط یک‌بار اجرا:
# php artisan schedule:bootstrap --run-only
#
# دیدن خط بدون نصب:
# php artisan schedule:bootstrap --dry-run
APP_DIR="/opt/rahimigold/server"
# ─── روش ۱ (پیشنهادی): schedule:run هر دقیقه ───
# prices:tick-loop داخل Kernel هر ۱۰ ثانیه ۶ بار اجرا می‌شود.
# ─── روش ۱ (پیشنهادی): schedule:bootstrap ───
# cd $APP_DIR && php artisan schedule:bootstrap
# ─── روش ۲: دستی crontab ───
# crontab -e:
# * * * * * cd $APP_DIR && php artisan schedule:run >> /dev/null 2>&1
# ─── روش ۲: مستقیم هر ۱۰ ثانیه (بدون schedule:run) ───
# * * * * * cd $APP_DIR && php artisan prices:tick >> /dev/null 2>&1
# * * * * * sleep 10 && cd $APP_DIR && php artisan prices:tick >> /dev/null 2>&1
# * * * * * sleep 20 && cd $APP_DIR && php artisan prices:tick >> /dev/null 2>&1