پرش به محتویات

سند تحلیل سیستم و طراحی سامانه دارانو

این سند، نمای تحلیلی و طراحی سامانه دارانو را در سطح سیستم، مولفه‌ها و جریان‌ها ارائه می‌کند.
برای وضوح بیشتر، از نمودارهای 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