{
    "version": 1,
    "updated_at": "2026-10-18T12:00:00+00:00",
    "meta": {
        "name": "الأجهزة والإشعارات الجماعية والذكاء الاصطناعي",
        "feature": "notifications-devices-broadcast-ai"
    },
    "tables": [
        {
            "id": "tbl_device_tokens",
            "name": "device_tokens",
            "color": "#185FA5",
            "x": 60,
            "y": 60,
            "timestamps": true,
            "soft_deletes": false,
            "external": false,
            "columns": [
                {
                    "id": "col_device_tokens_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_userable_type",
                    "name": "userable_type",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "المالك User/Employee — unique(userable_type, userable_id, device_id) — morphs('userable'): composite index (userable_type, userable_id)",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_userable_id",
                    "name": "userable_id",
                    "type": "bigInteger",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": true,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "المالك User/Employee — unique(userable_type, userable_id, device_id) (معرّف userable)",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_device_id",
                    "name": "device_id",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "معرّف الجهاز",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_device_type",
                    "name": "device_type",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 10,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "DeviceType: android|ios|web",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_fcm_token",
                    "name": "fcm_token",
                    "type": "text",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "FCM token",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_lang",
                    "name": "lang",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 2,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "Lang — model default ar",
                    "foreign": null
                },
                {
                    "id": "col_device_tokens_last_used_at",
                    "name": "last_used_at",
                    "type": "timestamp",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "آخر استخدام",
                    "foreign": null
                }
            ]
        },
        {
            "id": "tbl_broadcast_notifications",
            "name": "broadcast_notifications",
            "color": "#185FA5",
            "x": 480,
            "y": 60,
            "timestamps": true,
            "soft_deletes": false,
            "external": false,
            "columns": [
                {
                    "id": "col_broadcast_notifications_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_broadcast_notifications_admin_id",
                    "name": "admin_id",
                    "type": "foreignId",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "الأدمن المرسل",
                    "foreign": {
                        "references_table": "admins",
                        "references_column": "id",
                        "on_delete": "restrict",
                        "on_update": "cascade"
                    }
                },
                {
                    "id": "col_broadcast_notifications_title",
                    "name": "title",
                    "type": "json",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "العنوان {ar,en}",
                    "foreign": null
                },
                {
                    "id": "col_broadcast_notifications_body",
                    "name": "body",
                    "type": "json",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "النص {ar,en}",
                    "foreign": null
                },
                {
                    "id": "col_broadcast_notifications_target_city_id",
                    "name": "target_city_id",
                    "type": "foreignId",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "المدينة المستهدفة",
                    "foreign": {
                        "references_table": "cities",
                        "references_column": "id",
                        "on_delete": "set null",
                        "on_update": "cascade"
                    }
                },
                {
                    "id": "col_broadcast_notifications_target_blood_type",
                    "name": "target_blood_type",
                    "type": "string",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 3,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "الفصيلة المستهدفة",
                    "foreign": null
                },
                {
                    "id": "col_broadcast_notifications_recipients_count",
                    "name": "recipients_count",
                    "type": "integer",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "عدد المستلمين — model default 0",
                    "foreign": null
                },
                {
                    "id": "col_broadcast_notifications_sent_at",
                    "name": "sent_at",
                    "type": "timestamp",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "وقت الإرسال",
                    "foreign": null
                }
            ]
        },
        {
            "id": "tbl_ai_summaries",
            "name": "ai_summaries",
            "color": "#185FA5",
            "x": 900,
            "y": 60,
            "timestamps": true,
            "soft_deletes": false,
            "external": false,
            "columns": [
                {
                    "id": "col_ai_summaries_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_period_start",
                    "name": "period_start",
                    "type": "date",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "بداية الفترة — unique(period_start, locale)",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_period_end",
                    "name": "period_end",
                    "type": "date",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "نهاية الفترة",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_locale",
                    "name": "locale",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 2,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "اللغة",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_content",
                    "name": "content",
                    "type": "longText",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "الملخص",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_metrics",
                    "name": "metrics",
                    "type": "json",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "المؤشرات",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_ai_provider",
                    "name": "ai_provider",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 20,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "AiProvider",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_ai_model",
                    "name": "ai_model",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 100,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "النموذج",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_generated_at",
                    "name": "generated_at",
                    "type": "timestamp",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "وقت التوليد",
                    "foreign": null
                },
                {
                    "id": "col_ai_summaries_generated_by_admin_id",
                    "name": "generated_by_admin_id",
                    "type": "foreignId",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "ولّده الأدمن",
                    "foreign": {
                        "references_table": "admins",
                        "references_column": "id",
                        "on_delete": "set null",
                        "on_update": "cascade"
                    }
                }
            ]
        },
        {
            "id": "tbl_notifications",
            "name": "notifications",
            "color": "#888780",
            "x": 1320,
            "y": 60,
            "timestamps": true,
            "soft_deletes": false,
            "external": true,
            "columns": [
                {
                    "id": "col_notifications_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_notifications_type",
                    "name": "type",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": true,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE — NotificationType",
                    "foreign": null
                },
                {
                    "id": "col_notifications_notifiable_type",
                    "name": "notifiable_type",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE — User/Employee/Admin — morphs('notifiable'): composite index (notifiable_type, notifiable_id)",
                    "foreign": null
                },
                {
                    "id": "col_notifications_notifiable_id",
                    "name": "notifiable_id",
                    "type": "bigInteger",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": true,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE — User/Employee/Admin (معرّف notifiable)",
                    "foreign": null
                },
                {
                    "id": "col_notifications_data",
                    "name": "data",
                    "type": "text",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE — {type,title{ar,en},body{ar,en},ids,screen}",
                    "foreign": null
                },
                {
                    "id": "col_notifications_read_at",
                    "name": "read_at",
                    "type": "timestamp",
                    "nullable": true,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE",
                    "foreign": null
                }
            ]
        },
        {
            "id": "tbl_settings",
            "name": "settings",
            "color": "#888780",
            "x": 60,
            "y": 680,
            "timestamps": true,
            "soft_deletes": false,
            "external": true,
            "columns": [
                {
                    "id": "col_settings_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_settings_key",
                    "name": "key",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE — مفاتيح جديدة: booking_window_days=30, same_day_min_lead_minutes=60, auto_cancel_unconfirmed_hours=2, user_change_cutoff_hours=6, reminder_hours=[24,2], no_show_run_at=23:59, eligibility_reminder_days=4, appeal_default_expiry_days=7, appeal_response_overflow=2, user_appeal_max_open=3, ai_enabled, ai_provider, ai_model, ai_api_key, ai_prompt, stats_*",
                    "foreign": null
                },
                {
                    "id": "col_settings_value",
                    "name": "value",
                    "type": "text",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "REUSE",
                    "foreign": null
                }
            ]
        },
        {
            "id": "tbl_admins",
            "name": "admins",
            "color": "#888780",
            "x": 480,
            "y": 680,
            "timestamps": true,
            "soft_deletes": false,
            "external": true,
            "columns": [
                {
                    "id": "col_admins_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_admins_name",
                    "name": "name",
                    "type": "string",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": 255,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "اسم الأدمن",
                    "foreign": null
                }
            ]
        },
        {
            "id": "tbl_cities",
            "name": "cities",
            "color": "#888780",
            "x": 900,
            "y": 680,
            "timestamps": true,
            "soft_deletes": false,
            "external": true,
            "columns": [
                {
                    "id": "col_cities_id",
                    "name": "id",
                    "type": "id",
                    "nullable": false,
                    "unique": false,
                    "primary": true,
                    "index": false,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": null,
                    "foreign": null
                },
                {
                    "id": "col_cities_country_id",
                    "name": "country_id",
                    "type": "bigInteger",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": false,
                    "unsigned": true,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": " → countries",
                    "foreign": null
                },
                {
                    "id": "col_cities_is_active",
                    "name": "is_active",
                    "type": "boolean",
                    "nullable": false,
                    "unique": false,
                    "primary": false,
                    "index": true,
                    "unsigned": false,
                    "default": null,
                    "length": null,
                    "precision": null,
                    "scale": null,
                    "values": null,
                    "comment": "نشط/غير نشط — model default true",
                    "foreign": null
                }
            ]
        }
    ],
    "relations": [
        {
            "id": "rel_broadcast_notifications_admin_id",
            "from_table": "broadcast_notifications",
            "from_column": "admin_id",
            "to_table": "admins",
            "to_column": "id",
            "type": "many_to_one",
            "on_delete": "restrict",
            "on_update": "cascade"
        },
        {
            "id": "rel_broadcast_notifications_target_city_id",
            "from_table": "broadcast_notifications",
            "from_column": "target_city_id",
            "to_table": "cities",
            "to_column": "id",
            "type": "many_to_one",
            "on_delete": "set null",
            "on_update": "cascade"
        },
        {
            "id": "rel_ai_summaries_generated_by_admin_id",
            "from_table": "ai_summaries",
            "from_column": "generated_by_admin_id",
            "to_table": "admins",
            "to_column": "id",
            "type": "many_to_one",
            "on_delete": "set null",
            "on_update": "cascade"
        }
    ]
}
