# 📋 لیست کامل جداول و Mapping ها ## تعداد کل: 33 جدول ### جداول با تغییر نام (10 جدول) این جداول در دیتابیس قدیمی نام‌گذاری اشتباه دارند و در دیتابیس جدید اصلاح می‌شوند: | # | نام قدیمی (Source) | نام جدید (Target) | دلیل تغییر | |---|-------------------|-------------------|-----------| | 1 | `Categorys` | `Categories` | جمع صحیح Category | | 2 | `FactorDetailss` | `FactorDetails` | Detail تکی نیست، s اضافی | | 3 | `ProductGalleryss` | `ProductGalleries` | Gallery → Galleries، s اضافی | | 4 | `ProductImagess` | `ProductImages` | Image → Images، s اضافی | | 5 | `Productss` | `Products` | s اضافی | | 6 | `PruductCategorys` | `ProductCategories` | Pruduct → Product + جمع صحیح | | 7 | `PruductTags` | `ProductTags` | Pruduct → Product | | 8 | `Transactionss` | `Transactions` | s اضافی | | 9 | `UserAddresss` | `UserAddresses` | Address → Addresses، s اضافی | | 10 | `UserCartss` | `UserCarts` | s اضافی | --- ### جداول بدون تغییر نام (23 جدول) این جداول نام‌گذاری صحیحی دارند: | # | نام جدول | |---|----------| | 1 | `ClubFeatures` | | 2 | `ClubMembershipHistories` | | 3 | `ClubMemberships` | | 4 | `CommissionPayoutHistories` | | 5 | `Contracts` | | 6 | `NetworkMembershipHistories` | | 7 | `NetworkWeeklyBalances` | | 8 | `OtpTokens` | | 9 | `Packages` | | 10 | `Roles` | | 11 | `SystemConfigurationHistories` | | 12 | `SystemConfigurations` | | 13 | `Tags` | | 14 | `UserClubFeatures` | | 15 | `UserCommissionPayouts` | | 16 | `UserContracts` | | 17 | `UserOrders` | | 18 | `UserRoles` | | 19 | `Users` | | 20 | `UserWalletChangeLogs` | | 21 | `UserWallets` | | 22 | `WeeklyCommissionPools` | | 23 | `WorkerExecutionLogs` | --- ## ترتیب پیشنهادی برای Migration ### مرحله 1: جداول پایه (Independent Tables) بدون FK، می‌توانند اول migrate شوند: 1. `Roles` 2. `Tags` 3. `SystemConfigurations` 4. `ClubFeatures` 5. `Packages` ### مرحله 2: جداول کاربری FK به Users: 6. `Users` ⚠️ **مهم**: پس از migration → Post-Migration Transformation 7. `OtpTokens` 8. `UserRoles` 9. `UserWallets` 10. `UserWalletChangeLogs` 11. `UserAddresses` 12. `UserCarts` ### مرحله 3: جداول محصولات FK به Categories و Products: 13. `Categories` 14. `Products` 15. `ProductImages` 16. `ProductGalleries` 17. `ProductCategories` 18. `ProductTags` ### مرحله 4: جداول عضویت و کمیسیون 19. `ClubMemberships` 20. `ClubMembershipHistories` 21. `NetworkWeeklyBalances` 22. `NetworkMembershipHistories` 23. `CommissionPayoutHistories` 24. `UserCommissionPayouts` 25. `WeeklyCommissionPools` ### مرحله 5: جداول قراردادها و تراکنش‌ها 26. `Contracts` 27. `UserContracts` 28. `Transactions` 29. `FactorDetails` ### مرحله 6: جداول کاربری پیشرفته 30. `UserOrders` 31. `UserClubFeatures` ### مرحله 7: جداول سیستمی 32. `SystemConfigurationHistories` 33. `WorkerExecutionLogs` --- ## تغییرات ساختاری مهم ### 1. Users Table **تبدیل Binary Tree:** - **قدیمی**: `ParentId` (یک Parent ساده) - **جدید**: `NetworkParentId` + `LegPosition` (Binary Tree) **Post-Migration Script:** ```sql -- Script: Scripts/PostMigration_DataTransformation.sql -- اجرا: خودکار بعد از migration (اگر RunPostMigrationTransformation=true) ``` **چه کاری انجام می‌دهد:** 1. ✅ بررسی: آیا Parent ها بیشتر از 2 فرزند دارند؟ (ROLLBACK اگر دارند) 2. ✅ کپی: `ParentId` → `NetworkParentId` 3. ✅ تخصیص: `LegPosition` (فرزند اول=Left, فرزند دوم=Right) 4. ✅ حل Orphan ها: Parent نداشته → `NetworkParentId=NULL` 5. ✅ Validation نهایی: Binary Tree درست است؟ 6. ✅ آمار: تعداد کل، Left/Right distribution --- ## Configuration در appsettings.json ```json { "TableMappings": { "Categorys": "Categories", "ClubFeatures": "ClubFeatures", "ClubMembershipHistories": "ClubMembershipHistories", "ClubMemberships": "ClubMemberships", "CommissionPayoutHistories": "CommissionPayoutHistories", "Contracts": "Contracts", "FactorDetailss": "FactorDetails", "NetworkMembershipHistories": "NetworkMembershipHistories", "NetworkWeeklyBalances": "NetworkWeeklyBalances", "OtpTokens": "OtpTokens", "Packages": "Packages", "ProductGalleryss": "ProductGalleries", "ProductImagess": "ProductImages", "Productss": "Products", "PruductCategorys": "ProductCategories", "PruductTags": "ProductTags", "Roles": "Roles", "SystemConfigurationHistories": "SystemConfigurationHistories", "SystemConfigurations": "SystemConfigurations", "Tags": "Tags", "Transactionss": "Transactions", "UserAddresss": "UserAddresses", "UserCartss": "UserCarts", "UserClubFeatures": "UserClubFeatures", "UserCommissionPayouts": "UserCommissionPayouts", "UserContracts": "UserContracts", "UserOrders": "UserOrders", "UserRoles": "UserRoles", "Users": "Users", "UserWalletChangeLogs": "UserWalletChangeLogs", "UserWallets": "UserWallets", "WeeklyCommissionPools": "WeeklyCommissionPools", "WorkerExecutionLogs": "WorkerExecutionLogs" } } ``` --- ## چک‌لیست قبل از Migration ### 1. ساختار Target Database - [ ] همه 33 جدول در Target ایجاد شده‌اند - [ ] Schema صحیح است: `[CMS].[TableName]` - [ ] Column ها مطابقت دارند - [ ] `Users` دارای `NetworkParentId` و `LegPosition` است ### 2. Connection Strings - [ ] `SourceDatabase`: IP, Port, Username, Password صحیح - [ ] `TargetDatabase`: IP, Port, Username, Password صحیح - [ ] Firewall: IP شما مجاز است - [ ] SQL User دسترسی `db_datareader` (Source) دارد - [ ] SQL User دسترسی `db_datawriter` (Target) دارد ### 3. تنظیمات Migration - [ ] `BatchSize`: مناسب با Network شما - [ ] `MaxConcurrentTables`: 3 (پیشنهادی) - [ ] `RunPostMigrationTransformation`: true - [ ] `TableMappings`: همه 33 جدول لیست شده ### 4. Backup - [ ] ⚠️ **حتماً** Target Database را Backup بگیرید - [ ] فضای کافی روی Disk دارید --- ## آمار تخمینی بر اساس backup file (`dbbkup/CMS.sql`): | دسته | تعداد جداول | تخمین رکوردها | |------|------------|---------------| | **Core** (Users, Roles, etc.) | 5 | ~2,000 | | **Products** (Categories, Products, etc.) | 8 | ~5,000 | | **Club & Network** | 7 | ~10,000 | | **Transactions & Orders** | 6 | ~20,000 | | **System & Logs** | 7 | ~15,000 | | **جمع کل** | **33** | **~50,000+** | **زمان تخمینی:** 5-10 دقیقه (بسته به Network) --- **نسخه:** 1.0 **تاریخ:** December 6, 2025 **وضعیت:** ✅ آماده برای Production