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

37 lines
2.2 KiB
SQL

-- ============================================================
-- admin_audit_log — جدول سجل تدقيق عمليات الأدمن
-- ============================================================
-- الجدول كان مستخدماً في الكود ولا وجود له في schema_primary.sql، أي أنه
-- غير موجود على أي نشر نظيف. والنتيجة:
--
-- • logAudit() في backend/functions.php يبتلع الاستثناء ويكتفي بـ
-- error_log، فكل عملية تدقيق كانت تفشل بصمت (تحديث كازان، تعديل سائق،
-- إرسال إشعار جماعي، تشغيل حملة، تحديث إصدار التطبيق).
-- • شاشة "سجلات الأمان" تظهر فارغة دائماً — لا لأن العرض معطّل بل لأن
-- الاستعلام لا يجد جدولاً.
--
-- الأعمدة هنا هي اتحاد ما يكتبه المصدران المختلفان:
-- - functions.php::logAudit → admin_id, action, table_name, record_id, details
-- - Admin/v2/quality/blacklist_manager.php → admin_id, admin_phone, action, table_name, entity_type, details
-- ولذلك فالأعمدة غير المشتركة تقبل NULL.
--
-- ملاحظة الترميز: audit_logs.php يربط admin_id مع employee.id و adminUser.id
-- عبر COLLATE utf8mb4_general_ci صراحةً، فنُثبّت الترميز نفسه هنا لتفادي
-- خطأ "Illegal mix of collations" عند الربط.
-- ============================================================
CREATE TABLE IF NOT EXISTS `admin_audit_log` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`admin_id` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`admin_phone` VARCHAR(32) DEFAULT NULL,
`action` VARCHAR(255) NOT NULL,
`table_name` VARCHAR(100) DEFAULT NULL,
`entity_type` VARCHAR(100) DEFAULT NULL,
`record_id` VARCHAR(100) DEFAULT NULL,
`details` TEXT DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `idx_admin_id` (`admin_id`),
KEY `idx_created_at` (`created_at`),
KEY `idx_action` (`action`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;