diff --git a/docs/ADMIN-SERVICES.md b/docs/ADMIN-SERVICES.md new file mode 100644 index 0000000..bad2c63 --- /dev/null +++ b/docs/ADMIN-SERVICES.md @@ -0,0 +1,387 @@ +# سرویس‌های BackOffice (پنل ادمین) + +این سند تمام سرویس‌هایی را که **BackOffice** (فرانت ادمین) به **CMS** از طریق gRPC Gateway (`GwUrl`) فراخوانی می‌کند، به ترتیب **Use Case** فهرست می‌کند. + +- **مسیر wrapper سرویس‌ها:** `BackOffice/src/BackOffice/Services/` +- **ثبت gRPC:** `BackOffice/src/BackOffice/Common/Configure/ConfigureService.cs` +- **تاریخ:** ۱۴۰۵/۰۳/۱۷ + +--- + +## ۱. ورود و احراز هویت ادمین + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 1.1 | `OtpTokenContract.CreateNewOtpToken` | `OtpTokenContract` | `/Login/` (`LoginPage`) | ارسال OTP ورود ادمین | +| 1.2 | `UserContract.VerifyOtpToken` | `UserContract` | `/VerifyCodePage/{Mobile}` | تأیید OTP و دریافت JWT | +| 1.3 | `OtpTokenContract.CreateNewOtpToken` (resend) | `OtpTokenContract` | `/VerifyCodePage/{Mobile}` | ارسال مجدد OTP | +| 1.4 | `AuthorizationService.HasPermissionAsync` | — (JWT Role/Claim) | `NavMenu`, صفحات محافظت‌شده | کنترل نمایش منو بر اساس نقش (فعلاً role-based، نه API) | +| 1.5 | `AppTokenProvider` / `TokenHandler` | — (localStorage) | سراسری | attach کردن Bearer token به همه gRPC callها | + +--- + +## ۲. داشبورد + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 2.1 | `UserContract.GetAllUserByFilter` | `UserContract` | `/` (Index) | شمارش کاربران | +| 2.2 | `ProductsContract.GetAllProductsByFilter` | `ProductsContract` | `/` | شمارش محصولات | +| 2.3 | `PackageContract.GetAllPackageByFilter` | `PackageContract` | `/` | شمارش پکیج‌ها | +| 2.4 | `CategoryContract.GetAllCategoryByFilter` | `CategoryContract` | `/` | شمارش دسته‌بندی‌ها | +| 2.5 | `CommissionContract.GetAvailableWeeks` | `CommissionContract` | `/` | هفته جاری کمیسیون | +| 2.6 | `CommissionContract.GetWeeklyCommissionPool` | `CommissionContract` | `/` | وضعیت pool هفته جاری | +| 2.7 | `ClubMembershipContract.GetAllClubMemberships` | `ClubMembershipContract` | `/` | آمار اعضای باشگاه | +| 2.8 | `UserOrderContract.GetAllUserOrderByFilter` | `UserOrderContract` | `/` | سفارش‌های اخیر | +| 2.9 | `IDiscountOrderService.GetOrdersAsync` | `DiscountOrderContract` | `Dashboard/DiscountShopWidget` | ویجت سفارش‌های فروشگاه تخفیفی | +| 2.10 | `CommissionContract.GetWithdrawalRequests` | `CommissionContract` | `NavMenu` | badge درخواست‌های برداشت معلق | +| 2.11 | `GlobalSearch` — `UserContract.GetAllUserByFilter` | `UserContract` | `MainLayout/GlobalSearch` | جستجوی سریع کاربر + ناوبری صفحات | + +--- + +## ۳. مدیریت کاربران + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 3.1 | `UserContract.GetAllUserByFilter` | `UserContract` | `/UserPage/`, `UserAutoComplete`, GlobalSearch | لیست/جستجوی کاربران | +| 3.2 | `UserContract.DeleteUser` | `UserContract` | `/UserPage/` | حذف کاربر | +| 3.3 | Export users | `UserContract.GetAllUserByFilter` | `/UserPage/` | خروجی CSV کاربران | + +--- + +## ۴. نقش‌ها و دسترسی‌ها + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 4.1 | `RoleContract.GetAllRoleByFilter` | `RoleContract` | `/RolePage/`, `RoleAutoComplete` | لیست نقش‌ها | +| 4.2 | `RoleContract.CreateNewRole` | `RoleContract` | `Role/Components/CreateDialog` | ایجاد نقش | +| 4.3 | `RoleContract.UpdateRole` | `RoleContract` | `Role/Components/UpdateDialog` | ویرایش نقش | +| 4.4 | `RoleContract.DeleteRole` | `RoleContract` | `/RolePage/` | حذف نقش | +| 4.5 | `RolePermissionsDialog` | — (UI فقط) | `/RolePage/` | ویرایش permissionها — **هنوز به API وصل نشده** | + +--- + +## ۵. نقش کاربر و آدرس + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 5.1 | `UserRoleContract.GetAllUserRoleByFilter` | `UserRoleContract` | `/UserRolePage/{UserId}` | نقش‌های یک کاربر | +| 5.2 | `UserRoleContract.CreateNewUserRole` | `UserRoleContract` | CreateDialog, `UserRoleDialog` | تخصیص نقش | +| 5.3 | `UserRoleContract.UpdateUserRole` | `UserRoleContract` | UpdateDialog | ویرایش نقش کاربر | +| 5.4 | `UserRoleContract.DeleteUserRole` | `UserRoleContract` | `/UserRolePage/{UserId}` | حذف نقش کاربر | +| 5.5 | `RoleContract.GetAllRoleByFilter` | `RoleContract` | `UserRoleDialog`, `RoleTitleColumn` | نمایش عنوان نقش | +| 5.6 | `UserAddressContract.GetAllUserAddressByFilter` | `UserAddressContract` | `/UserAddressPage/{UserId}` | آدرس‌های کاربر | +| 5.7 | `UserAddressContract.CreateNewUserAddress` | `UserAddressContract` | CreateDialog | ثبت آدرس | +| 5.8 | `UserAddressContract.UpdateUserAddress` | `UserAddressContract` | UpdateDialog | ویرایش آدرس | +| 5.9 | `UserAddressContract.DeleteUserAddress` | `UserAddressContract` | `/UserAddressPage/{UserId}` | حذف آدرس | + +--- + +## ۶. پکیج‌ها + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 6.1 | `PackageContract.GetAllPackageByFilter` | `PackageContract` | `/PackagePage/`, `PackageSelect`, ManualPaymentDialog | لیست پکیج‌ها | +| 6.2 | `PackageContract.CreateNewPackage` | `PackageContract` | `Package/Components/CreateDialog` | ایجاد پکیج | +| 6.3 | `PackageContract.UpdatePackage` | `PackageContract` | `Package/Components/UpdateDialog` | ویرایش پکیج | +| 6.4 | `PackageContract.DeletePackage` | `PackageContract` | `/PackagePage/` | حذف پکیج | +| 6.5 | `ConfigurationContract.GetClubFeatures` | `ConfigurationContract` | Create/Update Dialog | انتخاب featureهای باشگاه مرتبط با پکیج | + +--- + +## ۷. فروشگاه اصلی — محصولات و دسته‌بندی + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 7.1 | `ProductsContract.GetAllProductsByFilter` | `ProductsContract` | `/ProductsPage/`, BulkEdit, AutoComplete | لیست محصولات | +| 7.2 | `ProductsContract.CreateNewProducts` | `ProductsContract` | `Products/Components/CreateDialog` | ایجاد محصول | +| 7.3 | `ProductsContract.UpdateProducts` | `ProductsContract` | UpdateDialog | ویرایش محصول | +| 7.4 | `ProductsContract.DeleteProducts` | `ProductsContract` | `/ProductsPage/` | حذف محصول | +| 7.5 | `ProductsContract.ToggleProductStatus` | `ProductsContract` | `/ProductsPage/`, BulkEdit | فعال/غیرفعال | +| 7.6 | `ProductsContract.BulkUpdateProductPrices` | `ProductsContract` | `/ProductsBulkEditPage/` | ویرایش گروهی قیمت | +| 7.7 | `ProductsContract.GetProductGallery` / Add/Remove Image | `ProductsContract` | `GalleryDialog` | گالری تصاویر محصول | +| 7.8 | `ProductsContract.GetProducts` / `UpdateProductCategories` | `ProductsContract` | `/ProductCategoriesPage/{ProductId}` | drag-drop دسته‌بندی محصول | +| 7.9 | `CategoryContract.GetAllCategoryByFilter` | `CategoryContract` | `/CategoryPage/`, AutoComplete | لیست دسته‌ها | +| 7.10 | `CategoryContract.GetCategory` / Create / Update / Delete | `CategoryContract` | CategoryMainPage, Dialogs | CRUD دسته‌بندی | +| 7.11 | `ProductsContract.GetProductsForCategory` / `UpdateCategoryProducts` | `ProductsContract` | `/CategoryProductsPage/{CategoryId}` | drag-drop محصولات یک دسته | + +--- + +## ۸. انبارداری (Inventory) + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 8.1 | `InventoryContract.GetAllWarehouses` | `InventoryContract` | `/InventoryPage/`, Warehouses, LowStock | لیست انبارها | +| 8.2 | `InventoryContract.GetAllInventoryItems` | `InventoryContract` | `/InventoryPage/` | موجودی کالا | +| 8.3 | `InventoryContract.GetLowStockItems` | `InventoryContract` | `/InventoryPage/`, `/InventoryLowStockPage/` | اقلام کم‌موجود | +| 8.4 | `InventoryContract.AddStock` | `InventoryContract` | `AddStockDialog` | ورود کالا به انبار | +| 8.5 | `InventoryContract.AdjustStock` | `InventoryContract` | `AdjustStockDialog` | تعدیل موجودی | +| 8.6 | `InventoryContract.RecordLoss` | `InventoryContract` | `RecordLossDialog` | ثبت ضایعات | +| 8.7 | `InventoryContract.CreateWarehouse` | `InventoryContract` | `CreateWarehouseDialog` | ایجاد انبار | +| 8.8 | `InventoryContract.UpdateInventorySettings` | `InventoryContract` | `InventorySettingsDialog` | تنظیمات انبار | +| 8.9 | `InventoryContract.GetStockMovements` | `InventoryContract` | `/InventoryMovementsPage/` | تاریخچه جابجایی موجودی | + +--- + +## ۹. سفارش‌های فروشگاه اصلی + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 9.1 | `UserOrderContract.GetAllUserOrderByFilter` | `UserOrderContract` | `/OrdersPage/`, `/UserOrderPage/{UserId}`, SalesReports | لیست سفارش‌ها | +| 9.2 | `UserOrderContract.GetUserOrder` | `UserOrderContract` | OrderDetailsDialog, Index | جزئیات سفارش | +| 9.3 | `UserOrderContract.UpdateUserOrder` | `UserOrderContract` | UserOrderDetailsDialog, ChangeOrderStatus | ویرایش سفارش / tracking | +| 9.4 | `UserOrderContract.UpdateOrderStatus` | `UserOrderContract` | ChangeOrderStatusDialog | تغییر وضعیت تحویل | +| 9.5 | `UserOrderContract.CancelOrder` | `UserOrderContract` | CancelOrderDialog | لغو سفارش | +| 9.6 | `UserOrderContract.DeleteUserOrder` | `UserOrderContract` | `/UserOrderPage/{UserId}` | حذف سفارش | +| 9.7 | `UserOrderContract.ApplyDiscountToOrder` | `UserOrderContract` | ApplyDiscountDialog | اعمال تخفیف روی سفارش | + +--- + +## ۱۰. پرداخت دستی و تراکنش‌ها + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 10.1 | `ManualPaymentContract.GetAllManualPayments` | `ManualPaymentContract` | `/payment/manual-payments` | لیست پرداخت‌های دستی | +| 10.2 | `ManualPaymentContract.CreateManualPayment` | `ManualPaymentContract` | `ManualPaymentDialog` | ثبت پرداخت دستی (مثلاً Daya) | +| 10.3 | `ManualPaymentContract.ApproveManualPayment` | `ManualPaymentContract` | ManualPayments, Dialog | تأیید پرداخت | +| 10.4 | `ManualPaymentContract.RejectManualPayment` | `ManualPaymentContract` | ManualPayments, Dialog | رد پرداخت | +| 10.5 | `/payment/transactions` | — | Transactions page | **TODO — هنوز به API وصل نشده** | + +--- + +## ۱۱. کیف پول و تاریخچه + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 11.1 | `UserWalletContract.GetAllUserWalletByFilter` | `UserWalletContract` | `/wallets` | لیست کیف پول کاربران | +| 11.2 | `UserWalletHistoryContract.GetAllUserWalletHistoryByFilter` | `UserWalletHistoryContract` | `/wallets` (تب تاریخچه) | لاگ تغییرات کیف پول | + +--- + +## ۱۲. قراردادهای کاربران + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 12.1 | `UserContractContract.GetAllUserContractByFilter` | `UserContractContract` | `/contracts` | لیست قراردادهای امضاشده (اصلی / باشگاه) | +| 12.2 | Download PDF | — (local JS) | `/contracts` | دانلود PDF قرارداد ذخیره‌شده | + +--- + +## ۱۳. کمیسیون و پاداش + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 13.1 | `CommissionContract.GetAvailableWeeks` | `CommissionContract` | `/commission/dashboard`, WeekNumberPicker | انتخاب هفته | +| 13.2 | `CommissionContract.GetWeeklyCommissionPool` | `CommissionContract` | `/commission/dashboard` | جزئیات pool هفتگی | +| 13.3 | `CommissionContract.TriggerWeeklyCalculation` | `CommissionContract` | Dashboard, WorkerControl | اجرای دستی محاسبه هفتگی | +| 13.4 | `CommissionContract.GetAllWeeklyPools` | `CommissionContract` | `/commission/reports` | گزارش poolهای هفتگی | +| 13.5 | `CommissionContract.GetUserCommissionPayouts` | `CommissionContract` | `/commission/payouts` | payoutهای کاربران | +| 13.6 | `CommissionContract.ProcessWithdrawal` | `CommissionContract` | UserPayouts, WithdrawalRequests | پردازش/واریز برداشت | +| 13.7 | `CommissionContract.BulkCreditPayouts` | `CommissionContract` | `/commission/payouts` | واریز گروهی payoutها | +| 13.8 | `CommissionContract.GetWithdrawalRequests` | `CommissionContract` | `/commission/withdrawals`, NavMenu | درخواست‌های برداشت کاربران | +| 13.9 | `CommissionContract.ApproveWithdrawal` | `CommissionContract` | WithdrawalRequests | تأیید درخواست برداشت | +| 13.10 | `CommissionContract.RejectWithdrawal` | `CommissionContract` | WithdrawalRequests | رد درخواست برداشت | +| 13.11 | `CommissionContract.GetWithdrawalReports` | `CommissionContract` | `/commission/withdrawal-reports` | گزارش برداشت‌ها | +| 13.12 | `CommissionContract.GetUserWeeklyBalances` | `CommissionContract` | `/network/balances` | گزارش بالانس هفتگی کاربران | +| 13.13 | `CommissionContract.GetWorkerStatus` | `CommissionContract` | `/system/worker-control` | وضعیت worker محاسبه | +| 13.14 | `CommissionContract.GetWorkerExecutionLogs` | `CommissionContract` | `/system/worker-control` | لاگ اجرای worker | + +--- + +## ۱۴. شبکه فروش (MLM) + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 14.1 | `NetworkMembershipContract.GetNetworkTree` | `NetworkMembershipContract` | `/network/tree` | درخت شبکه (admin view) | +| 14.2 | `NetworkMembershipContract.GetUserNetwork` | `NetworkMembershipContract` | `/network/user-info/{UserId}` | اطلاعات شبکه یک کاربر | +| 14.3 | `NetworkMembershipContract.GetNetworkMembershipHistory` | `NetworkMembershipContract` | UserNetworkInfo | تاریخچه عضویت شبکه | +| 14.4 | `NetworkMembershipContract.ChangeNetworkParent` | `NetworkMembershipContract` | `ChangeParentDialog` | تغییر والد در درخت | +| 14.5 | `NetworkMembershipContract.GetNetworkStatistics` | `NetworkMembershipContract` | `/network/statistics` | آمار کلی شبکه (admin) | + +--- + +## ۱۵. باشگاه مشتریان + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 15.1 | `ClubMembershipContract.GetAllClubMemberships` | `ClubMembershipContract` | `/club/members`, Index | لیست اعضا | +| 15.2 | `ClubMembershipContract.ActivateClubMembership` | `ClubMembershipContract` | `ActivateClubDialog` | فعال‌سازی دستی عضویت | +| 15.3 | `ClubMembershipContract.DeactivateClubMembership` | `ClubMembershipContract` | `DeactivateClubDialog` | غیرفعال‌سازی | +| 15.4 | `ClubMembershipContract.GetClubMembershipHistory` | `ClubMembershipContract` | `MemberDetailsDialog` | تاریخچه عضویت | +| 15.5 | `ClubMembershipContract.GetClubStatistics` | `ClubMembershipContract` | `/club/statistics` | آمار باشگاه | +| 15.6 | `ConfigurationContract.GetClubFeatures` | `ConfigurationContract` | `/club/features` | لیست featureهای باشگاه | +| 15.7 | `ClubMembershipContract.GetUserClubFeatures` | `ClubMembershipContract` | `/club/features` | featureهای یک کاربر | +| 15.8 | `ClubMembershipContract.ToggleUserClubFeature` | `ClubMembershipContract` | `/club/features` | فعال/غیرفعال feature برای کاربر | + +--- + +## ۱۶. فروشگاه تخفیفی (Discount Shop) + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 16.1 | `IDiscountProductService` — CRUD | `DiscountProductContract` | `/discount-products` | مدیریت محصولات تخفیفی | +| 16.2 | `IDiscountCategoryService` — CRUD | `DiscountCategoryContract` | `/discount-categories` | مدیریت دسته‌بندی تخفیفی | +| 16.3 | `IDiscountOrderService.GetOrdersAsync` | `DiscountOrderContract.GetAllDiscountOrders` | `/discount-orders`, Dashboard widget | لیست سفارش‌ها (admin) | +| 16.4 | `IDiscountOrderService.GetByIdAsync` | `DiscountOrderContract` | OrderDetailsDialog | جزئیات سفارش | +| 16.5 | `IDiscountOrderService.UpdateStatusAsync` | `DiscountOrderContract` | Orders page, OrderDetailsDialog | تغییر وضعیت پرداخت/ارسال | +| 16.6 | `IDiscountOrderService.GetSalesReportAsync` | `DiscountOrderContract` | `/discount-sales-reports` | گزارش فروش | +| 16.7 | `DiscountProductContract.GetDiscountProducts` | `DiscountProductContract` | `DiscountProductsAutoComplete` | autocomplete محصول | + +--- + +## ۱۷. تگ محصولات + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 17.1 | `ITagService.GetTagsAsync` | `TagContract` | `/tags` | لیست تگ‌ها | +| 17.2 | `ITagService.CreateAsync` / `UpdateAsync` / `DeleteAsync` | `TagContract` | TagEditDialog, TagManagement | CRUD تگ | +| 17.3 | `ITagService.GetProductTagsAsync` | `ProductTagContract` | AssignTagsDialog | تگ‌های یک محصول | +| 17.4 | `ITagService.AssignToProductAsync` / `RemoveProductTagAsync` | `ProductTagContract` | AssignTagsDialog, Discount products | تخصیص/حذف تگ | + +--- + +## ۱۸. پیام‌های عمومی + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 18.1 | `IPublicMessageService.GetMessagesAsync` | `PublicMessageContract` | `/public-messages` | لیست پیام‌ها | +| 18.2 | `IPublicMessageService.GetByIdAsync` | `PublicMessageContract` | PublicMessages | جزئیات | +| 18.3 | `IPublicMessageService.CreateAsync` / `UpdateAsync` | `PublicMessageContract` | MessageFormDialog | ایجاد/ویرایش | +| 18.4 | `IPublicMessageService.PublishAsync` / `ArchiveAsync` | `PublicMessageContract` | PublicMessages | انتشار/بایگانی | +| 18.5 | `IPublicMessageService.DeleteAsync` | `PublicMessageContract` | PublicMessages | حذف | + +--- + +## ۱۹. بلاگ + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 19.1 | `IBlogPostService.GetAllAsync` | `BlogPostContract` | `/blog/posts` | لیست پست‌ها | +| 19.2 | `IBlogPostService.GetByIdAsync` | `BlogPostContract` | BlogPostEditDialog | جزئیات پست | +| 19.3 | `IBlogPostService.CreateAsync` / `UpdateAsync` | `BlogPostContract` | BlogPostEditDialog | ایجاد/ویرایش | +| 19.4 | `IBlogPostService.DeleteAsync` | `BlogPostContract` | BlogPostManagement | حذف | +| 19.5 | `IBlogPostService.PublishAsync` / `ArchiveAsync` | `BlogPostContract` | BlogPostManagement | انتشار/بایگانی | +| 19.6 | `IBlogCategoryService` — CRUD | `BlogCategoryContract` | `/blog/categories` | مدیریت دسته‌بندی بلاگ | + +--- + +## ۲۰. مدیریت محتوای سایت + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 20.1 | `ISitePageSettingsService.GetAllAsync` | `SitePageSettingsContract` | `/content/page-settings` | لیست صفحات (landing, about, contact, licenses) | +| 20.2 | `ISitePageSettingsService.GetByKeyAsync` | `SitePageSettingsContract` | PageSettings dialogs | جزئیات یک صفحه | +| 20.3 | `ISitePageSettingsService.SaveSettingsAsync` | `SitePageSettingsContract` | PageSettingsEditDialog | ذخیره hero + JSON تنظیمات | +| 20.4 | `ISitePageSettingsService.SaveImageAsync` / `DeleteImageAsync` | `SitePageSettingsContract` | PageImagesDialog | مدیریت تصاویر گروه‌بندی‌شده | +| 20.5 | `ISitePageService` — CRUD sections | `SitePageContract` | `/content/pages` | صفحات داینامیک قدیمی (section-based) | + +--- + +## ۲۱. تنظیمات سیستم و سلامت + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 21.1 | `ConfigurationContract.GetAllConfigurations` | `ConfigurationContract` | `/system/configuration` | خواندن key-value تنظیمات (کمیسیون، شبکه، باشگاه، VAT…) | +| 21.2 | `ConfigurationContract.CreateOrUpdateConfiguration` | `ConfigurationContract` | `/system/configuration` | ذخیره تنظیمات | +| 21.3 | `HealthContract.GetSystemHealth` | `HealthContract` | `/system/health` | وضعیت سلامت سرویس‌ها | +| 21.4 | `AlertsMonitoring` | — (mock) | `/system/alerts` | **TODO — API هشدار هنوز وصل نشده** | + +--- + +## ۲۲. نسخه اپلیکیشن + +| # | سرویس / متد | gRPC Contract | صفحه / کامپوننت | کاربرد | +|---|-------------|---------------|-----------------|--------| +| 22.1 | `IAppVersionService.GetAllAsync` | `AppVersionContract` | `/settings/app-versions` | لیست نسخه FrontOffice/App | +| 22.2 | `IAppVersionService.GetByNameAsync` | `AppVersionContract` | AppVersions | جزئیات یک app | +| 22.3 | `IAppVersionService.UpdateAsync` | `AppVersionContract.UpdateAppVersion` | AppVersions dialog | به‌روزرسانی نسخه + force update | + +--- + +## ۲۳. کامپوننت‌های مشترک (AutoComplete / Hub) + +| کامپوننت | Contract | کاربرد | +|----------|----------|--------| +| `UserAutoComplete` | `UserContract` | جستجوی کاربر در فرم‌ها | +| `ProductsAutoComplete` | `ProductsContract` | جستجوی محصول | +| `CategoryAutoComplete` / MultiSelect | `CategoryContract` | انتخاب دسته | +| `PackageSelect` | `PackageContract` | انتخاب پکیج | +| `WeekNumberPicker` | `CommissionContract` | انتخاب هفته | +| `DiscountProductsAutoComplete` | `DiscountProductContract` | جستجوی محصول تخفیفی | +| Hub pages (`ClubHub`, `DiscountShopHub`, `SystemHub`, `OrdersHub`, `BlogHub`) | — | مسیریابی tab-based؛ RPC در child component | + +--- + +## ۲۴. سرویس‌های ثبت‌شده ولی بدون استفاده / ناقص + +| سرویس / صفحه | وضعیت | +|--------------|--------| +| `IBlogPostImageService` (`BlogPostImageContract`) | ثبت در DI؛ **هیچ صفحه‌ای inject نمی‌کند** | +| `/payment/transactions` | UI آماده؛ **LoadData خالی — API وصل نشده** | +| `RolePermissionsDialog` | UI permission؛ **ذخیره در backend TODO** | +| `AuthorizationService` | فقط JWT role؛ **Permission API از CMS/BFF TODO** | +| `/system/alerts` | داده mock؛ **AlertContract وجود ندارد** | + +--- + +## نمودار جریان ورود ادمین + +```mermaid +flowchart LR + A[LoginPage] -->|CreateNewOtpToken| B[SMS OTP] + B --> C[VerifyCodePage] + C -->|VerifyOtpToken| D[JWT in localStorage] + D --> E[All gRPC via TokenHandler] +``` + +--- + +## فهرست gRPC Contractهای فعال BackOffice + +| Contract | Wrapper / استفاده مستقیم | +|----------|---------------------------| +| `OtpTokenContract` | Login | +| `UserContract` | Login, Users, Dashboard, Search | +| `RoleContract` | Roles, UserRoles | +| `UserRoleContract` | UserRole pages | +| `UserAddressContract` | UserAddress pages | +| `PackageContract` | Packages, ManualPayment | +| `ProductsContract` | Products, Categories drag-drop | +| `CategoryContract` | Categories | +| `UserOrderContract` | Orders | +| `ManualPaymentContract` | Manual payments | +| `UserWalletContract` | Wallet management | +| `UserWalletHistoryContract` | Wallet change log | +| `UserContractContract` | Signed contracts | +| `CommissionContract` | Commission, Network balances, Worker | +| `NetworkMembershipContract` | Network tree/info | +| `ClubMembershipContract` | Club members/features | +| `ConfigurationContract` | System config, Club features, Package | +| `DiscountProductContract` | DiscountProductService | +| `DiscountCategoryContract` | DiscountCategoryService | +| `DiscountOrderContract` | DiscountOrderService | +| `TagContract` / `ProductTagContract` | TagService | +| `PublicMessageContract` | PublicMessageService | +| `InventoryContract` | Inventory pages | +| `BlogPostContract` | BlogPostService | +| `BlogCategoryContract` | BlogCategoryService | +| `BlogPostImageContract` | BlogPostImageService *(unused)* | +| `SitePageSettingsContract` | SitePageSettingsService | +| `SitePageContract` | SitePageService | +| `AppVersionContract` | AppVersionService | +| `HealthContract` | Health dashboard | + +--- + +## مقایسه با FrontOffice + +| موضوع | FrontOffice (مشتری) | BackOffice (ادمین) | +|-------|----------------------|-------------------| +| Auth | OTP + JWT (UserContract) | OTP + JWT (همان flow) | +| Orders | Customer RPC | Admin filter + status management | +| Discount Shop | User orders + checkout | Full CRUD + admin order management | +| Commission | Read-only (my payouts) | Full admin (calculation, approval, reports) | +| Network | My tree only | Full tree + change parent | +| Content | Read page settings | Edit page settings + blog + public messages | +| Wallet | My balances | All users wallet + history log | + +مرجع مشابه برای فرانت مشتری: [`FrontOffice/docs/CUSTOMER-SERVICES.md`](../FrontOffice/docs/CUSTOMER-SERVICES.md) diff --git a/k8s/staging/backoffice-deployment.yaml b/k8s/staging/backoffice-deployment.yaml index e905bc0..ade70a0 100644 --- a/k8s/staging/backoffice-deployment.yaml +++ b/k8s/staging/backoffice-deployment.yaml @@ -20,7 +20,7 @@ spec: containers: - name: backoffice image: 194.5.195.53:30080/admin/backoffice:latest - imagePullPolicy: Always + imagePullPolicy: IfNotPresent ports: - containerPort: 80 name: http