# 📚 FourSat Data Migration Tool - Index ## نگاه اجمالی این پروژه یک ابزار **یکبار مصرف** برای مهاجرت داده‌های دیتابیس از ساختار قدیمی به جدید است. **تعداد کل جداول:** 33 **زمان تخمینی:** 5-10 دقیقه **وضعیت:** ✅ آماده برای Production --- ## 📁 ساختار پروژه ``` DataMigration/ │ ├── 📖 مستندات (5 فایل) │ ├── SUMMARY.md ⭐ شروع از اینجا │ ├── QUICK-START.md 🚀 راهنمای سریع (3 قدم) │ ├── README.md 📖 راهنمای کامل │ ├── TABLE-MAPPINGS.md 📋 لیست 33 جدول │ └── POST-MIGRATION-TRANSFORMATION.md 🔄 Binary tree transformation │ └── 💻 کد (FourSat.DataMigration/) ├── Program.cs # Entry point ├── appsettings.json # 33 table mappings ✅ ├── Models/ │ └── MigrationModels.cs # Settings, Mapping, QueueItem ├── Services/ │ └── MigrationService.cs # Migration + Post-Migration logic └── Scripts/ └── PostMigration_DataTransformation.sql # Binary tree conversion ``` --- ## 🎯 راهنمای سریع ### برای کاربران عجول (3 دقیقه): 👉 **[QUICK-START.md](QUICK-START.md)** - 3 قدم ساده ### برای خواندن کامل (10 دقیقه): 👉 **[SUMMARY.md](SUMMARY.md)** - خلاصه کامل پروژه ### برای جزئیات کامل (30 دقیقه): 👉 **[README.md](README.md)** - راهنمای جامع --- ## 📋 مستندات ### 1. [SUMMARY.md](SUMMARY.md) ⭐ **شروع از اینجا** **307 خط** - خلاصه کامل پروژه - ✅ وضعیت فعلی - ✅ آنچه انجام شد - ✅ ساختار پروژه - ✅ فیچرهای پیاده‌سازی شده - ✅ نحوه استفاده (3 قدم) - ✅ خروجی مورد انتظار - ✅ چک‌لیست آمادگی - ✅ آمار نهایی **زمان مطالعه:** 5-10 دقیقه **مخاطب:** همه --- ### 2. [QUICK-START.md](QUICK-START.md) 🚀 **147 خط** - راهنمای سریع 3 قدمی - قدم 1: ویرایش appsettings.json - قدم 2: اجرای Migration - قدم 3: بررسی Logs - عیب‌یابی سریع - تنظیمات پیشرفته **زمان مطالعه:** 3 دقیقه **مخاطب:** کسانی که می‌خواهند سریع شروع کنند --- ### 3. [README.md](README.md) 📖 **425 خط** - راهنمای کامل و جامع - نگاه کلی - ساختار پروژه - تنظیمات (`appsettings.json`) - نحوه اجرا - جریان کار (Workflow) - Retry Logic - Error Handling - مثال خروجی - عیب‌یابی - FAQ **زمان مطالعه:** 15-20 دقیقه **مخاطب:** Developers، DevOps --- ### 4. [TABLE-MAPPINGS.md](TABLE-MAPPINGS.md) 📋 **230 خط** - لیست کامل 33 جدول - جداول با تغییر نام (10 جدول) - جداول بدون تغییر نام (23 جدول) - ترتیب پیشنهادی Migration - تغییرات ساختاری (Binary Tree) - Configuration کامل - چک‌لیست قبل از Migration - آمار تخمینی **زمان مطالعه:** 10 دقیقه **مخاطب:** Database Admins، Developers --- ### 5. [POST-MIGRATION-TRANSFORMATION.md](POST-MIGRATION-TRANSFORMATION.md) 🔄 **248 خط** - توضیح تبدیل Binary Tree - تغییرات اعمال شده - جریان کار (بروزرسانی شده) - تنظیمات جدید - خروجی Migration (قبل/بعد) - Validation Checks - خطاها و عیب‌یابی - غیرفعال کردن Transformation - آمار نهایی - تغییرات کد **زمان مطالعه:** 10 دقیقه **مخاطب:** Developers که می‌خواهند Binary Tree را درک کنند --- ## 💻 فایل‌های کد ### 1. `FourSat.DataMigration/Program.cs` **48 خط** - Entry point با Serilog hosting ```csharp // Setup Serilog // Configure DI // Run MigrationService ``` --- ### 2. `FourSat.DataMigration/appsettings.json` **75 خط** - تنظیمات کامل ```json { "ConnectionStrings": { /* Source + Target */ }, "MigrationSettings": { /* BatchSize, Retry, etc. */ }, "TableMappings": { /* 33 table mappings */ }, "Serilog": { /* Console + File */ } } ``` --- ### 3. `FourSat.DataMigration/Models/MigrationModels.cs` **39 خط** - Data models ```csharp public class MigrationSettings { ... } public class TableMapping { ... } public class QueueItem { ... } ``` --- ### 4. `FourSat.DataMigration/Services/MigrationService.cs` **288 خط** - Migration engine اصلی ```csharp // GetSourceTablesAsync: کشف جداول // ApplyTableMappings: نگاشت نام‌ها // PopulateRecordCountsAsync: شمارش رکوردها // MigrateTableAsync: Batch processing // RunPostMigrationTransformationAsync: Binary tree conversion ``` **فیچرها:** - ✅ Queue-based processing - ✅ Concurrent tables (3 همزمان) - ✅ Retry with Polly (5 attempts) - ✅ Batch processing (1000 records) - ✅ IDENTITY_INSERT handling - ✅ Progress tracking - ✅ Post-migration transformation --- ### 5. `FourSat.DataMigration/Scripts/PostMigration_DataTransformation.sql` **175 خط** - Binary tree transformation ```sql -- Step 1: Validate (max 2 children) -- Step 2: Copy ParentId → NetworkParentId -- Step 3: Assign LegPosition (Left/Right) -- Step 4: Fix orphaned nodes -- Step 5: Validate binary tree integrity -- Step 6: Output statistics ``` **Transaction-safe:** ROLLBACK در صورت validation failure --- ## 📊 آمار پروژه | مورد | تعداد/مقدار | |------|-------------| | **کل فایل‌های مستندات** | 5 (md) | | **کل فایل‌های کد** | 5 (cs, json, sql, csproj) | | **خطوط مستندات** | ~1,600 | | **خطوط کد** | ~625 | | **تعداد جداول** | 33 | | **جداول با Rename** | 10 | | **NuGet Packages** | 8 | | **Build Status** | ✅ موفق | | **خطا** | 0 | | **هشدار** | 0 | --- ## 🔄 جریان کار Migration ``` 1. ویرایش appsettings.json ↓ 2. dotnet run ↓ 3. کشف 33 جدول از Source ↓ 4. Apply mappings (10 rename + 23 keep) ↓ 5. Migrate با Batch + Retry ├─ 3 table همزمان ├─ 1000 record per batch └─ 5 retry attempts ↓ 6. Post-Migration Transformation ├─ ParentId → NetworkParentId ├─ LegPosition assignment └─ Binary tree validation ↓ 7. گزارش نهایی + Statistics ``` --- ## ✅ چک‌لیست استفاده ### قبل از شروع - [ ] مطالعه [SUMMARY.md](SUMMARY.md) - [ ] مطالعه [QUICK-START.md](QUICK-START.md) - [ ] Backup از Target database ### تنظیمات - [ ] ویرایش `SourceDatabase` connection string - [ ] ویرایش `TargetDatabase` connection string - [ ] بررسی `TableMappings` (33 جدول) - [ ] تست اتصال به هر دو database ### اجرا - [ ] `dotnet build` (بدون خطا) - [ ] `dotnet run` - [ ] مشاهده progress در console - [ ] بررسی Logs در `Logs/migration-*.txt` ### بعد از Migration - [ ] بررسی تعداد رکوردها (Source = Target) - [ ] بررسی Binary tree integrity - [ ] تست Application با database جدید - [ ] Archive کردن Source database قدیمی --- ## 🆘 پشتیبانی ### خطاهای رایج - **Login failed**: [README.md - Error Handling](README.md#error-handling) - **Table not found**: [TABLE-MAPPINGS.md](TABLE-MAPPINGS.md) - **Binary tree violation**: [POST-MIGRATION-TRANSFORMATION.md](POST-MIGRATION-TRANSFORMATION.md) - **Timeout**: [QUICK-START.md - عیب‌یابی](QUICK-START.md#عیب-یابی-سریع) ### منابع - 📖 **راهنمای کامل**: [README.md](README.md) - 🚀 **شروع سریع**: [QUICK-START.md](QUICK-START.md) - 📋 **لیست جداول**: [TABLE-MAPPINGS.md](TABLE-MAPPINGS.md) --- ## 🎉 وضعیت نهایی | مورد | وضعیت | |------|-------| | **کد** | ✅ کامل | | **مستندات** | ✅ کامل | | **Build** | ✅ موفق | | **Table Mappings** | ✅ 33/33 | | **Post-Migration** | ✅ پیاده‌سازی شده | | **Logging** | ✅ فعال | | **Retry** | ✅ پیاده‌سازی شده | | **Error Handling** | ✅ کامل | --- **نسخه:** 1.0 **تاریخ:** December 6, 2025 **آماده برای:** Production ✅ **نیاز به:** Username/Password در appsettings.json --- ## 🚀 مرحله بعدی **همین الان:** 1. [QUICK-START.md](QUICK-START.md) را بخوانید (3 دقیقه) 2. `appsettings.json` را ویرایش کنید (2 دقیقه) 3. `dotnet run` را اجرا کنید **تمام! 🎉**