# Session 2026-01-03: Proto DLL Migration & Domain Changes > **تاریخ**: January 3, 2026 > **موضوع**: مایگریشن به DLL-based Proto References + تغییر دامنه‌ها --- ## 📋 خلاصه تغییرات ### 1. ✅ مایگریشن Proto References به DLL-based Approach **مشکل**: در CI/CD نمی‌توانستیم از `ProjectReference` به پروژه‌های proto در `BackOffice.BFF` استفاده کنیم چون ریپوها جدا هستند. **راه‌حل**: ایجاد سیستم hybrid با DLL های pre-built: #### فایل‌های ایجاد شده: 1. **`BackOffice/build-deps.sh`**: ```bash #!/bin/bash # Build all BFF proto dependencies and copy DLLs to libs folder # Builds all 24 proto projects from BackOffice.BFF/src/Protobufs/ # Copies DLLs to BackOffice/libs/ folder # Supports both net8.0 and net9.0 target frameworks ``` 2. **`BackOffice/libs/`**: فولدر شامل 24 فایل DLL: - `BackOffice.BFF.Category.Protobuf.dll` - `BackOffice.BFF.ClubMembership.Protobuf.dll` - `BackOffice.BFF.Commission.Protobuf.dll` - `BackOffice.BFF.Common.Protobuf.dll` - `BackOffice.BFF.Configuration.Protobuf.dll` - `BackOffice.BFF.DiscountCategory.Protobuf.dll` - `BackOffice.BFF.DiscountOrder.Protobuf.dll` - `BackOffice.BFF.DiscountProduct.Protobuf.dll` - `BackOffice.BFF.DiscountShoppingCart.Protobuf.dll` - `BackOffice.BFF.Health.Protobuf.dll` - `BackOffice.BFF.Inventory.Protobuf.dll` - `BackOffice.BFF.ManualPayment.Protobuf.dll` - `BackOffice.BFF.NetworkMembership.Protobuf.dll` - `BackOffice.BFF.Otp.Protobuf.dll` - `BackOffice.BFF.Package.Protobuf.dll` - `BackOffice.BFF.Products.Protobuf.dll` - `BackOffice.BFF.ProductTag.Protobuf.dll` - `BackOffice.BFF.PublicMessage.Protobuf.dll` ⚠️ (net8.0) - `BackOffice.BFF.Role.Protobuf.dll` - `BackOffice.BFF.Tag.Protobuf.dll` - `BackOffice.BFF.User.Protobuf.dll` - `BackOffice.BFF.UserAddress.Protobuf.dll` - `BackOffice.BFF.UserOrder.Protobuf.dll` - `BackOffice.BFF.UserRole.Protobuf.dll` #### تغییرات در `BackOffice/src/BackOffice/BackOffice.csproj`: **PackageReferences اضافه شده** (برای transitive dependencies): ```xml ``` **Conditional ItemGroups**: ```xml ../../libs/BackOffice.BFF.Common.Protobuf.dll ``` #### تغییرات در `BackOffice/Dockerfile`: ```dockerfile # Copy pre-built proto DLLs COPY ["libs/", "libs/"] ``` #### مشکلات حل شده: 1. **Google.Protobuf Version Conflict**: - مشکل: `PublicMessage.Protobuf` از ورژن `3.28.3` استفاده می‌کرد ولی بقیه از `3.23.3` - راه‌حل: آپگرید به `3.28.3` در `BackOffice.csproj` 2. **Grpc.Core.Api Version Conflict**: - مشکل: Downgrade از `2.71.0` به `2.54.0` - راه‌حل: تنظیم explicit version `2.71.0` در `BackOffice.csproj` 3. **PublicMessage.Protobuf Missing**: - مشکل: این پروژه `net8.0` است نه `net9.0` - راه‌حل: اسکریپت `build-deps.sh` حالا هر دو framework را چک می‌کند ### نتیجه: ✅ **Build: SUCCESS** (0 Errors, 246 Warnings - فقط MudBlazor) ✅ **Publish: SUCCESS** - همه 24 proto assembly به WASM کامپایل شدند ✅ **CI/CD Ready**: می‌توان با `./build-deps.sh` قبل از build، DLL ها را آماده کرد --- ## 2. ✅ تغییر دامنه‌ها (Domain Migration) ### تغییر از `*.foursat.afrino.co` به `*.se.kbs1.ir` **دستور اجرا شده**: ```bash cd /home/masoud/Apps/project/FourSat find . -type f \( -name "*.json" -o -name "*.yml" -o -name "*.yaml" \) \ -exec sed -i 's/foursat\.afrino\.co/se.kbs1.ir/g' {} \; ``` #### فایل‌های تغییر یافته: **Workflow Files** (`.gitea/workflows/*.yml`): - `BackOffice/.gitea/workflows/prod-deploy.yml` - `BackOffice/.gitea/workflows/kub-deploy.yml` - `BackOffice.BFF/.gitea/workflows/prod-deploy.yml` - `BackOffice.BFF/.gitea/workflows/kub-deploy.yml` - `FrontOffice/.gitea/workflows/prod-deploy.yml` - `FrontOffice/.gitea/workflows/kub-deploy.yml` - `FrontOffice.BFF/.gitea/workflows/prod-deploy.yml` - `FrontOffice.BFF/.gitea/workflows/kub-deploy.yml` - `CMS/.gitea/workflows/prod-deploy.yml` - `CMS/.gitea/workflows/kub-deploy.yml` **تغییرات در Workflows**: ```yaml # قبل: EXTERNAL_REGISTRY: git.foursat.afrino.co "insecure-registries": ["git.foursat.afrino.co", "gitea-svc:3000"] # بعد: EXTERNAL_REGISTRY: git.se.kbs1.ir "insecure-registries": ["git.se.kbs1.ir", "gitea-svc:3000"] ``` **Configuration Files** (appsettings): - `BackOffice/src/BackOffice/wwwroot/appsettings.json` - `BackOffice/src/BackOffice/wwwroot/appsettings.Staging.json` - `FrontOffice/src/FrontOffice.Main/appsettings.json` - `FrontOffice/src/FrontOffice.Main/appsettings.Staging.json` - `FrontOffice.BFF/src/FrontOffice.BFF.WebApi/appsettings.json` **تغییرات در appsettings**: ```json // BackOffice "GwUrl": "https://backoffice-bff.se.kbs1.ir" // FrontOffice "GwUrl": "https://frontoffice-bff.se.kbs1.ir" // FrontOffice.BFF "CMSMSAddress": "https://cms.se.kbs1.ir" ``` ### نتیجه: ✅ **21 فایل** با موفقیت تغییر کرد ✅ **0 آدرس قدیمی** باقی مانده --- ## 3. ✅ تغییر Git Remote URLs **دستورات اجرا شده**: ```bash # FrontOffice cd FrontOffice git remote set-url kub-stage https://git.se.kbs1.ir/admin/FrontOffice.git # BackOffice cd BackOffice git remote set-url kub-stage https://git.se.kbs1.ir/admin/BackOffice.git # BackOffice.BFF cd BackOffice.BFF git remote set-url kub-stage https://git.se.kbs1.ir/admin/BackOffice.BFF.git # FrontOffice.BFF cd FrontOffice.BFF git remote set-url kub-stage https://git.se.kbs1.ir/admin/FrontOffice.BFF.git # CMS cd CMS git remote set-url gitea https://git.se.kbs1.ir/admin/CMS.git # totalDoc cd totalDoc git remote set-url foursatDocs https://git.se.kbs1.ir/FourSat/docs.git ``` ### نتیجه: ✅ **6 ریپو** بروز شد ✅ همه remote ها به `git.se.kbs1.ir` تغییر کرد --- ## 📊 آمار کلی | مورد | تعداد | |------|-------| | Proto DLL های ایجاد شده | 24 | | فایل‌های JSON/YAML تغییر یافته | 21 | | Git Repositories بروز شده | 6 | | Build Errors | 0 ✅ | | Build Warnings | 246 (MudBlazor) | --- ## 🚀 دستورات CI/CD ### قبل از Build/Deploy: ```bash # 1. Build proto dependencies cd /home/masoud/Apps/project/FourSat/BackOffice ./build-deps.sh # 2. Build project cd src dotnet build BackOffice.sln -c Release # 3. Publish dotnet publish BackOffice/BackOffice.csproj -c Release -o ./publish ``` ### بررسی Output: ```bash # تعداد proto assemblies در output ls ./publish/wwwroot/_framework/*.wasm | grep "BackOffice.BFF" | wc -l # Result: 24 ✅ ``` --- ## 🔧 Troubleshooting ### اگر Build شکست: 1. **بررسی libs/ folder**: ```bash ls BackOffice/libs/*.dll | wc -l # باید 24 باشد ``` 2. **Rebuild proto dependencies**: ```bash cd BackOffice rm -rf libs/ ./build-deps.sh ``` 3. **بررسی Package Versions**: - `Google.Protobuf`: باید `3.28.3` باشد - `Grpc.Core.Api`: باید `2.71.0` باشد ### اگر Git Push شکست: ```bash # تست اتصال به remote جدید git ls-remote https://git.se.kbs1.ir/admin/BackOffice.git ``` --- ## 📝 نکات مهم 1. **PublicMessage.Protobuf** تنها پروژه‌ای است که `net8.0` دارد 2. اسکریپت `build-deps.sh` خودکار هر دو framework را چک می‌کند 3. در Development Mode می‌توان از ProjectReference استفاده کرد (اگر libs/ وجود نداشته باشد) 4. همه آدرس‌های `*.foursat.afrino.co` به `*.se.kbs1.ir` تغییر کرد 5. همه Git remote ها بروز شدند --- ## ✅ Status: COMPLETED **تاریخ تکمیل**: January 3, 2026 **Build Status**: ✅ SUCCESS **Publish Status**: ✅ SUCCESS **Domain Migration**: ✅ COMPLETED **Git Remotes**: ✅ UPDATED