42 lines
2.4 KiB
SQL
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`;
|