37 lines
2.2 KiB
SQL
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;
|