Files
tripz-llc/backend/migrations/2026_08_07_leak_detection.sql
2026-08-09 16:56:13 +03:00

51 lines
3.0 KiB
SQL
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 2026_08_07_leak_detection.sql
--
-- ‏كشف التسرب خارج المنصة — سجل خادمي مستقل عن بلاغ التطبيق.
--
-- ‏الموجود اليوم: جدول driver_ride_scam يملؤه **تطبيق السائق عن نفسه**
-- ‏(map_driver_controller.dart:823). نسخة معدّلة من التطبيق ببساطة لا
-- ‏ترسل البلاغ، فالكشف يعتمد على تعاون من نريد كشفه. ويبقى مفيداً كإشارة
-- ‏إضافية، لذلك لا نلمسه.
--
-- ‏الجديد: الخادم يستنتج النمط بنفسه من بيانات لا يملك السائق تزويرها —
-- ‏قَبِل، ثم أُلغيت، ولم تبدأ الرحلة قط. وتكرار نفس زوج (سائق، راكب) هو
-- ‏الإشارة عالية الثقة: صدفةً مرة، ونمطاً مرتين.
--
-- ⚠️ ‏يُنفَّذ على قاعدة primary (jorSiroDB) وحدها.
CREATE TABLE IF NOT EXISTS `driver_leak_events` (
`id` INT NOT NULL AUTO_INCREMENT,
`driver_id` VARCHAR(100) NOT NULL,
`passenger_id` VARCHAR(100) NOT NULL,
`ride_id` VARCHAR(20) NOT NULL,
`cancel_status` VARCHAR(40) NOT NULL
COMMENT 'الحالة التي انتهت بها الرحلة (CancelFromDriverAfterApply / cancelled_by_passenger)',
`pair_repeat` SMALLINT UNSIGNED NOT NULL DEFAULT 1
COMMENT 'كم مرة تكرر نفس زوج (سائق، راكب) بهذا النمط خلال النافذة',
`app_reported` TINYINT(1) NOT NULL DEFAULT 0
COMMENT 'هل بلّغ تطبيق السائق أيضاً (driver_ride_scam)؟ تطابقهما يرفع الثقة',
`confidence` DECIMAL(4,3) NOT NULL DEFAULT 0
COMMENT 'درجة الثقة 0..1 — يحسبها bot/cron_leak_detection.php',
`reviewed_by` VARCHAR(100) NULL DEFAULT NULL
COMMENT 'معرّف الإداري الذي راجع الحالة. NULL = لم تُراجع بعد',
`review_note` VARCHAR(255) NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
-- ‏يمنع الكرون من تسجيل نفس الرحلة مرتين عند كل مرور
UNIQUE KEY `uniq_ride` (`ride_id`),
KEY `idx_driver` (`driver_id`, `created_at`),
KEY `idx_pair` (`driver_id`, `passenger_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
COMMENT='أحداث تسرب مشتبهة يستنتجها الخادم — لا يبلّغ عنها التطبيق';
-- ‏driver_orders يُقرأ في هذا الكشف بالانضمام على order_id و driver_id،
-- ‏وهو اليوم بلا أي فهرس غير المفتاح الأساسي (id). الفحص كان سيمسح
-- ‏الجدول كاملاً عند كل مرور.
ALTER TABLE `driver_orders`
ADD INDEX `idx_order` (`order_id`),
ADD INDEX `idx_driver_created` (`driver_id`, `created_at`);
-- ‏للتراجع:
-- DROP TABLE `driver_leak_events`;
-- ALTER TABLE `driver_orders` DROP INDEX `idx_order`, DROP INDEX `idx_driver_created`;