Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/MIGRATION_ANALYSIS_REPORT.md
2026-04-14 19:34:55 +03:30

219 lines
10 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# گزارش تحلیل میگریشن‌ها
**تاریخ بررسی:** 2026-01-02
**تعداد کل میگریشن‌ها:** 37 فایل
---
## 🔴 مشکلات بحرانی
### 1. مشکل چند Head (Multiple Heads)
**وضعیت:** ⚠️ **5 head شناسایی شد** (باید فقط 1 head باشد)
#### Head های شناسایی شده:
1. **`b8c9286db6bd`** (merge_all_heads_final.py)
- تاریخ: 2025-01-15
- توضیحات: این یک میگریشن merge است که 4 head را merge می‌کند
- مشکل: بعد از این merge، دو child ایجاد شده (`20250115_000001` و `20250129_120000`) که بعداً توسط `a23683863c8a` merge شده‌اند، اما خود `b8c9286db6bd` هنوز یک head است
2. **`20250128_150000`** (add_default_price_list_to_quick_sales.py)
- تاریخ: 2025-01-28
- توضیحات: این میگریشن در merge `b8c9286db6bd` استفاده شده اما بعد از آن هیچ میگریشنی نیامده
- مشکل: این میگریشن یک head است و باید به chain اصلی متصل شود
3. **`20251223_001905`** (add_invoice_profit_calculation_settings.py)
- تاریخ: 2025-12-23
- توضیحات: این میگریشن از `4d60f85a6561` منشعب شده
- مشکل: این میگریشن یک branch موازی با `20251207_000001` ایجاد کرده که باید merge شود
- Child: `20251223_002500` → `20260101_000001` → `20260102_000001`
4. **`20251207_000001_change_activity_logs_entity_id_to_string`**
- تاریخ: 2025-12-07
- توضیحات: این میگریشن از `4d60f85a6561` منشعب شده
- مشکل: این میگریشن یک branch موازی با `20251223_001905` ایجاد کرده که باید merge شود
- Child: `20250108_000001_optimize_ticket_indexes` (با مشکل ترتیب زمانی)
5. **`20250108_000001_optimize_ticket_indexes`**
- تاریخ: 2025-01-08
- توضیحات: این میگریشن به `20251207_000001` اشاره می‌کند
- مشکل: **مشکل ترتیب زمانی** - تاریخ میگریشن (2025-01-08) قبل از parent خود (2025-12-07) است!
---
## 🟠 Branch های موازی
**وضعیت:** ⚠️ **5 branch point شناسایی شد**
### Branch Point 1: `b8c9286db6bd`
- **Parent:** `b8c9286db6bd` (merge_all_heads_final.py)
- **Children:**
- `20250115_000001` (fix_zohal_account_code.py)
- `20250129_120000` (add_inventory_valuation_method.py)
- **وضعیت:** ✅ این branch توسط `a23683863c8a` merge شده است
### Branch Point 2: `20250205_000002_seed_repair_shop_plugin`
- **Parent:** `20250205_000002_seed_repair_shop_plugin`
- **Children:**
- `20250106_000001` (create_business_notification_system.py)
- `20251206_000001_remove_phone_email_from_repair_orders`
- **وضعیت:** ✅ این branch توسط `4d60f85a6561` merge شده است
### Branch Point 3: `20250120_000001`
- **Parent:** `20250120_000001` (create_warranty_tables.py)
- **Children:**
- `20251202_000001` (add_data_type_to_product_attributes.py)
- `20250120_000002` (rename_metadata_to_extra_metadata.py)
- **وضعیت:** ✅ این branch توسط `8cb61ffb0637` merge شده است
### Branch Point 4: `4d60f85a6561` ⚠️ **مشکل**
- **Parent:** `4d60f85a6561` (merge_all_current_heads.py)
- **Children:**
- `20251223_001905` (add_invoice_profit_calculation_settings.py)
- `20251207_000001_change_activity_logs_entity_id_to_string`
- **وضعیت:** ❌ **این branch هنوز merge نشده است!**
- **راه حل:** باید یک merge migration ایجاد شود که این دو branch را یکی کند
### Branch Point 5: `20250101_000000`
- **Parent:** `20250101_000000` (init_schema)
- **Children:**
- `20240101_120000` (optimize_indexes_phase3.py)
- `483a0bf37370` (add_mobile_verified_column.py)
- **وضعیت:** ✅ این branch توسط `010e36975a45` merge شده است
---
## 🟡 مشکلات ترتیب زمانی
**وضعیت:** ⚠️ **1 میگریشن با ترتیب زمانی اشتباه**
### میگریشن مشکل‌دار:
**`20250108_000001_optimize_ticket_indexes`**
- **تاریخ میگریشن:** 2025-01-08
- **Parent:** `20251207_000001_change_activity_logs_entity_id_to_string`
- **تاریخ Parent:** 2025-12-07
- **مشکل:** میگریشن 11 ماه قبل از parent خود ایجاد شده است!
**توضیحات:**
این یک مشکل جدی است. به نظر می‌رسد که:
1. میگریشن `20250108_000001` در تاریخ 2025-01-08 ایجاد شده
2. اما `down_revision` آن به میگریشنی اشاره می‌کند که در 2025-12-07 ایجاد شده
3. این باعث می‌شود که ترتیب اجرای میگریشن‌ها اشتباه شود
**راه حل:**
- باید `down_revision` این میگریشن را به میگریشن صحیح تغییر داد
- یا اگر این میگریشن باید بعد از `20251207_000001` اجرا شود، باید تاریخ آن را تغییر داد
---
## 📊 ساختار فعلی میگریشن‌ها
### Chain اصلی (تا `4d60f85a6561`):
```
20250101_000000 (init_schema)
├── 20240101_120000 (optimize_indexes)
│ └── 20250112_000000 (workflow tables)
│ └── 9cc424e46c07 (quick sales)
│ └── 20250128_150000 (price list) ⚠️ HEAD
└── 483a0bf37370 (mobile verified)
└── b8c9286db6bd (merge) ⚠️ HEAD
├── 20250115_000001 (fix zohal)
└── 20250129_120000 (inventory valuation)
└── a23683863c8a (merge)
└── 20250205_000001 (repair shop)
└── 20250205_000002 (seed plugin)
├── 20250106_000001 (notification)
└── 20251206_000001 (remove phone/email)
└── 4d60f85a6561 (merge) ⚠️ BRANCH POINT
├── 20251207_000001 (activity logs) ⚠️ HEAD
│ └── 20250108_000001 (optimize tickets) ⚠️ HEAD (مشکل زمانی)
└── 20251223_001905 (invoice profit) ⚠️ HEAD
└── 20251223_002500 (ai voice)
└── 20260101_000001 (is_active)
└── 20260102_000001 (protect wallet) ⚠️ HEAD
```
---
## 🔧 راه حل‌های پیشنهادی
### اولویت 1: رفع مشکل Branch موازی از `4d60f85a6561`
**مشکل:** دو branch از `4d60f85a6561` منشعب شده‌اند:
- Branch 1: `20251207_000001` → `20250108_000001`
- Branch 2: `20251223_001905` → `20251223_002500` → `20260101_000001` → `20260102_000001`
**راه حل:**
1. ایجاد یک merge migration که این دو branch را یکی کند
2. Merge migration باید به این صورت باشد:
```python
revision = 'merge_after_4d60f85a6561'
down_revision = ('20250108_000001_optimize_ticket_indexes', '20260102_000001')
```
### اولویت 2: رفع مشکل ترتیب زمانی `20250108_000001`
**مشکل:** میگریشن `20250108_000001` به میگریشنی اشاره می‌کند که بعد از آن ایجاد شده
**راه حل:**
1. بررسی کنید که این میگریشن باید به کدام میگریشن اشاره کند
2. اگر باید بعد از `20251207_000001` اجرا شود، تاریخ آن را تغییر دهید
3. یا `down_revision` را به میگریشن صحیح تغییر دهید
### اولویت 3: اتصال Head های جدا شده
**مشکل:** `b8c9286db6bd` و `20250128_150000` هنوز head هستند
**راه حل:**
1. بررسی کنید که آیا این میگریشن‌ها باید به chain اصلی متصل شوند
2. اگر باید متصل شوند، میگریشن‌های بعدی باید به آن‌ها اشاره کنند
---
## ✅ میگریشن‌های Merge موجود
1. **`a23683863c8a`** - merge multiple heads before repair shop
- Parents: `20250203_000001`, `20250115_000001`, `20250129_120000`
- ✅ به درستی merge شده
2. **`4d60f85a6561`** - merge all current heads
- Parents: `20250106_000001`, `20251204_000001`, `20251205_000001`, `20251206_000001_remove_phone_email_from_repair_orders`
- ⚠️ بعد از این merge، دو branch جدید ایجاد شده که باید merge شوند
3. **`8cb61ffb0637`** - merge warranty and product attributes
- Parents: `20250120_000002`, `20251202_000001`
- ✅ به درستی merge شده
4. **`010e36975a45`** - merge inventory valuation method
- Parents: `20240101_120000`, `483a0bf37370`
- ✅ به درستی merge شده
5. **`b8c9286db6bd`** - merge all heads final
- Parents: `20250112_000000`, `9cc424e46c07`, `20250128_150000`, `483a0bf37370`
- ⚠️ بعد از این merge، دو child ایجاد شده که بعداً merge شده‌اند، اما خود این میگریشن هنوز head است
---
## 📝 خلاصه مشکلات
| مشکل | تعداد | اولویت | وضعیت |
|------|-------|--------|-------|
| Multiple Heads | 5 | 🔴 بحرانی | نیاز به رفع |
| Branch های موازی | 1 (merge نشده) | 🔴 بحرانی | نیاز به رفع |
| ترتیب زمانی اشتباه | 1 | 🔴 بحرانی | نیاز به رفع |
---
## 🎯 توصیه‌های نهایی
1. **قبل از deploy:** حتماً یک merge migration برای branch های `4d60f85a6561` ایجاد کنید
2. **رفع مشکل زمانی:** مشکل `20250108_000001` را رفع کنید
3. **بررسی Head ها:** بررسی کنید که آیا `b8c9286db6bd` و `20250128_150000` باید head باشند یا نه
4. **تست:** بعد از رفع مشکلات، حتماً میگریشن‌ها را در محیط test تست کنید
---
**تهیه شده توسط:** AI Assistant
**تاریخ:** 2026-01-02