# دليل إعداد قاعدة البيانات - Scorecard System

## 📋 نظرة عامة

تم تحديث نظام Scorecard ليقوم بحفظ البيانات في:
1. ✅ **ملفات JSON** (كما كان سابقاً)
2. ✅ **قاعدة بيانات MySQL** (جديد)
3. ✅ **Zoho CRM** (كما كان سابقاً)
4. ✅ **Zoho Recruit** (كما كان سابقاً)

---

## 🚀 خطوات الإعداد

### الخطوة 1: إنشاء قاعدة البيانات

قم بتشغيل ملف SQL لإنشاء قاعدة البيانات والجداول:

```bash
mysql -u rizk -p < database.sql
```

أو من خلال phpMyAdmin:
1. افتح phpMyAdmin
2. اذهب إلى تبويب "Import"
3. اختر ملف `database.sql`
4. اضغط "Go"

### الخطوة 2: التحقق من إعدادات الاتصال

تأكد من صحة بيانات الاتصال في ملف `db_config.php`:

```php
private $host = 'localhost';
private $username = 'rizk';
private $password = 'Mostafarizk27@';
private $database = 'scorecard_db';
```

### الخطوة 3: استيراد البيانات الموجودة (اختياري)

لاستيراد البيانات الموجودة من ملفات JSON إلى قاعدة البيانات:

1. افتح المتصفح واذهب إلى:
   ```
   http://your-domain/scorecard/import_json_to_db.php
   ```

2. سيتم استيراد جميع الملفات من مجلد `data/`

---

## 📊 هيكل قاعدة البيانات

### جدول `scorecards`
يحتوي على المعلومات الأساسية لكل scorecard:
- `id` - المعرف الفريد
- `client` - اسم العميل (MNX, IMS, BIG LS, Fluidity)
- `candidate` - اسم المرشح
- `language` - اللغة
- `english_evaluator` - المقيّم الإنجليزي
- `target_evaluator` - المقيّم المستهدف
- `evaluation_date` - تاريخ التقييم
- `email` - البريد الإلكتروني
- `final_percentage` - النسبة النهائية
- `submitted_at` - وقت الإرسال
- `zoho_crm_record_id` - معرف السجل في Zoho CRM
- `zoho_recruit_record_id` - معرف السجل في Zoho Recruit
- `crm_record_url` - رابط السجل في CRM
- `json_file_path` - مسار ملف JSON

### جدول `scorecard_items`
يحتوي على تفاصيل كل عنصر في التقييم:
- `id` - المعرف الفريد
- `scorecard_id` - معرف الـ scorecard (Foreign Key)
- `field_name` - اسم الحقل
- `field_value` - قيمة الحقل
- `field_type` - نوع الحقل (score, deduction, comment, other)
- `created_at` - وقت الإنشاء

### جدول `clients`
قائمة بالعملاء المتاحين

---

## 🔍 استعلامات مفيدة

### عرض جميع التقييمات لعميل معين
```sql
SELECT * FROM scorecard_summary WHERE client = 'MNX';
```

### عرض تقييم مع جميع التفاصيل
```sql
SELECT s.*, si.field_name, si.field_value, si.field_type
FROM scorecards s
LEFT JOIN scorecard_items si ON s.id = si.scorecard_id
WHERE s.id = 1;
```

### حساب متوسط الدرجات لكل عميل
```sql
SELECT client, 
       AVG(final_percentage) as avg_score, 
       COUNT(*) as total_scorecards
FROM scorecards
GROUP BY client;
```

### عرض التقييمات الأخيرة (آخر 30 يوم)
```sql
SELECT * FROM scorecard_summary 
WHERE submitted_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
ORDER BY submitted_at DESC;
```

---

## ✅ التحقق من عمل النظام

1. **اختبار الاتصال بقاعدة البيانات:**
   - افتح أي صفحة scorecard (مثل `mnx.php`)
   - املأ النموذج واضغط Submit
   - تحقق من ظهور رسالة نجاح تحتوي على `db=1&db_id=X`

2. **التحقق من حفظ البيانات:**
   ```sql
   SELECT * FROM scorecards ORDER BY id DESC LIMIT 1;
   SELECT * FROM scorecard_items WHERE scorecard_id = (SELECT MAX(id) FROM scorecards);
   ```

---

## 📝 ملاحظات مهمة

- ✅ النظام يحفظ في JSON **و** قاعدة البيانات معاً
- ✅ إذا فشل الحفظ في قاعدة البيانات، سيستمر الحفظ في JSON و Zoho
- ✅ جميع الأخطاء يتم تسجيلها في error log
- ✅ يمكنك استخدام `import_json_to_db.php` لاستيراد البيانات القديمة

---

## 🛠️ استكشاف الأخطاء

### خطأ: "Database connection failed"
- تحقق من بيانات الاتصال في `db_config.php`
- تأكد من تشغيل MySQL server
- تأكد من وجود قاعدة البيانات `scorecard_db`

### خطأ: "Failed to insert scorecard"
- تحقق من error log في PHP
- تأكد من صحة البيانات المرسلة
- تحقق من أذونات المستخدم على قاعدة البيانات

---

## 📞 الدعم

للمساعدة أو الاستفسارات، راجع ملفات:
- `database.sql` - هيكل قاعدة البيانات
- `db_config.php` - إعدادات الاتصال
- `save_scorecard.php` - منطق الحفظ
- `import_json_to_db.php` - استيراد البيانات

