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:
masoodafar-web
2026-02-18 23:36:39 +03:30
parent aef6861e21
commit 1b04ba5326
12 changed files with 544 additions and 739 deletions
+45 -37
View File
@@ -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
```
+24 -30
View File
@@ -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 proxycache.nuget.org packages
├── NuGet hostedبسته‌های proto داخلی
├── Docker proxycache 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 -25
View File
@@ -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"]
```
### ۳.۳ دلایل حذف
+6 -15
View File
@@ -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"]
```
---