# 📦 دليل نشر إصلاح أعمدة Address

## 📋 ملخص التحديث
تم تغيير عمود `address` إلى `address_1` في جداول `customers` و `suppliers` لدعم نظام العناوين المتعدد.

---

## 🎯 الملفات المتأثرة

### ✅ تم تحديثها (يجب رفعها):
1. `app/Models/Customer.php`
2. `app/Models/Supplier.php`
3. `database/seeders/DefaultDataSeeder.php`
4. `database/migrations/2026_03_26_000001_fix_address_columns.php` (جديد)

### 🔧 ملفات مساعدة:
- `fix_address_columns.sql` - SQL script للتطبيق اليدوي
- `fix_customers_table.php` - script للتحقق من قاعدة البيانات
- `deploy_address_fix.sh` - script النشر للينكس
- `deploy_address_fix.bat` - script النشر للويندوز

---

## 🚀 طرق التطبيق

### الطريقة 1: Script تلقائي (موصى به)

#### على Linux/Unix:
```bash
# امنح صلاحيات التشغيل
chmod +x deploy_address_fix.sh

# شغل الـ script
./deploy_address_fix.sh
```

#### على Windows:
```cmd
deploy_address_fix.bat
```

---

### الطريقة 2: خطوات يدوية

#### 1. نسخة احتياطية (إلزامي)
```bash
# من terminal السيرفر
mysqldump -u username -p database_name > backup_$(date +%Y%m%d).sql
```

#### 2. وضع الموقع في وضع الصيانة
```bash
php artisan down --retry=60 --secret="adly-maintenance-2026"
```

#### 3. رفع الملفات
```bash
# ارفع هذه الملفات عبر FTP/Git:
# - app/Models/Customer.php
# - app/Models/Supplier.php
# - database/seeders/DefaultDataSeeder.php
# - database/migrations/2026_03_26_000001_fix_address_columns.php
```

#### 4. تشغيل Migration
```bash
php artisan migrate --force
```

#### 5. مسح الـ Cache
```bash
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

#### 6. إعادة تشغيل الموقع
```bash
php artisan up
```

---

### الطريقة 3: SQL مباشر (إذا فشل Migration)

```sql
-- تنفيذ من phpMyAdmin أو MySQL CLI

-- جدول customers
ALTER TABLE customers ADD COLUMN address_1 TEXT NULL AFTER city_id;
UPDATE customers SET address_1 = address WHERE address IS NOT NULL;
ALTER TABLE customers DROP COLUMN address;

-- جدول suppliers
ALTER TABLE suppliers ADD COLUMN address_1 TEXT NULL AFTER city_id;
UPDATE suppliers SET address_1 = address WHERE address IS NOT NULL;
ALTER TABLE suppliers DROP COLUMN address;
```

أو استخدم الملف الجاهز:
```bash
mysql -u username -p database_name < fix_address_columns.sql
```

---

## ✅ التحقق من نجاح التحديث

### 1. تحقق من الأعمدة:
```bash
php fix_customers_table.php
```

يجب أن يظهر:
```
✅ address: غير موجود
✅ address_1: موجود
```

### 2. اختبر إضافة عميل جديد:
- افتح صفحة العملاء
- أضف عميل جديد
- تأكد من عدم وجود أخطاء

### 3. تحقق من البيانات القديمة:
```sql
SELECT name, address_1 FROM customers LIMIT 10;
```

---

## 🔗 روابط مهمة

### الدخول أثناء الصيانة:
```
https://your-domain.com/adly-maintenance-2026
```

### فحص الـ Logs:
```bash
tail -f storage/logs/laravel.log
```

---

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

### خطأ: Migration فشل
**الحل:** استخدم SQL script اليدوي
```bash
mysql -u username -p database_name < fix_address_columns.sql
```

### خطأ: العمود موجود بالفعل
**الحل:** العمود تم تحديثه، تجاهل الخطأ

### خطأ: Doctrine DBAL مطلوب
**الحل:** استخدم SQL script بدلاً من Migration

### الموقع لا يعمل بعد التحديث
**الحل:** 
```bash
php artisan up
php artisan optimize:clear
```

---

## 📊 Checklist التطبيق

- [ ] عمل نسخة احتياطية لقاعدة البيانات
- [ ] وضع الموقع في وضع الصيانة
- [ ] رفع الملفات المحدثة
- [ ] تشغيل Migration أو SQL
- [ ] مسح الـ Cache
- [ ] التحقق من نجاح التحديث
- [ ] اختبار إضافة عميل جديد
- [ ] اختبار إضافة مورد جديد
- [ ] فحص البيانات القديمة
- [ ] إعادة تشغيل الموقع
- [ ] مراقبة الـ Logs لأي أخطاء

---

## 📞 الدعم

إذا واجهت أي مشكلة:
1. تحقق من ملف الـ Logs: `storage/logs/laravel.log`
2. راجع هذا الدليل
3. جرّب الطريقة البديلة (SQL)
4. تأكد من استعادة النسخة الاحتياطية إذا لزم الأمر

---

**تاريخ التحديث:** 26 مارس 2026  
**الإصدار:** 1.0  
**الحالة:** ✅ جاهز للتطبيق
