Files
Siro/backend/migrations/2026_08_07_passenger_cancel_policy.sql
T

42 lines
2.4 KiB
SQL

-- 2026_08_07_passenger_cancel_policy.sql
--
-- ‏رسوم إلغاء الراكب بعد قبول السائق.
--
-- ‏متماثلة مع تعويض عدم الحضور (ترحيل 2026_08_07_driver_cancel_compensation):
-- ‏نفس المبدأ — من تسبب بضياع وقت الآخر يعوّضه، والمال يذهب **للسائق** لا
-- ‏للشركة. الفرق أن الزمن المحتسب هنا يبدأ من لحظة القبول لا من لحظة الوصول،
-- ‏لأن السائق يكون في طريقه لا واقفاً ينتظر.
--
-- ‏ثلاثة إعفاءات مبنية عمداً، لأن رسماً بلا إعفاء يعاقب الراكب على أخطاء
-- ‏ليست خطأه ويطرده من التطبيق:
-- ١. لا سائق قُبِل بعد → مجاني دائماً
-- ٢. خلال أول دقائق من القبول → مجاني (passengerCancelFreeMinutes)
-- ٣. السائق تأخّر ولم يصل → مجاني (driverLateExemptMinutes)
--
-- ⚠️ ‏يُنفَّذ على قاعدة primary (jorSiroDB) وحدها — kazan يُقرأ عبر $con.
ALTER TABLE `kazan`
ADD COLUMN `passengerCancelCap` VARCHAR(10)
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
NOT NULL DEFAULT '0'
COMMENT 'سقف رسم إلغاء الراكب بعملة الدولة. 0 = الرسم معطّل بالكامل'
AFTER `cancelMinWaitMinutes`,
ADD COLUMN `passengerCancelFreeMinutes` TINYINT UNSIGNED
NOT NULL DEFAULT 2
COMMENT 'دقائق الإلغاء المجاني بعد قبول السائق'
AFTER `passengerCancelCap`,
ADD COLUMN `driverLateExemptMinutes` TINYINT UNSIGNED
NOT NULL DEFAULT 10
COMMENT 'إن مرّت هذه الدقائق على القبول ولم يصل السائق، الإلغاء مجاني';
-- ‏عدّاد عدم الحضور للراكب — سجل دائم للمراجعة الإدارية.
-- ‏(الفحص السريع يتم من Redis، وهذا العمود للتقارير وقرارات الحظر اليدوية.)
ALTER TABLE `passengers`
ADD COLUMN `noShowCount` SMALLINT UNSIGNED NOT NULL DEFAULT 0
COMMENT 'مرات إلغاء الراكب بعد قبول السائق ودفعه رسماً';
-- ‏للتراجع:
-- ALTER TABLE `kazan` DROP COLUMN `passengerCancelCap`,
-- DROP COLUMN `passengerCancelFreeMinutes`, DROP COLUMN `driverLateExemptMinutes`;
-- ALTER TABLE `passengers` DROP COLUMN `noShowCount`;