docs: update PACKAGE-MIGRATION-GUIDE — Q24-Q30 all done, F8-F11 completed

- Mark Q24, Q26, Q27, Q28 as  with commit refs
- Mark F8-F11 as completed (were marked as future/pending)
- Add 3 new CMS commits (a1024a3, fdbb91d, 10d2ca2)
- Add FO commit (474d364) and BO commit (6939780)
- Add Migration step 2.5b: Q27_HistoryTables_And_RenameWalletHistory
- Update stats: 48 commits, 227+ files, 30 business decisions
- Update CMS commit table header to 20 commits
This commit is contained in:
masoodafar-web
2026-02-27 06:50:07 +03:30
parent e9f1fb9911
commit 6fc15b474e
+41 -27
View File
@@ -1,10 +1,10 @@
# 📦 راهنمای مهاجرت سیستم پکیج‌بیس — خلاصه تغییرات و پلن استقرار # 📦 راهنمای مهاجرت سیستم پکیج‌بیس — خلاصه تغییرات و پلن استقرار
> **وضعیت:** آماده تست و استقرار > **وضعیت:** آماده تست و استقرار — **Q1-Q30 تکمیل‌شده ✅**
> **تاریخ:** ۸ اسفند ۱۴۰۴ (27 Feb 2026) > **تاریخ:** ۸ اسفند ۱۴۰۴ (27 Feb 2026) — آپدیت ۹ اسفند
> **نسخه NuGet:** v0.0.188 > **نسخه NuGet:** v0.0.188
> **تعداد کامیت‌ها:** ۴۳ کامیت در ۴ ریپازیتوری (+ ۴ کامیت مرتبط) > **تعداد کامیت‌ها:** ۴۸ کامیت در ۴ ریپازیتوری (۲۰ CMS + ۸ FO + ۶ BO + ۱۴ docs)
> **مدت پیاده‌سازی:** ۴ روز (۲۴–۲۷ فوریه ۲۰۲۶) > **مدت پیاده‌سازی:** ۵ روز (۲۴–۲۸ فوریه ۲۰۲۶)
> **ریپوها:** CMS (`gitea`/`kub-stage`) · FrontOffice (`kub-stage`) · BackOffice (`kub-stage`) · totalDoc (`foursatDocs`/`main`) > **ریپوها:** CMS (`gitea`/`kub-stage`) · FrontOffice (`kub-stage`) · BackOffice (`kub-stage`) · totalDoc (`foursatDocs`/`main`)
--- ---
@@ -43,14 +43,16 @@
| شاخص | مقدار | | شاخص | مقدار |
|-------|-------| |-------|-------|
| فایل‌های تغییریافته | **۱۴۱ فایل** | | فایل‌های تغییریافته | **۲۲۷+ فایل** |
| خطوط اضافه‌شده | **+۱۰,۸۳۵** | | خطوط اضافه‌شده | **+۱۷,۰۰۰+** |
| خطوط حذف‌شده | **−۲,۱۹۴** | | خطوط حذف‌شده | **−۲,۶۶۰+** |
| تصمیمات بیزینسی پیاده‌شده | **۲۳ تصمیم** (Q1Q23) | | تصمیمات بیزینسی پیاده‌شده | **۳۰ تصمیم** (Q1Q30) |
| باگ‌های فیکس‌شده | **۶ باگ بحرانی** | | باگ‌های فیکس‌شده | **۶ باگ بحرانی** |
| مقادیر hardcoded حذف‌شده | **۱۵+ مورد** | | مقادیر hardcoded حذف‌شده | **۱۵+ مورد** |
| Handlerهای deprecated حذف‌شده | **۴ handler** (۱۲ فایل) | | Handlerهای deprecated حذف‌شده | **۴ handler** (۱۲ فایل) |
| RPCهای deprecated حذف‌شده | **۴ RPC** + ۸ message type | | RPCهای deprecated حذف‌شده | **۴ RPC** + ۸ message type |
| فایل‌های rename شده | **۳۴ فایل** + ۱۱ دایرکتوری (UserWalletChangeLog → UserWalletHistory) |
| History Tables جدید | **۳ جدول** (PackageHistories, ClubMembershipCycleHistories, UserWalletHistories) |
--- ---
@@ -197,16 +199,16 @@
| ریپو | کامیت | فایل | اضافه | حذف | شرح اصلی | | ریپو | کامیت | فایل | اضافه | حذف | شرح اصلی |
|-------|-------|------|-------|-----|-----------| |-------|-------|------|-------|-----|-----------|
| **CMS** | ۱۷ | ۹۳ | +۷,۳۳۱ | −۱,۸۵۵ | Domain + Business Logic + Commission + Proto + Cleanup | | **CMS** | ۲۰ | ۱۷۹+ | +۱۳,۵۸۶ | −۲,۳۲۷ | Domain + Business + Commission + Proto + History + Rename + Interceptor |
| **FrontOffice** | ۸ | ۲۲ | +۴۷۵ | −۱۳۶ | Dynamic UI + Customer RPCs + Per-package Reports | | **FrontOffice** | ۸ | ۲۹ | +۵۵۰ | −۱۳۶ | Dynamic UI + Customer RPCs + Per-package Reports + UI Guidance |
| **BackOffice** | ۶ | ۱۸ | +۴۹۷ | −۳۱ | Package CRUD + Feature Matrix + Per-package Reports | | **BackOffice** | ۶ | ۲۴ | +۵۸۰ | −۳۱ | Package CRUD + Feature Matrix + Per-package Reports + UI Guidance |
| **totalDoc** | ۱۲ | ۸ | +۲,۵۳۲ | −۱۷۲ | مستندات بیزینسی + تکنیکال | | **totalDoc** | ۱۴ | ۱۳ | +۲,۷۰۰ | −۱۹۴ | مستندات بیزینسی + تکنیکال + Phase 9 |
--- ---
## 4. جزئیات تغییرات هر ریپو ## 4. جزئیات تغییرات هر ریپو
### 4.1 CMS — ۱۷ کامیت ### 4.1 CMS — ۲۰ کامیت
| فاز | کامیت | شرح | | فاز | کامیت | شرح |
|-----|--------|------| |-----|--------|------|
@@ -228,6 +230,9 @@
| **Phase 8e** | `aaaf7fc` | Per-package filtering در Commission queries | | **Phase 8e** | `aaaf7fc` | Per-package filtering در Commission queries |
| **Phase 8f** | `dcd1135` | PackageFeature CRUD support | | **Phase 8f** | `dcd1135` | PackageFeature CRUD support |
| **Audit** | `1ac2366` | Compliance audit — Feature DIFF + حذف fallbackهای hardcoded | | **Audit** | `1ac2366` | Compliance audit — Feature DIFF + حذف fallbackهای hardcoded |
| **Phase 9a** | `a1024a3` | Q24: آستانه موجودی `≤1M` ریال + Q26: SP Worker auto-deploy (IHostedService + checksum) |
| **Phase 9b** | `fdbb91d` | Q27: PackageHistory + ClubMembershipCycleHistory entities + enums + EF configs |
| **Phase 9d** | `10d2ca2` | Rename UserWalletChangeLog→UserWalletHistory (86 فایل) + IHasHistory + Interceptor + Migration |
### 4.2 FrontOffice — ۸ کامیت ### 4.2 FrontOffice — ۸ کامیت
@@ -241,6 +246,7 @@
| **Phase 8e** | `a956cb9` | Per-package filtering در Commission pages | | **Phase 8e** | `a956cb9` | Per-package filtering در Commission pages |
| **Phase 8f** | `3bffc13` | T4.2+T4.3+F3: پرداخت شرطی + خرید مجدد + PV | | **Phase 8f** | `3bffc13` | T4.2+T4.3+F3: پرداخت شرطی + خرید مجدد + PV |
| **Audit** | `816dcb7` | حذف ۵۶M hardcoded — قیمت‌گذاری داینامیک | | **Audit** | `816dcb7` | حذف ۵۶M hardcoded — قیمت‌گذاری داینامیک |
| **Phase 9c** | `474d364` | Q28: UI Guidance alerts (G1-G7) — ۷ صفحه MudAlert آموزشی |
### 4.3 BackOffice — ۶ کامیت ### 4.3 BackOffice — ۶ کامیت
@@ -252,6 +258,7 @@
| **Phase 8e** | `8be98ae` | Per-package commission filtering + PackageSelect component | | **Phase 8e** | `8be98ae` | Per-package commission filtering + PackageSelect component |
| **Phase 8f** | `e020354` | ChangeParentDialog + PackageFeature checkbox matrix | | **Phase 8f** | `e020354` | ChangeParentDialog + PackageFeature checkbox matrix |
| **Audit** | `e6cf90e` | ManualPaymentDialog — حذف ۵۶M + Amount editable | | **Audit** | `e6cf90e` | ManualPaymentDialog — حذف ۵۶M + Amount editable |
| **Phase 9c** | `6939780` | Q28: UI Guidance alerts (G8-G13) — ۶ صفحه MudAlert |
--- ---
@@ -390,6 +397,14 @@
2.5 Seed پکیج نقره‌ای (اگر توسط EF Seed انجام نشده) 2.5 Seed پکیج نقره‌ای (اگر توسط EF Seed انجام نشده)
└── INSERT پکیج نقره‌ای + PackageFeatures └── INSERT پکیج نقره‌ای + PackageFeatures
2.5b اجرای Migration دوم: Q27_HistoryTables_And_RenameWalletHistory
└── این migration شامل:
• RenameTable: UserWalletChangeLogs → UserWalletHistories (حفظ داده‌ها!)
• RenameIndex × 2 + sp_rename PK + FK × 2
• CreateTable: PackageHistories (فیلدهای Old*/New*)
• CreateTable: ClubMembershipCycleHistories (فیلدهای Old*/New*)
⚠️ داده‌های قبلی UserWalletChangeLogs حفظ می‌شوند (RenameTable نه DropTable)
2.6 Deploy CMS به Kubernetes 2.6 Deploy CMS به Kubernetes
└── kubectl set image deployment/cms cms=cms:package-based └── kubectl set image deployment/cms cms=cms:package-based
└── kubectl rollout status deployment/cms └── kubectl rollout status deployment/cms
@@ -629,13 +644,12 @@ kubectl set image deployment/backoffice bo=bo:rollback-point
| F5 | SystemConfiguration per-package | 🟡 | تنظیمات global vs per-package | | F5 | SystemConfiguration per-package | 🟡 | تنظیمات global vs per-package |
| F6 | MagicWalletChargePage hardcoded | 🟡 | ×۲.۵ و سقف در ۶ جا FO | | F6 | MagicWalletChargePage hardcoded | 🟡 | ×۲.۵ و سقف در ۶ جا FO |
| F7 | Validators async per-package | 🟢 | سقف 1B → مقدار واقعی | | F7 | Validators async per-package | 🟢 | سقف 1B → مقدار واقعی |
| F8 | آستانه موجودی ورود به Magic (Q24) | 🔴 | `Balance == 0` `Balance <= 1M ریال` | | ~~F8~~ | ~~آستانه موجودی ورود به Magic (Q24)~~ | ✅ انجام‌شده | CMS:`a1024a3` `Balance <= 1_000_000` |
| F9 | SP Worker — مدیریت خودکار SP (Q26) | 🔴 | IHostedService + checksum + auto-deploy | | ~~F9~~ | ~~SP Worker — مدیریت خودکار SP (Q26)~~ | ✅ انجام‌شده | CMS:`a1024a3``StoredProcedureDeploymentService` |
| F10 | History Tables — یکسان‌سازی + خودکار (Q27) | 🟡 | نام‌گذاری + IHasHistory + interceptor | | ~~F10~~ | ~~History Tables — یکسان‌سازی + خودکار (Q27)~~ | ✅ انجام‌شده | CMS:`fdbb91d`+`10d2ca2` IHasHistory + Interceptor + RenameTable migration |
| F11 | UI Guidance — آموزش و هشدار (Q28) | 🟡 | مودال + متن inline در FO/BO | | ~~F11~~ | ~~UI Guidance — آموزش و هشدار (Q28)~~ | ✅ انجام‌شده | FO:`474d364` BO:`6939780` — ۱۳ صفحه MudAlert |
> **F8 و F9 ریسک عملیاتی دارند** و باید قبل از production پیاده شوند. > **F8-F11 همه پیاده‌سازی شدند.** سایر موارد (F1-F7) با fallback فعلی مشکلی ندارند و می‌توانند در فاز بعدی انجام شوند.
> **F10 و F11** می‌توانند در فاز بعدی انجام شوند. سایر موارد (F1-F7) با fallback فعلی مشکلی ندارند.
--- ---
@@ -669,18 +683,18 @@ kubectl set image deployment/backoffice bo=bo:rollback-point
| Q22 | تشخیص هفته از LastActivationDate | ✅ `607f791` | | Q22 | تشخیص هفته از LastActivationDate | ✅ `607f791` |
| Q23 | Carryover strictly per-package | ✅ `607f791` | | Q23 | Carryover strictly per-package | ✅ `607f791` |
### تصمیمات جدید v6 (Q24Q30) — در انتظار پیاده‌سازی: ### تصمیمات v6 (Q24Q30) — ✅ تکمیل‌شده:
| # | تصمیم | وضعیت | اولویت | | # | تصمیم | وضعیت | کامیت |
|---|-------|-------|--------| |---|-------|-------|-------|
| Q24 | آستانه موجودی ≤ ۱۰۰,۰۰۰ تومان (ورود Magic + خرید مجدد) | | 🔴 P0 | | Q24 | آستانه موجودی ≤ ۱,۰۰۰,۰۰۰ ریال (ورود Magic + خرید مجدد) | | CMS:`a1024a3` |
| Q25 | DayaLoans فقط پکیج پایه — تایید (بدون تغییر کد) | ✅ تایید | — | | Q25 | DayaLoans فقط پکیج پایه — تایید (بدون تغییر کد) | ✅ تایید | — |
| Q26 | SP Worker — auto-deploy با checksum | | 🔴 P0 | | Q26 | SP Worker — auto-deploy با checksum (IHostedService) | | CMS:`a1024a3` |
| Q27 | History Tables — نام‌گذاری یکسان + IHasHistory + interceptor | ⬜ | 🟡 P1 | | Q27 | History Tables — PackageHistory + CycleHistory + IHasHistory + Interceptor + Rename UserWalletChangeLog→UserWalletHistory | ✅ | CMS:`fdbb91d`+`10d2ca2` |
| Q28 | UI Guidance — مودال + متن آموزشی/هشداری در FO/BO | | 🟡 P1 | | Q28 | UI Guidance — ۱۳ صفحه MudAlert آموزشی/هشداری در FO/BO | | FO:`474d364` BO:`6939780` |
| Q29 | شرط EXIT Magic — تایید: آخرین پکیج فعال (بدون تغییر کد) | ✅ تایید | — | | Q29 | شرط EXIT Magic — تایید: آخرین پکیج فعال (بدون تغییر کد) | ✅ تایید | — |
| Q30 | Carryover — تایید: توضیح مستند شد (بدون تغییر کد) | ✅ تایید | — | | Q30 | Carryover — تایید: توضیح مستند شد (بدون تغییر کد) | ✅ تایید | — |
--- ---
*آخرین بروزرسانی: ۸ اسفند ۱۴۰۴ — v6: Q24-Q30 اضافه شد (آستانه موجودی + SP Worker + History + UI Guidance)* *آخرین بروزرسانی: ۹ اسفند ۱۴۰۴ — v6.1: Q24-Q30 همه تکمیل‌شده ✅ | ۴۸ کامیت (۲۰ CMS + ۸ FO + ۶ BO + ۱۴ docs) | History Interceptor + Rename + Migration اضافه شد*