docs: convert all ASCII charts to Mermaid diagrams
Converted 40+ ASCII art diagrams across 12 files to Mermaid: - flowchart TD/LR for process flows and architecture - erDiagram for entity relationships - graph TD for tree structures (binary tree, categories) - gantt for roadmap sprints Files: BUSINESS-01 to 05, TECH-01/03/04/05, OVERVIEW-01/02/05 Directory tree structures kept as plain code blocks (Mermaid N/A)
This commit is contained in:
@@ -22,30 +22,38 @@
|
||||
|
||||
## ۲. معماری لایهای CMS
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────┐
|
||||
│ Presentation Layer │
|
||||
│ FrontOffice (Blazor Server) ←─gRPC─→ CMS │
|
||||
│ BackOffice (Blazor WASM) ←─gRPC─→ CMS │
|
||||
├──────────────────────────────────────────────────────┤
|
||||
│ Application Layer │
|
||||
│ Commands (MediatR IRequest<T>) │
|
||||
│ Queries (MediatR IRequest<T>) │
|
||||
│ Validators (FluentValidation) │
|
||||
│ Handlers (IRequestHandler<TReq, TRes>) │
|
||||
├──────────────────────────────────────────────────────┤
|
||||
│ Domain Layer │
|
||||
│ Entities, Enums, Value Objects │
|
||||
│ Domain Events, Interfaces │
|
||||
├──────────────────────────────────────────────────────┤
|
||||
│ Infrastructure Layer │
|
||||
│ EF Core DbContext (CMSDbContext) │
|
||||
│ Repositories, External Services │
|
||||
│ Hangfire Jobs, File Storage │
|
||||
├──────────────────────────────────────────────────────┤
|
||||
│ Database │
|
||||
│ SQL Server — Schema: [CMS] │
|
||||
└──────────────────────────────────────────────────────┘
|
||||
```mermaid
|
||||
flowchart TD
|
||||
subgraph PRES["💻 Presentation Layer"]
|
||||
FO["FrontOffice\nBlazor Server"]
|
||||
BO["BackOffice\nBlazor WASM"]
|
||||
end
|
||||
|
||||
FO & BO -->|gRPC| APP
|
||||
|
||||
subgraph APP["⚙️ Application Layer"]
|
||||
CMD["Commands\nMediatR IRequest"]
|
||||
QRY["Queries\nMediatR IRequest"]
|
||||
VAL["Validators\nFluentValidation"]
|
||||
HND["Handlers\nIRequestHandler"]
|
||||
end
|
||||
|
||||
APP --> DOM
|
||||
|
||||
subgraph DOM["📦 Domain Layer"]
|
||||
ENT["Entities, Enums\nValue Objects\nDomain Events"]
|
||||
end
|
||||
|
||||
DOM --> INF
|
||||
|
||||
subgraph INF["🔧 Infrastructure Layer"]
|
||||
EF["EF Core DbContext"]
|
||||
SVC["External Services"]
|
||||
HF["Hangfire Jobs"]
|
||||
FS["File Storage"]
|
||||
end
|
||||
|
||||
INF --> DB[("🗄️ SQL Server\nSchema: CMS")]
|
||||
```
|
||||
|
||||
---
|
||||
@@ -191,22 +199,22 @@ Engine: MSSQL 2022-CU16, Collation=Arabic_CI_AS
|
||||
|
||||
### ۶.۱ قبل vs بعد
|
||||
|
||||
```
|
||||
قبل:
|
||||
FrontOffice → BFF (REST) → CMS (gRPC)
|
||||
BackOffice → BFF (REST) → CMS (gRPC)
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph BEFORE["قبل"]
|
||||
F1["FrontOffice"] -->|REST| BFF1["BFF"]
|
||||
B1["BackOffice"] -->|REST| BFF1
|
||||
BFF1 -->|gRPC| C1["CMS"]
|
||||
end
|
||||
|
||||
بعد (فعلی):
|
||||
FrontOffice → CMS (gRPC مستقیم)
|
||||
BackOffice → CMS (gRPC مستقیم)
|
||||
|
||||
مزایا:
|
||||
✅ حذف لایه واسط → کاهش latency
|
||||
✅ حذف maintenance اضافی
|
||||
✅ Type-safe از proto تا UI
|
||||
✅ کاهش ۱ سرویس در deployment
|
||||
subgraph AFTER["بعد — فعلی ✅"]
|
||||
F2["FrontOffice"] -->|gRPC| C2["CMS"]
|
||||
B2["BackOffice"] -->|gRPC| C2
|
||||
end
|
||||
```
|
||||
|
||||
> مزایا: حذف لایه واسط → کاهش latency • Type-safe از proto تا UI • کاهش ۱ سرویس در deployment
|
||||
|
||||
### ۶.۲ سازگاری API
|
||||
|
||||
```
|
||||
|
||||
@@ -214,21 +214,21 @@ jobs:
|
||||
|
||||
### ۵.۱ فلوی آمادهسازی
|
||||
|
||||
```
|
||||
سرور اینترنتدار:
|
||||
1. pull-base-images.sh → دانلود Docker images
|
||||
2. cache-nuget-packages.sh → دانلود NuGet packages
|
||||
3. save-images.sh → ذخیره تصاویر به tar
|
||||
4. بستهبندی همه فایلها
|
||||
```mermaid
|
||||
flowchart TD
|
||||
subgraph ONLINE["🌐 سرور اینترنتدار"]
|
||||
A1["pull-base-images.sh\nدانلود Docker images"] --> A2["cache-nuget-packages.sh\nدانلود NuGet packages"]
|
||||
A2 --> A3["save-images.sh\nذخیره تصاویر به tar"]
|
||||
A3 --> A4["بستهبندی"]
|
||||
end
|
||||
|
||||
انتقال فیزیکی (USB/HDD):
|
||||
tar files + nuget packages + k8s manifests
|
||||
A4 -->|"💾 انتقال فیزیکی\nUSB / HDD"| B1
|
||||
|
||||
سرور آفلاین:
|
||||
1. load-images.sh → بارگذاری تصاویر
|
||||
2. setup-nexus-complete.sh → راهاندازی Nexus (NuGet proxy)
|
||||
3. build-all-offline.sh → بیلد با Nexus محلی
|
||||
4. k8s-deploy.sh → استقرار در Kubernetes
|
||||
subgraph OFFLINE["🔒 سرور آفلاین"]
|
||||
B1["load-images.sh\nبارگذاری تصاویر"] --> B2["setup-nexus-complete.sh\nراهاندازی Nexus"]
|
||||
B2 --> B3["build-all-offline.sh\nبیلد با Nexus محلی"]
|
||||
B3 --> B4["k8s-deploy.sh\nاستقرار در K8s"]
|
||||
end
|
||||
```
|
||||
|
||||
### ۵.۲ اسکریپتهای کلیدی
|
||||
@@ -250,12 +250,12 @@ jobs:
|
||||
|
||||
### ۶.۱ نقش
|
||||
|
||||
```
|
||||
Nexus (داخلی):
|
||||
├── NuGet proxy → cache.nuget.org packages
|
||||
├── NuGet hosted → بستههای proto داخلی
|
||||
├── Docker proxy → cache Docker Hub images
|
||||
└── Docker hosted → تصاویر داخلی FourSat
|
||||
```mermaid
|
||||
graph TD
|
||||
NEXUS["Nexus داخلی"] --> NP["NuGet proxy\ncache nuget.org"]
|
||||
NEXUS --> NH["NuGet hosted\nبستههای proto داخلی"]
|
||||
NEXUS --> DP["Docker proxy\ncache Docker Hub"]
|
||||
NEXUS --> DH["Docker hosted\nتصاویر داخلی FourSat"]
|
||||
```
|
||||
|
||||
### ۶.۲ NuGet.config
|
||||
@@ -303,17 +303,11 @@ Proto packages: BaGet (internal) at http://localhost:5555
|
||||
|
||||
### ۸.۱ فلوی بستهبندی
|
||||
|
||||
```
|
||||
CMS/src/Protos/*.proto
|
||||
│
|
||||
▼
|
||||
pack-protos.sh → dotnet pack → .nupkg
|
||||
│
|
||||
▼
|
||||
push to BaGet/Nexus
|
||||
│
|
||||
▼
|
||||
BackOffice + FrontOffice → dotnet restore → مصرف proto
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["CMS/src/Protos/*.proto"] --> B["pack-protos.sh\ndotnet pack → .nupkg"]
|
||||
B --> C["Push to BaGet / Nexus"]
|
||||
C --> D["BackOffice + FrontOffice\ndotnet restore → مصرف proto"]
|
||||
```
|
||||
|
||||
### ۸.۲ نام بسته
|
||||
|
||||
@@ -23,30 +23,24 @@ Timeline:
|
||||
|
||||
### ۲.۱ قبل
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
FO1["FrontOffice"] -->|HTTP/REST| BFF["BFF"]
|
||||
BO1["BackOffice"] -->|HTTP/REST| BFF
|
||||
BFF -->|gRPC| CMS1["CMS"]
|
||||
```
|
||||
FrontOffice ──HTTP/REST──→ BFF ──gRPC──→ CMS
|
||||
BackOffice ──HTTP/REST──→ BFF ──gRPC──→ CMS
|
||||
|
||||
BFF مسئولیتها:
|
||||
• تبدیل REST↔gRPC
|
||||
• Aggregation
|
||||
• Auth proxy
|
||||
• Rate limiting
|
||||
```
|
||||
**BFF مسئولیتها:** تبدیل REST↔gRPC • Aggregation • Auth proxy • Rate limiting
|
||||
|
||||
### ۲.۲ بعد (فعلی)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
FO2["FrontOffice"] -->|gRPC| CMS2["CMS مستقیم"]
|
||||
BO2["BackOffice"] -->|gRPC| CMS2
|
||||
```
|
||||
FrontOffice ──gRPC──→ CMS (مستقیم)
|
||||
BackOffice ──gRPC──→ CMS (مستقیم)
|
||||
|
||||
مزایا:
|
||||
✅ حذف ۱ سرویس از deployment
|
||||
✅ کاهش ~50ms latency per request
|
||||
✅ Type-safety از proto تا UI
|
||||
✅ سادهسازی debug و logging
|
||||
✅ کاهش maintenance cost
|
||||
```
|
||||
**مزایا:** ✅ حذف ۱ سرویس • کاهش ~50ms latency • Type-safety از proto تا UI • سادهسازی debug
|
||||
|
||||
### ۲.۳ مراحل مهاجرت
|
||||
|
||||
@@ -78,18 +72,22 @@ BackOffice ──gRPC──→ CMS (مستقیم)
|
||||
|
||||
### ۳.۱ قبل
|
||||
|
||||
```
|
||||
Client → nginx → Ocelot Gateway → { CMS, BFF, FileService }
|
||||
↑
|
||||
URL routing, rate limiting, auth
|
||||
```mermaid
|
||||
flowchart LR
|
||||
CL1["Client"] --> NG1["nginx"] --> OC["Ocelot Gateway"]
|
||||
OC --> CMS3["CMS"]
|
||||
OC --> BFF2["BFF"]
|
||||
OC --> FS1["FileService"]
|
||||
```
|
||||
|
||||
### ۳.۲ بعد
|
||||
|
||||
```
|
||||
Client → nginx → Ingress → { CMS, BackOffice, FrontOffice }
|
||||
↑
|
||||
Path-based routing in Ingress
|
||||
```mermaid
|
||||
flowchart LR
|
||||
CL2["Client"] --> NG2["nginx"] --> ING["K8s Ingress"]
|
||||
ING --> CMS4["CMS"]
|
||||
ING --> BO3["BackOffice"]
|
||||
ING --> FO3["FrontOffice"]
|
||||
```
|
||||
|
||||
### ۳.۳ دلایل حذف
|
||||
|
||||
@@ -294,21 +294,12 @@ public class ProductService : IProductService
|
||||
|
||||
## ۵. Proto Package Distribution
|
||||
|
||||
```
|
||||
CMS/src/Protos/*.proto
|
||||
│
|
||||
▼
|
||||
pack-protos.sh
|
||||
│
|
||||
▼
|
||||
Foursat.CMSMicroservice.Protobuf.nupkg (v1.0.x)
|
||||
│
|
||||
▼
|
||||
Push to BaGet (http://localhost:5555) or Nexus
|
||||
│
|
||||
▼
|
||||
BackOffice: <PackageReference Include="Foursat.CMSMicroservice.Protobuf" />
|
||||
FrontOffice: <PackageReference Include="Foursat.CMSMicroservice.Protobuf" />
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["CMS/src/Protos/*.proto"] --> B["pack-protos.sh"]
|
||||
B --> C["Foursat.CMSMicroservice.Protobuf.nupkg\nv1.0.x"]
|
||||
C --> D["Push to BaGet / Nexus"]
|
||||
D --> E["BackOffice + FrontOffice\nPackageReference"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user