سند تحلیل سیستم و طراحی سامانه دارانو
این سند، نمای تحلیلی و طراحی سامانه دارانو را در سطح سیستم، مولفهها و جریانها ارائه میکند.
برای وضوح بیشتر، از نمودارهای Mermaid استفاده شده است.
1. محدوده سیستم و بازیگران (System Scope & Actors)
1.1 بازیگران اصلی
- User: کاربر نهایی خریدار / فروشنده توکن
- Admin: مدیر سامانه و اپراتور پروژه
- External Services: شبکه ققنوس، سرویسهای مانیتورینگ
1.2 نمودار کانتکست (Context Diagram)
graph TD
User[User] --> UI[Darano UI]
Admin[Admin] --> AdminPanel[Admin Panel]
UI --> API[API Gateway]
AdminPanel --> API
API --> Auth[Auth Service]
API --> Market[Market Service]
API --> Wallet[Wallet Service]
Wallet --> Ghoghnous[Blockchain Ghoghnous]
API --> DB[(PostgreSQL)]
2. موارد استفاده (Use Cases)
2.1 Use Caseهای سطح کاربر (User Facing)
- ثبتنام و ورود کاربر (Sign up / Login)
- احراز هویت (KYC Verification)
- کیف پول ریالی (Fiat Wallet Management)
- واریز ریال (Fiat Deposit)
- واریز و برداشت توکن (Token Deposit/Withdraw)
- مشاهده و خرید توکن در بازار اولیه (ICO / Primary Sale)
- معامله توکن در بازار ثانویه (P2P Trade)
- مشاهده داراییها و تاریخچه تراکنشها (Portfolio & History)
- استفاده از کد تخفیف در خرید توکن (Discount Code Application)
2.2 Use Caseهای سمت مدیریت (Admin Operations)
شامل کلیه عملیات مدیریتی مرتبط با داراییها، بازار و کاربران:
- صدور توکن و تخصیص اولیه (Token Issuance)
- اعمال و مدیریت بازخرید (Buy-Back & Asset Ops)
- مدیریت سفارشها و بازار (Order & Market Controls)
- مدیریت کاربران و گزارشات (User Admin & Reporting)
- پیکربندی و پایش سامانه (System Monitoring & Config)
3. معماری منطقی سیستم (Logical Architecture)
3.1 نمودار مولفهها (Component Diagram ساده)
graph LR
UI[UI Nextjs] --> APIGW[API Gateway]
AdminPanel[Django Admin Panel] --> APIGW
APIGW --> Auth[Auth Service]
APIGW --> Market[Market Service]
APIGW --> Wallet[Wallet Service]
Auth --> DB[(PostgreSQL)]
Market --> DB
Wallet --> DB
Wallet --> Ghoghnous[Blockchain Ghoghnous]
Streamer[Wallet Streamer] --> Ghoghnous
Streamer --> DB
4. جریانهای اصلی (Main Flows)
4.1 جریان Login کاربر
sequenceDiagram
participant U as User
participant UI as UI
participant API as API Gateway
participant AUTH as Auth Service
participant DB as Database
U->>UI: Submit credentials
UI->>API: Login request
API->>AUTH: Validate credentials
AUTH->>DB: Check user record
DB-->>AUTH: User data
AUTH-->>API: JWT + refresh token
API-->>UI: Tokens
UI-->>U: Logged in session
4.2 خرید توکن در بازار اولیه (Primary Purchase Flow)
sequenceDiagram
participant U as User
participant UI as UI
participant API as API Gateway
participant WAL as Wallet Service
participant GH as Ghoghnous
U->>UI: Select project and amount
UI->>API: Create primary order
API->>WAL: Validate order
WAL->>GH: On chain transfer
GH-->>WAL: Transfer success
WAL-->>WAL: Confirm transfer
WAL-->>API: Order completed
API-->>UI: Success response
4.3 معامله P2P در بازار ثانویه (Secondary Market P2P)
sequenceDiagram
participant Buyer as Buyer
participant UI as UI
participant API as API Gateway
participant MKT as Market Service
participant WAL as Wallet Service
participant GH as Ghoghnous
Buyer->>UI: Select sell order
UI->>API: Place buy request
API->>MKT: Match buy with sell order
MKT->>WAL: Transfer token from seller to buyer
WAL->>GH: On chain transfer
GH-->>WAL: Confirm transfer
WAL-->>MKT: Transfer result
MKT-->>API: Trade completed
API-->>UI: Trade success
5. طراحی امنیت و دسترسی (Security & Access Design)
5.1 Access Levels در اپ کاربر
- Guest: بدون Login، دسترسی فقط به مشاهده عمومی
- User: کاربر احراز هویت شده، امکان خرید و معامله
- Admin: سطح مدیریتی محدود فقط روی اپ کاربر
graph TD
Guest[Guest] --> ReadPublic[View public info]
User[User] --> Buy[Buy and trade tokens]
AdminApp[Admin in app] --> AllUserActions[All user level actions]
5.2 RBAC و ABAC در Admin Panel
graph TD
AdminRole[Admin roles] --> Viewer[Read only]
AdminRole --> Operator[Manage orders]
AdminRole --> AssetManager[Issue and manage assets]
AssetManager --> ABAC[Policy: project scoped]
6. طراحی وضعیتها (State Design)
6.1 وضعیت Order در بازار
stateDiagram-v2
[*] --> Draft
Draft --> Open
Open --> PartiallyFilled
Open --> Filled
PartiallyFilled --> Filled
Open --> Cancelled
PartiallyFilled --> Cancelled
Filled --> [*]
Cancelled --> [*]
7. مدل داده (Data Model Snapshot)
7.1 ERD ساده سامانه
erDiagram
USER ||--o{ WALLET : has
WALLET }o--o{ ASSET : owns
ASSET ||--o{ ORDER : listed-in
ORDER ||--o{ TRADE : executed-in
توضیح کوتاه:
- USER: اطلاعات کاربر
- WALLET: کیفپول کاربر روی سیستم
- ASSET: دارایی توکنایز شده
- ORDER: سفارشهای خرید/فروش در بازار
- TRADE: تراکنشهای انجامشده بین کاربران
8. طراحی استقرار (Deployment View خلاصه)
8.1 Deployment Diagram ساده
graph LR
subgraph ClientSide
Browser[Browser / Mobile]
end
subgraph CloudflareLayer
CF[Cloudflare DNS WAF]
end
subgraph VPS["VPS Ubuntu 22.04 - Arvan"]
subgraph DockerStack
TFK[Traefik]
UI[UI container]
AP[Admin Panel container]
API[API container]
AUTH[Auth container]
MKT[Market container]
WAL[Wallet container]
STR[Wallet Streamer container]
DB[(PostgreSQL)]
MQ[(RabbitMQ)]
RDS[(Redis)]
PROM[Prometheus]
GRAF[Grafana]
PORT[Portainer]
ALERT[Alertmanager]
end
end
Browser --> CF --> TFK
TFK --> UI
TFK --> AP
TFK --> API
API --> AUTH
API --> MKT
API --> WAL
AUTH --> DB
MKT --> DB
WAL --> DB
WAL --> Ghoghnous[Blockchain Ghoghnous]
STR --> Ghoghnous
STR --> DB
PROM --> API
PROM --> DB
GRAF --> PROM
PORT --> DockerStack
ALERT --> PROM