Files
BackOffice/docs/PROTO-DEPENDENCIES.md
2025-12-06 01:33:01 +03:30

5.8 KiB

BackOffice Proto Dependencies

این فایل وابستگی‌های proto بین BackOffice UI و BackOffice.BFF را مستند می‌کند

Proto های موجود در BackOffice.BFF

Proto Project وضعیت نوع Reference در UI
Category.Protobuf موجود NuGet
ClubMembership.Protobuf موجود ProjectReference
Commission.Protobuf موجود ProjectReference
Common.Protobuf موجود ProjectReference
Configuration.Protobuf موجود ProjectReference
Health.Protobuf موجود ProjectReference
ManualPayment.Protobuf موجود ProjectReference
NetworkMembership.Protobuf موجود ProjectReference
Otp.Protobuf موجود NuGet
Package.Protobuf موجود NuGet
Products.Protobuf موجود ProjectReference (تغییر داده شد)
PublicMessage.Protobuf موجود ProjectReference
Role.Protobuf موجود NuGet
User.Protobuf موجود NuGet
UserAddress.Protobuf موجود NuGet
UserOrder.Protobuf موجود NuGet
UserRole.Protobuf موجود NuGet

Proto های مورد نیاز (وجود ندارند)

Proto Project صفحات وابسته سرویس‌های وابسته
DiscountProduct.Protobuf Pages/DiscountShop/* Services/DiscountProduct/*
DiscountCategory.Protobuf Pages/DiscountShop/* Services/DiscountCategory/*
DiscountOrder.Protobuf Pages/DiscountShop/* Services/DiscountOrder/*
Tag.Protobuf Pages/Tag/* Services/Tag/*
ProductTag.Protobuf Pages/Products/BulkEdit -

متدهای Proto مورد نیاز (وجود ندارند)

UserOrder.Protobuf

// متدهای جدید مورد نیاز
rpc CancelOrder(CancelOrderRequest) returns (CancelOrderResponse);
rpc ApplyDiscountToOrder(ApplyDiscountToOrderRequest) returns (ApplyDiscountToOrderResponse);
rpc UpdateOrderStatus(UpdateOrderStatusRequest) returns (UpdateOrderStatusResponse);

// فیلدهای جدید در GetUserOrderResponse
message GetUserOrderResponse {
    // ... existing fields ...
    int64 vat_amount = X;
    int32 vat_percentage = X;
    int64 vat_base_amount = X;
    int64 vat_total_amount = X;
}

// PaymentStatus enum needs None value
enum PaymentStatus {
    None = 0;
    Success = 1;
    Reject = 2;
    Pending = 3;
}

Products.Protobuf

// متدهای جدید مورد نیاز
rpc AddProductImage(AddProductImageRequest) returns (AddProductImageResponse);
rpc RemoveProductImage(RemoveProductImageRequest) returns (google.protobuf.Empty);

// فیلدهای جدید در CreateNewProductsRequest
message CreateNewProductsRequest {
    // ... existing fields ...
    bytes image_file = X;
    bytes thumbnail_file = X;
}

// یا بهتر:
message ImageFileModel {
    bytes content = 1;
    string file_name = 2;
    string content_type = 3;
}

ManualPayment.Protobuf

نیاز به بررسی - ممکن است متدهایی کم باشد

PublicMessage.Protobuf

نیاز به بررسی - ممکن است متدهایی کم باشد


نحوه ساخت Proto Project جدید

# 1. ساخت پوشه
mkdir -p BackOffice.BFF/src/Protobufs/BackOffice.BFF.Tag.Protobuf/Protos

# 2. ساخت csproj
cat > BackOffice.BFF/src/Protobufs/BackOffice.BFF.Tag.Protobuf/BackOffice.BFF.Tag.Protobuf.csproj << 'EOF'
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  
  <ItemGroup>
    <Protobuf Include="Protos\*.proto" GrpcServices="Client" />
  </ItemGroup>
  
  <ItemGroup>
    <PackageReference Include="Google.Protobuf" Version="3.29.3" />
    <PackageReference Include="Grpc.Net.Client" Version="2.71.0" />
    <PackageReference Include="Grpc.Tools" Version="2.69.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>
EOF

# 3. ساخت proto file
cat > BackOffice.BFF/src/Protobufs/BackOffice.BFF.Tag.Protobuf/Protos/tag.proto << 'EOF'
syntax = "proto3";

package tag;

option csharp_namespace = "BackOffice.BFF.Tag.Protobuf.Protos.Tag";

// ... define services and messages
EOF

# 4. اضافه کردن به solution
dotnet sln BackOffice.BFF/src/BackOffice.BFF.sln add BackOffice.BFF/src/Protobufs/BackOffice.BFF.Tag.Protobuf/BackOffice.BFF.Tag.Protobuf.csproj

تغییرات اعمال شده در Products.Protobuf

Namespace Change

// FROM:
option csharp_namespace = "CMSMicroservice.Protobuf.Protos.Products";

// TO:
option csharp_namespace = "BackOffice.BFF.Products.Protobuf.Protos.Products";

اضافه شدن public_messages.proto

فایل از ClubMembership.Protobuf کپی شد با namespace:

option csharp_namespace = "BackOffice.BFF.Products.Protobuf.Protos";

RPC های جدید

rpc GetProductGallery(GetProductGalleryRequest) returns (GetProductGalleryResponse);
rpc GetCategories(GetCategoriesRequest) returns (GetCategoriesResponse);
rpc UpdateProductCategories(UpdateProductCategoriesRequest) returns (google.protobuf.Empty);
rpc GetProductsForCategory(GetProductsForCategoryRequest) returns (GetProductsForCategoryResponse);
rpc UpdateCategoryProducts(UpdateCategoryProductsRequest) returns (google.protobuf.Empty);

Message های جدید

  • CategoryItem
  • CategoryProductItem
  • GetProductGalleryRequest/Response
  • ProductGalleryImage
  • GetCategoriesRequest/Response
  • UpdateProductCategoriesRequest
  • GetProductsForCategoryRequest/Response
  • UpdateCategoryProductsRequest