From b7543fc10c423b6d8a87a7ceb3f0c9a8c9cf5736 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 4 Jan 2026 23:05:46 +0330 Subject: [PATCH] feat: implement Proto DLL migration and update domain references --- .../SESSION-2026-01-03-PROTO-DLL-MIGRATION.md | 289 ++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 docs/SESSION-2026-01-03-PROTO-DLL-MIGRATION.md diff --git a/docs/SESSION-2026-01-03-PROTO-DLL-MIGRATION.md b/docs/SESSION-2026-01-03-PROTO-DLL-MIGRATION.md new file mode 100644 index 0000000..8bc8972 --- /dev/null +++ b/docs/SESSION-2026-01-03-PROTO-DLL-MIGRATION.md @@ -0,0 +1,289 @@ +# 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