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

موارد استفاده (Use Cases) و نمودارهای توالی سامانه دارانو

این سند شامل شرح کامل تمامی use case های سامانه دارانو به همراه نمودارهای توالی (Sequence Diagrams) برای هر یک می‌باشد.


فهرست مطالب

Use Case های سطح کاربر

  1. ثبت‌نام و ورود کاربر
  2. احراز هویت (KYC)
  3. کیف پول ریالی
  4. واریز ریال
  5. واریز و برداشت توکن
  6. خرید توکن در بازار اولیه
  7. معامله در بازار ثانویه
  8. مشاهده دارایی‌ها و تاریخچه
  9. استفاده از کد تخفیف

Use Case های سمت مدیریت

  1. صدور توکن و تخصیص اولیه
  2. مدیریت بازخرید
  3. مدیریت سفارش‌ها و بازار
  4. مدیریت کاربران و گزارشات
  5. پیکربندی و پایش سامانه

Use Case های سطح کاربر

1. ثبت‌نام و ورود کاربر

شرح خلاصه

کاربر با استفاده از شماره موبایل خود می‌تواند در سامانه ثبت‌نام کرده یا وارد شود. سیستم از طریق ارسال کد OTP هویت کاربر را تأیید می‌کند و در صورت موفقیت، توکن JWT صادر می‌شود. برای کاربران جدید، به‌صورت خودکار کیف پول توکنی ایجاد می‌شود.

بازیگران

  • کاربر (User)
  • سیستم احراز هویت (Auth Service)
  • سرویس کیف پول (Wallet Service)

پیش‌نیازها

  • شماره موبایل معتبر
  • دسترسی به پیامک OTP

جریان اصلی

  1. کاربر شماره موبایل را وارد می‌کند
  2. سیستم کد OTP ارسال می‌کند
  3. کاربر کد دریافتی را وارد می‌کند
  4. سیستم کد را تأیید می‌کند
  5. برای کاربر جدید: ایجاد حساب کاربری و کیف پول
  6. صدور JWT Token
  7. ورود موفق به سیستم

نتیجه

  • کاربر وارد سامانه می‌شود
  • نشست کاربری ایجاد می‌شود
  • برای کاربر جدید: کیف پول آماده استفاده است

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant AUTH as Auth Service
    participant WAL as Wallet Service
    participant DB as Database
    participant SMS as SMS Service

    U->>UI: ورود شماره موبایل
    UI->>API: درخواست ورود/ثبت‌نام
    API->>AUTH: بررسی وجود کاربر
    AUTH->>DB: جستجوی کاربر
    DB-->>AUTH: نتیجه جستجو

    AUTH->>SMS: ارسال کد OTP
    SMS-->>U: دریافت کد
    AUTH-->>API: کد ارسال شد
    API-->>UI: منتظر کد OTP

    U->>UI: وارد کردن کد OTP
    UI->>API: تأیید کد
    API->>AUTH: اعتبارسنجی OTP

    alt کاربر جدید
        AUTH->>DB: ایجاد حساب کاربری
        AUTH->>WAL: ایجاد کیف پول
        WAL->>DB: ذخیره اطلاعات کیف پول
        WAL-->>AUTH: کیف پول ایجاد شد
    end

    AUTH->>AUTH: تولید JWT Token
    AUTH-->>API: JWT + Refresh Token
    API-->>UI: توکن‌های احراز هویت
    UI-->>U: ورود موفق

2. احراز هویت (KYC)

شرح خلاصه

فرآیند احراز هویت کاربران شامل چند مرحله است: تأیید اطلاعات هویتی از طریق سرویس‌های شخص ثالث (زحل، احراز، جیبیت)، احراز هویت شاهکار برای تأیید مالکیت شماره موبایل، و تأیید اطلاعات بانکی. این فرآیند برای دسترسی به امکانات معاملاتی الزامی است.

بازیگران

  • کاربر (User)
  • سرویس احراز هویت (Auth Service)
  • سرویس‌های شخص ثالث (Zohal, Ehraz, Jibit)
  • سامانه شاهکار

پیش‌نیازها

  • ثبت‌نام و ورود به سیستم
  • اطلاعات هویتی معتبر (کدملی، تاریخ تولد)
  • شماره شبا معتبر

جریان اصلی

  1. کاربر درخواست احراز هویت می‌دهد
  2. وارد کردن اطلاعات هویتی (کدملی، تاریخ تولد)
  3. تأیید مالکیت شماره موبایل از طریق شاهکار
  4. وارد کردن اطلاعات بانکی (شماره شبا)
  5. ارسال اطلاعات به سرویس‌های شخص ثالث
  6. دریافت نتیجه احراز هویت
  7. به‌روزرسانی وضعیت KYC کاربر

نتیجه

  • وضعیت KYC کاربر به تأیید شده تغییر می‌کند
  • امکان دسترسی به خدمات معاملاتی فراهم می‌شود

Sequence Diagram

sequenceDiagram 
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant AUTH as Auth Service
    participant SHAHKAR as سامانه شاهکار
    participant KYC as سرویس KYC شخص ثالث
    participant DB as Database

    U->>UI: درخواست احراز هویت
    UI->>API: شروع فرآیند KYC
    API->>AUTH: درخواست KYC

    AUTH-->>API: درخواست اطلاعات هویتی
    API-->>UI: فرم اطلاعات
    U->>UI: کدملی + تاریخ تولد
    UI->>API: ارسال اطلاعات هویتی

    API->>AUTH: تأیید شاهکار
    AUTH->>SHAHKAR: بررسی مالکیت موبایل
    SHAHKAR-->>AUTH: نتیجه تأیید

    alt تأیید شاهکار موفق
        AUTH-->>API: درخواست اطلاعات بانکی
        API-->>UI: فرم شماره شبا
        U->>UI: شماره شبا
        UI->>API: ارسال شبا

        API->>AUTH: اعتبارسنجی بانکی
        AUTH->>KYC: تأیید اطلاعات
        KYC-->>AUTH: نتیجه احراز هویت

        alt احراز هویت موفق
            AUTH->>DB: به‌روزرسانی وضعیت KYC
            AUTH-->>API: KYC تأیید شد
            API-->>UI: احراز هویت موفق
            UI-->>U: دسترسی کامل فعال شد
        else احراز هویت ناموفق
            AUTH-->>API: خطای اعتبارسنجی
            API-->>UI: اطلاعات نادرست
            UI-->>U: لطفاً مجدداً تلاش کنید
        end
    else تأیید شاهکار ناموفق
        AUTH-->>API: خطای شاهکار
        API-->>UI: مالکیت موبایل تأیید نشد
        UI-->>U: شماره موبایل به نام شما نیست
    end

3. کیف پول ریالی

شرح خلاصه

کیف پول ریالی یک حساب داخلی در سامانه است که کاربران می‌توانند موجودی ریالی خود را در آن نگهداری کنند. این کیف پول برای خریدهای سریع، انتقال ریال بین کاربران، و دریافت وجه از بازخرید توکن استفاده می‌شود. تمام تراکنش‌های داخلی فوری و بدون کارمزد هستند.

بازیگران

  • کاربر (User)
  • سرویس مالی (Wallet Service)
  • درگاه پرداخت

پیش‌نیازها

  • احراز هویت تأیید شده (KYC)
  • حساب کاربری فعال

جریان اصلی

  1. مشاهده موجودی کیف ریالی
  2. شارژ کیف پول (از طریق درگاه بانکی)
  3. برداشت به حساب بانکی
  4. انتقال ریال به سایر کاربران
  5. استفاده برای خرید توکن

نتیجه

  • کاربر می‌تواند موجودی ریالی خود را مدیریت کند
  • امکان خریدهای سریع فراهم می‌شود

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant WAL as Wallet Service
    participant PAY as Payment Gateway
    participant DB as Database

    U->>UI: مشاهده کیف ریالی
    UI->>API: درخواست موجودی
    API->>WAL: دریافت موجودی ریالی
    WAL->>DB: خواندن موجودی
    DB-->>WAL: موجودی فعلی
    WAL-->>API: موجودی
    API-->>UI: نمایش موجودی
    UI-->>U: موجودی کیف ریالی

    alt شارژ کیف پول
        U->>UI: درخواست شارژ + مبلغ
        UI->>API: ایجاد تراکنش شارژ
        API->>WAL: ایجاد درخواست پرداخت
        WAL->>PAY: هدایت به درگاه
        PAY-->>U: صفحه پرداخت
        U->>PAY: تأیید پرداخت
        PAY->>WAL: تأیید تراکنش
        WAL->>DB: افزایش موجودی
        WAL-->>API: شارژ موفق
        API-->>UI: تراکنش موفق
        UI-->>U: کیف پول شارژ شد
    end

    alt برداشت به حساب بانکی
        U->>UI: درخواست برداشت + مبلغ + شبا
        UI->>API: ثبت درخواست برداشت
        API->>WAL: بررسی موجودی
        WAL->>DB: کسر موجودی
        WAL->>PAY: انتقال به حساب
        PAY-->>WAL: تأیید واریز
        WAL-->>API: برداشت موفق
        API-->>UI: تراکنش موفق
        UI-->>U: وجه به حساب شما واریز شد
    end

    alt انتقال به کاربر دیگر
        U->>UI: انتقال + مبلغ + گیرنده
        UI->>API: درخواست انتقال
        API->>WAL: بررسی موجودی و گیرنده
        WAL->>DB: کسر از فرستنده
        WAL->>DB: افزودن به گیرنده
        WAL-->>API: انتقال موفق
        API-->>UI: تراکنش موفق
        UI-->>U: انتقال انجام شد
    end

4. واریز ریال

شرح خلاصه

کاربران می‌توانند از طریق سه روش اصلی به کیف ریالی خود شارژ کنند: پرداخت آنلاین از طریق درگاه بانکی، واریز با شناسه پرداخت منحصر به فرد، و استفاده از کیف پول‌های مجازی (جیبیت، وندار). هر روش مزایای خاص خود را دارد و کاربر می‌تواند متناسب با نیاز خود انتخاب کند.

بازیگران

  • کاربر (User)
  • درگاه پرداخت (Payment Gateway)
  • سرویس مالی (Wallet Service)
  • پرداخت‌یارها (Jibit, Vandar)

پیش‌نیازها

  • احراز هویت تأیید شده
  • حساب بانکی یا کیف پول مجازی فعال

جریان اصلی

روش 1: درگاه آنلاین

  1. انتخاب مبلغ واریز
  2. هدایت به درگاه بانکی
  3. تأیید پرداخت
  4. افزایش موجودی کیف ریالی

روش 2: واریز با شناسه

  1. دریافت شناسه پرداخت منحصر به فرد
  2. واریز از طریق بانک به حساب سیستم
  3. شناسایی و تأیید خودکار تراکنش
  4. افزایش موجودی

روش 3: کیف پول مجازی

  1. اتصال کیف پول (جیبیت/وندار)
  2. انتخاب مبلغ
  3. تأیید برداشت از کیف پول
  4. افزایش موجودی

نتیجه

  • موجودی کیف ریالی افزایش می‌یابد
  • کاربر آماده خرید توکن است

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant WAL as Wallet Service
    participant PAY as Payment Gateway
    participant BANK as بانک
    participant DB as Database

    Note over U,DB: روش 1: درگاه آنلاین

    U->>UI: انتخاب واریز ریال
    UI->>API: درخواست واریز + مبلغ
    API->>WAL: ایجاد تراکنش
    WAL->>DB: ثبت تراکنش موقت
    WAL->>PAY: ایجاد درخواست پرداخت
    PAY-->>U: هدایت به درگاه بانک

    U->>BANK: ورود اطلاعات کارت
    BANK->>BANK: احراز هویت
    BANK->>PAY: تأیید پرداخت
    PAY->>WAL: Callback تأیید

    WAL->>DB: به‌روزرسانی تراکنش
    WAL->>DB: افزایش موجودی کیف ریالی
    WAL-->>API: واریز موفق
    API-->>UI: بازگشت به صفحه
    UI-->>U: واریز موفق انجام شد

    Note over U,DB: روش 2: واریز با شناسه

    U->>UI: درخواست شناسه پرداخت
    UI->>API: تولید شناسه
    API->>WAL: ایجاد شناسه منحصر به فرد
    WAL->>DB: ثبت شناسه
    WAL-->>API: شناسه + شماره حساب
    API-->>UI: نمایش اطلاعات
    UI-->>U: شناسه و شماره حساب

    U->>BANK: واریز با شناسه
    BANK->>WAL: اعلان تراکنش (Hook)
    WAL->>DB: تطبیق شناسه
    WAL->>DB: افزایش موجودی
    WAL->>API: اعلان واریز
    API->>UI: نوتیفیکیشن
    UI-->>U: واریز تأیید شد

    Note over U,DB: روش 3: کیف پول مجازی

    U->>UI: واریز از جیبیت/وندار
    UI->>API: اتصال کیف پول
    API->>WAL: درخواست احراز هویت
    WAL->>PAY: OAuth کیف پول
    PAY-->>U: تأیید دسترسی
    U->>PAY: تأیید
    PAY-->>WAL: Token دسترسی

    WAL-->>API: کیف پول متصل شد
    API-->>UI: آماده واریز
    U->>UI: مبلغ واریز
    UI->>API: درخواست برداشت
    API->>WAL: برداشت از کیف پول
    WAL->>PAY: تراکنش برداشت
    PAY-->>WAL: تأیید
    WAL->>DB: افزایش موجودی
    WAL-->>API: واریز موفق
    API-->>UI: تراکنش موفق
    UI-->>U: واریز انجام شد

5. واریز و برداشت توکن

شرح خلاصه

کاربران می‌توانند توکن‌های خود را از کیف پول‌های خارجی به دارانو واریز کنند یا از دارانو به کیف پول‌های خارجی منتقل نمایند. تمام انتقال‌ها روی بلاکچین ققنوس (Kuknos) انجام می‌شود و قابل پیگیری هستند. برای واریز، کاربر آدرس کیف پول خود در دارانو را دریافت می‌کند و برای برداشت، آدرس مقصد را وارد می‌نماید.

بازیگران

  • کاربر (User)
  • سرویس کیف پول (Wallet Service)
  • بلاکچین ققنوس (Kuknos Network)
  • Wallet Streamer

پیش‌نیازها

  • احراز هویت تأیید شده
  • کیف پول توکنی ایجاد شده
  • برای برداشت: موجودی کافی توکن

جریان اصلی

واریز توکن:

  1. کاربر آدرس کیف پول خود را کپی می‌کند
  2. از کیف پول خارجی توکن ارسال می‌کند
  3. Wallet Streamer تراکنش را شناسایی می‌کند
  4. موجودی کاربر به‌روزرسانی می‌شود

برداشت توکن:

  1. کاربر آدرس مقصد را وارد می‌کند
  2. مقدار توکن را مشخص می‌کند
  3. تأیید تراکنش
  4. انتقال On-Chain روی ققنوس
  5. کاهش موجودی کاربر

نتیجه

  • توکن‌ها بین کیف پول‌ها منتقل می‌شوند
  • تمام تراکنش‌ها روی بلاکچین ثبت می‌شوند

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant WAL as Wallet Service
    participant GH as Kuknos Blockchain
    participant STR as Wallet Streamer
    participant DB as Database

    Note over U,DB: واریز توکن از کیف پول خارجی

    U->>UI: درخواست آدرس واریز
    UI->>API: دریافت آدرس کیف پول
    API->>WAL: آدرس کیف پول کاربر
    WAL->>DB: خواندن آدرس عمومی
    DB-->>WAL: آدرس
    WAL-->>API: آدرس کیف پول
    API-->>UI: نمایش آدرس + QR Code
    UI-->>U: کپی آدرس

    U->>U: ارسال از کیف پول خارجی
    U->>GH: تراکنش On-Chain
    GH->>GH: تأیید تراکنش

    STR->>GH: Streaming تراکنش‌ها
    GH-->>STR: تراکنش جدید
    STR->>STR: شناسایی آدرس کاربر
    STR->>DB: ثبت تراکنش
    STR->>DB: به‌روزرسانی موجودی

    STR->>API: اعلان واریز
    API->>UI: نوتیفیکیشن
    UI-->>U: توکن واریز شد

    Note over U,DB: برداشت توکن به کیف پول خارجی

    U->>UI: درخواست برداشت
    UI->>API: شروع فرآیند برداشت
    API-->>UI: فرم برداشت

    U->>UI: آدرس مقصد + مقدار توکن
    UI->>API: ثبت درخواست برداشت
    API->>WAL: بررسی موجودی

    WAL->>DB: خواندن موجودی
    DB-->>WAL: موجودی فعلی

    alt موجودی کافی
        WAL->>WAL: آماده‌سازی تراکنش
        WAL->>GH: انتقال On-Chain
        GH->>GH: پردازش تراکنش
        GH-->>WAL: تأیید تراکنش

        WAL->>DB: کاهش موجودی
        WAL->>DB: ثبت تراکنش برداشت
        WAL-->>API: برداشت موفق
        API-->>UI: تراکنش موفق
        UI-->>U: توکن ارسال شد

        STR->>GH: پیگیری تأییدات
        GH-->>STR: تأیید نهایی
        STR->>DB: به‌روزرسانی وضعیت
    else موجودی ناکافی
        WAL-->>API: خطا: موجودی کافی نیست
        API-->>UI: خطای موجودی
        UI-->>U: موجودی کافی نیست
    end

6. خرید توکن در بازار اولیه

شرح خلاصه

در بازار اولیه (ICO/Primary Sale)، کاربران می‌توانند مستقیماً توکن‌های جدید را از سیستم خریداری کنند. این خرید می‌تواند از طریق درگاه پرداخت، کیف ریالی، یا به صورت اقساطی (BNPL) انجام شود. پس از پرداخت موفق، توکن‌ها به صورت On-Chain به کیف پول کاربر منتقل می‌شوند. امکان استفاده از کد تخفیف و کد دعوت نیز وجود دارد.

بازیگران

  • کاربر (User)
  • سرویس بازار (Market Service)
  • سرویس کیف پول (Wallet Service)
  • درگاه پرداخت (Payment Gateway)
  • بلاکچین ققنوس (Kuknos)

پیش‌نیازها

  • احراز هویت تأیید شده
  • پذیرش Trust Line برای توکن مورد نظر
  • موجودی کافی (ریالی یا اعتبار اقساط)

جریان اصلی

  1. مشاهده پروژه‌های موجود در بازار اولیه
  2. انتخاب پروژه و تعداد توکن
  3. انتخاب روش پرداخت (آنلاین/کیف ریالی/اقساطی)
  4. اعمال کد تخفیف (اختیاری)
  5. تأیید و پرداخت
  6. انتقال On-Chain توکن به کیف پول کاربر
  7. دریافت تأییدیه خرید

نتیجه

  • توکن‌ها به کیف پول کاربر منتقل می‌شوند
  • تراکنش در بلاکچین ثبت می‌شود

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant MKT as Market Service
    participant WAL as Wallet Service
    participant PAY as Payment Gateway
    participant GH as Kuknos Blockchain
    participant DB as Database

    U->>UI: مشاهده بازار اولیه
    UI->>API: لیست پروژه‌های ICO
    API->>MKT: دریافت پروژه‌های فعال
    MKT->>DB: خواندن پروژه‌ها
    DB-->>MKT: لیست پروژه‌ها
    MKT-->>API: پروژه‌های فعال
    API-->>UI: نمایش پروژه‌ها
    UI-->>U: لیست پروژه‌ها

    U->>UI: انتخاب پروژه + تعداد توکن
    UI->>API: ایجاد سفارش
    API->>MKT: بررسی موجودی پروژه

    MKT->>DB: چک موجودی توکن
    DB-->>MKT: موجودی کافی

    MKT->>WAL: بررسی Trust Line
    WAL->>GH: Query Trust Line
    GH-->>WAL: Trust Line فعال

    MKT->>MKT: محاسبه قیمت
    MKT-->>API: قیمت نهایی
    API-->>UI: نمایش قیمت

    U->>UI: انتخاب روش پرداخت

    alt پرداخت از کیف ریالی
        UI->>API: پرداخت از کیف ریالی
        API->>WAL: بررسی موجودی ریالی
        WAL->>DB: خواندن موجودی
        DB-->>WAL: موجودی کافی
        WAL->>DB: کسر موجودی
        WAL-->>API: پرداخت موفق
    else پرداخت آنلاین
        UI->>API: پرداخت آنلاین
        API->>PAY: ایجاد تراکنش
        PAY-->>U: هدایت به درگاه
        U->>PAY: تأیید پرداخت
        PAY-->>API: Callback تأیید
    else خرید اقساطی (BNPL)
        UI->>API: درخواست اقساط
        API->>MKT: بررسی اعتبار کاربر
        MKT->>DB: چک اعتبار
        DB-->>MKT: اعتبار کافی
        MKT-->>API: تأیید اقساط
    end

    API->>MKT: تأیید نهایی سفارش
    MKT->>DB: ثبت سفارش
    MKT->>WAL: انتقال توکن

    WAL->>GH: Transfer On-Chain
    GH->>GH: پردازش تراکنش
    GH-->>WAL: تأیید انتقال

    WAL->>DB: به‌روزرسانی موجودی
    WAL-->>MKT: انتقال موفق
    MKT->>DB: تکمیل سفارش
    MKT-->>API: خرید موفق
    API-->>UI: تأییدیه خرید
    UI-->>U: توکن خریداری شد

7. معامله در بازار ثانویه

شرح خلاصه

بازار ثانویه یک پلتفرم P2P (Peer-to-Peer) است که کاربران می‌توانند توکن‌های خود را به یکدیگر بفروشند. فروشندگان سفارش فروش ثبت می‌کنند و توکن‌های خود قفل می‌شود. خریداران می‌توانند از Order Book سفارش مناسب را انتخاب کرده و خریداری کنند. تسویه به صورت خودکار و On-Chain انجام می‌شود. سیستم از مکانیزم Maker/Taker Fee پشتیبانی می‌کند.

بازیگران

  • فروشنده (Seller/Maker)
  • خریدار (Buyer/Taker)
  • سرویس بازار (Market Service)
  • سرویس کیف پول (Wallet Service)
  • بلاکچین ققنوس (Kuknos)

پیش‌نیازها

  • احراز هویت تأیید شده
  • برای فروشنده: موجودی توکن
  • برای خریدار: موجودی ریالی کافی

جریان اصلی

ثبت سفارش فروش (Maker):

  1. انتخاب توکن و مقدار برای فروش
  2. تعیین قیمت واحد
  3. تأیید سفارش
  4. قفل شدن توکن‌ها
  5. قرارگیری سفارش در Order Book

خرید از بازار (Taker):

  1. مشاهده Order Book
  2. انتخاب سفارش فروش
  3. تأیید خرید و پرداخت
  4. انتقال خودکار توکن از فروشنده به خریدار
  5. واریز ریال به حساب فروشنده
  6. کسر کارمزد

نتیجه

  • توکن به خریدار منتقل می‌شود
  • وجه به فروشنده واریز می‌شود
  • معامله در بلاکچین ثبت می‌شود

Sequence Diagram

sequenceDiagram
    participant S as فروشنده
    participant B as خریدار
    participant UI as رابط کاربری
    participant API as API Gateway
    participant MKT as Market Service
    participant WAL as Wallet Service
    participant GH as Kuknos Blockchain
    participant DB as Database

    Note over S,DB: ثبت سفارش فروش (Maker)

    S->>UI: ایجاد سفارش فروش
    UI->>API: ثبت سفارش + توکن + قیمت
    API->>MKT: ایجاد سفارش

    MKT->>WAL: بررسی موجودی فروشنده
    WAL->>DB: خواندن موجودی توکن
    DB-->>WAL: موجودی کافی

    MKT->>WAL: قفل کردن توکن
    WAL->>DB: Lock Token
    DB-->>WAL: توکن قفل شد

    MKT->>DB: ثبت سفارش (Status: Open)
    MKT-->>API: سفارش ثبت شد
    API-->>UI: سفارش در Order Book
    UI-->>S: سفارش شما ثبت شد

    Note over S,DB: خرید از بازار ثانویه (Taker)

    B->>UI: مشاهده بازار ثانویه
    UI->>API: دریافت Order Book
    API->>MKT: لیست سفارش‌های فروش
    MKT->>DB: Query سفارش‌های Open
    DB-->>MKT: لیست سفارش‌ها
    MKT-->>API: Order Book
    API-->>UI: نمایش سفارش‌ها
    UI-->>B: لیست سفارش‌های فروش

    B->>UI: انتخاب سفارش + تعداد
    UI->>API: ثبت درخواست خرید
    API->>MKT: Match Order

    MKT->>WAL: بررسی موجودی ریالی خریدار
    WAL->>DB: خواندن موجودی ریالی
    DB-->>WAL: موجودی کافی

    MKT->>MKT: محاسبه قیمت + کارمزد
    MKT->>WAL: کسر موجودی ریالی خریدار
    WAL->>DB: کسر ریال

    MKT->>WAL: انتقال توکن
    WAL->>WAL: آزادسازی قفل
    WAL->>GH: Transfer On-Chain
    GH->>GH: پردازش تراکنش
    GH-->>WAL: تأیید انتقال

    WAL->>DB: به‌روزرسانی موجودی توکن
    WAL->>DB: افزایش ریال فروشنده
    WAL->>DB: کسر کارمزد

    WAL-->>MKT: معامله تکمیل شد
    MKT->>DB: به‌روزرسانی وضعیت سفارش
    MKT-->>API: Trade موفق

    API->>UI: اعلان به خریدار
    UI-->>B: توکن خریداری شد

    API->>UI: اعلان به فروشنده
    UI-->>S: توکن شما فروخته شد

8. مشاهده دارایی‌ها و تاریخچه

شرح خلاصه

کاربران می‌توانند تمامی دارایی‌های خود (توکن‌ها و موجودی ریالی) را در یک داشبورد جامع مشاهده کنند. همچنین دسترسی کامل به تاریخچه تمام تراکنش‌ها (خرید، فروش، واریز، برداشت) با امکان فیلتر و جستجو وجود دارد. ارزش کل دارایی‌ها به صورت لحظه‌ای محاسبه و نمایش داده می‌شود.

بازیگران

  • کاربر (User)
  • سرویس کیف پول (Wallet Service)
  • سرویس بازار (Market Service)
  • بلاکچین ققنوس (Kuknos)

پیش‌نیازها

  • ورود به سیستم
  • داشتن حساب کاربری

جریان اصلی

  1. ورود به داشبورد پورتفولیو
  2. مشاهده موجودی تمام توکن‌ها
  3. مشاهده موجودی ریالی
  4. نمایش ارزش کل دارایی‌ها
  5. مشاهده تاریخچه تراکنش‌ها
  6. فیلتر بر اساس نوع تراکنش، تاریخ، توکن
  7. Export گزارش (PDF/Excel)

نتیجه

  • کاربر اطلاعات کامل دارایی‌های خود را مشاهده می‌کند
  • دسترسی به تاریخچه کامل تراکنش‌ها

Sequence Diagram

sequenceDiagram
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant WAL as Wallet Service
    participant MKT as Market Service
    participant GH as Kuknos Blockchain
    participant DB as Database

    Note over U,DB: مشاهده دارایی‌ها (Portfolio)

    U->>UI: ورود به داشبورد
    UI->>API: درخواست اطلاعات دارایی

    par دریافت موجودی توکن‌ها
        API->>WAL: دریافت موجودی توکن‌ها
        WAL->>GH: Query Balance On-Chain
        GH-->>WAL: موجودی توکن‌ها
        WAL->>MKT: دریافت قیمت لحظه‌ای
        MKT->>DB: Query آخرین قیمت‌ها
        DB-->>MKT: قیمت‌ها
        MKT-->>WAL: قیمت‌های لحظه‌ای
        WAL->>WAL: محاسبه ارزش توکن‌ها
        WAL-->>API: موجودی + ارزش توکن‌ها
    and دریافت موجودی ریالی
        API->>WAL: دریافت موجودی ریالی
        WAL->>DB: Query موجودی ریالی
        DB-->>WAL: موجودی ریالی
        WAL-->>API: موجودی ریالی
    end

    API->>API: محاسبه ارزش کل دارایی
    API-->>UI: اطلاعات کامل دارایی
    UI-->>U: نمایش پورتفولیو

    Note over U,DB: مشاهده تاریخچه تراکنش‌ها

    U->>UI: درخواست تاریخچه
    UI->>API: دریافت تاریخچه تراکنش‌ها

    API->>DB: Query تراکنش‌های کاربر
    DB-->>API: لیست تراکنش‌ها
    API-->>UI: تاریخچه کامل
    UI-->>U: نمایش تراکنش‌ها

    opt فیلتر کردن
        U->>UI: اعمال فیلتر (نوع/تاریخ/توکن)
        UI->>API: درخواست فیلتر شده
        API->>DB: Query با فیلتر
        DB-->>API: نتایج فیلتر شده
        API-->>UI: تراکنش‌های فیلتر شده
        UI-->>U: نمایش نتایج
    end

    opt دریافت جزئیات تراکنش
        U->>UI: انتخاب تراکنش
        UI->>API: درخواست جزئیات
        API->>DB: Query جزئیات تراکنش
        DB-->>API: اطلاعات کامل

        alt تراکنش On-Chain
            API->>WAL: دریافت اطلاعات بلاکچین
            WAL->>GH: Query Transaction
            GH-->>WAL: جزئیات On-Chain
            WAL-->>API: اطلاعات بلاکچین
        end

        API-->>UI: جزئیات کامل تراکنش
        UI-->>U: نمایش جزئیات
    end

    opt Export گزارش
        U->>UI: درخواست Export
        UI->>API: ایجاد گزارش
        API->>DB: دریافت داده‌ها
        DB-->>API: داده‌های گزارش
        API->>API: ایجاد فایل (PDF/Excel)
        API-->>UI: فایل گزارش
        UI-->>U: دانلود گزارش
    end

9. استفاده از کد تخفیف

شرح خلاصه

سیستم کد تخفیف امکان ایجاد کمپین‌های تخفیف را برای مدیران فراهم می‌کند. کاربران می‌توانند هنگام خرید توکن (در بازار اولیه یا ثانویه) از کدهای تخفیف استفاده کنند. کدها می‌توانند عمومی، شخصی، یا یکبار مصرف باشند. سیستم محدودیت‌های مختلفی مانند تاریخ انقضا، حداقل مبلغ خرید، و تعداد استفاده را پشتیبانی می‌کند.

بازیگران

  • کاربر (User)
  • Admin
  • سرویس بازار (Market Service)

پیش‌نیازها

  • کاربر: حساب کاربری فعال
  • Admin: ایجاد کد تخفیف معتبر

جریان اصلی

ایجاد کد تخفیف (Admin):

  1. ورود به پنل مدیریت
  2. ایجاد کد تخفیف جدید
  3. تعیین پارامترها (درصد/مبلغ، محدودیت‌ها)
  4. فعال‌سازی کد

استفاده از کد (User):

  1. انتخاب توکن برای خرید
  2. وارد کردن کد تخفیف
  3. اعتبارسنجی کد
  4. اعمال تخفیف
  5. تکمیل خرید با قیمت تخفیف‌خورده

نتیجه

  • تخفیف به خرید اعمال می‌شود
  • تعداد استفاده کد به‌روزرسانی می‌شود

Sequence Diagram

sequenceDiagram
    participant A as Admin
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant MKT as Market Service
    participant DB as Database

    Note over A,DB: ایجاد کد تخفیف توسط Admin

    A->>UI: ورود به پنل مدیریت
    A->>UI: ایجاد کد تخفیف جدید
    UI->>API: ثبت کد تخفیف
    API->>MKT: ایجاد کد

    MKT->>MKT: تولید کد منحصر به فرد
    MKT->>DB: ذخیره کد + پارامترها
    Note right of DB: پارامترها:<br/>- درصد/مبلغ تخفیف<br/>- تاریخ شروع/پایان<br/>- حداقل مبلغ<br/>- حداکثر تعداد استفاده<br/>- نوع (عمومی/شخصی)

    MKT-->>API: کد ایجاد شد
    API-->>UI: تأیید ایجاد
    UI-->>A: کد تخفیف فعال شد

    Note over A,DB: استفاده از کد تخفیف توسط کاربر

    U->>UI: شروع فرآیند خرید توکن
    UI->>API: ایجاد سفارش
    API->>MKT: محاسبه قیمت اولیه
    MKT-->>API: قیمت بدون تخفیف
    API-->>UI: نمایش قیمت

    U->>UI: وارد کردن کد تخفیف
    UI->>API: اعتبارسنجی کد
    API->>MKT: بررسی اعتبار کد

    MKT->>DB: Query کد تخفیف
    DB-->>MKT: اطلاعات کد

    MKT->>MKT: بررسی شرایط
    Note right of MKT: بررسی:<br/>- کد معتبر است؟<br/>- منقضی نشده؟<br/>- ظرفیت دارد؟<br/>- مبلغ کافی است؟<br/>- کاربر مجاز است؟

    alt کد معتبر
        MKT->>MKT: محاسبه تخفیف
        MKT-->>API: تخفیف + قیمت نهایی
        API-->>UI: نمایش قیمت با تخفیف
        UI-->>U: تخفیف اعمال شد

        U->>UI: تأیید خرید
        UI->>API: تکمیل سفارش
        API->>MKT: ثبت سفارش با تخفیف

        MKT->>DB: ثبت سفارش
        MKT->>DB: افزایش تعداد استفاده کد
        MKT->>DB: ثبت سابقه استفاده

        MKT-->>API: سفارش ثبت شد
        API-->>UI: خرید موفق
        UI-->>U: خرید با تخفیف انجام شد

    else کد نامعتبر
        MKT-->>API: خطای اعتبارسنجی
        Note right of API: انواع خطا:<br/>- کد وجود ندارد<br/>- منقضی شده<br/>- ظرفیت تمام شده<br/>- مبلغ کمتر از حداقل<br/>- کاربر مجاز نیست
        API-->>UI: پیام خطا
        UI-->>U: کد تخفیف نامعتبر
    end

    Note over A,DB: مشاهده گزارش استفاده (Admin)

    A->>UI: مشاهده گزارش کدهای تخفیف
    UI->>API: درخواست آمار
    API->>MKT: دریافت گزارش
    MKT->>DB: Query آمار استفاده
    DB-->>MKT: آمار کامل
    MKT-->>API: گزارش
    API-->>UI: نمایش آمار
    UI-->>A: آمار و گزارش کدها

Use Case های سمت مدیریت

10. صدور توکن و تخصیص اولیه

شرح خلاصه

مدیران سیستم می‌توانند توکن‌های جدید برای دارایی‌های واقعی ایجاد کنند. این فرآیند شامل تعریف مشخصات توکن (نام، نماد، تعداد کل)، صدور On-Chain روی بلاکچین ققنوس، و تخصیص اولیه به کیف پول سیستم است. تمام عملیات با سیستم ABAC (Attribute-Based Access Control) کنترل می‌شوند.

بازیگران

  • Admin/Asset Manager
  • سرویس کیف پول (Wallet Service)
  • بلاکچین ققنوس (Kuknos)

پیش‌نیازها

  • دسترسی Admin با نقش Asset Manager
  • مجوز ABAC برای صدور توکن
  • اطلاعات کامل دارایی

جریان اصلی

  1. ورود به پنل مدیریت
  2. ایجاد پروژه/دارایی جدید
  3. تعریف مشخصات توکن
  4. تأیید و صدور توکن
  5. ایجاد توکن روی بلاکچین
  6. تخصیص اولیه به کیف پول سیستم
  7. ایجاد سفارش فروش در بازار اولیه

نتیجه

  • توکن جدید روی بلاکچین صادر می‌شود
  • توکن آماده فروش در بازار اولیه است

Sequence Diagram

sequenceDiagram
    participant A as Admin
    participant UI as Admin Panel
    participant API as API Gateway
    participant AUTH as Auth Service
    participant WAL as Wallet Service
    participant MKT as Market Service
    participant GH as Kuknos Blockchain
    participant DB as Database

    A->>UI: ورود به پنل مدیریت
    UI->>API: درخواست احراز هویت
    API->>AUTH: بررسی نقش و دسترسی

    AUTH->>AUTH: RBAC + ABAC Check
    Note right of AUTH: بررسی:<br/>- نقش: Asset Manager<br/>- Policy: Token Issuance<br/>- Scope: Project Level

    alt دسترسی مجاز
        AUTH-->>API: دسترسی تأیید شد
        API-->>UI: ورود موفق

        A->>UI: ایجاد پروژه جدید
        UI->>API: ثبت پروژه
        API-->>UI: فرم مشخصات توکن

        A->>UI: تکمیل اطلاعات توکن
        Note right of A: اطلاعات:<br/>- نام توکن<br/>- نماد (Symbol)<br/>- تعداد کل (Total Supply)<br/>- توضیحات<br/>- قیمت اولیه<br/>- اطلاعات دارایی

        UI->>API: ثبت اطلاعات
        API->>MKT: ایجاد پروژه
        MKT->>DB: ذخیره اطلاعات پروژه
        MKT-->>API: پروژه ایجاد شد

        A->>UI: تأیید صدور توکن
        UI->>API: درخواست صدور
        API->>WAL: Issue Token

        WAL->>WAL: آماده‌سازی تراکنش
        WAL->>GH: صدور توکن On-Chain
        Note right of GH: عملیات بلاکچین:<br/>- ایجاد Asset<br/>- Set Asset Options<br/>- Minting

        GH->>GH: پردازش تراکنش
        GH-->>WAL: تأیید صدور

        WAL->>DB: ثبت اطلاعات توکن
        WAL->>DB: ذخیره Transaction Hash
        WAL-->>API: صدور موفق

        API->>MKT: فعال‌سازی پروژه
        MKT->>DB: به‌روزرسانی وضعیت
        Note right of DB: وضعیت: Active<br/>موجودی: Total Supply<br/>قابل فروش: Yes

        MKT-->>API: پروژه فعال شد
        API-->>UI: توکن صادر شد
        UI-->>A: توکن با موفقیت ایجاد شد

    else دسترسی غیرمجاز
        AUTH-->>API: خطای دسترسی
        API-->>UI: عدم مجوز
        UI-->>A: شما مجوز این عملیات را ندارید
    end

    opt تخصیص اولیه به کیف پول‌های خاص
        A->>UI: تخصیص به کیف پول‌ها
        UI->>API: لیست تخصیص‌ها
        API->>WAL: انتقال توکن‌ها

        loop برای هر تخصیص
            WAL->>GH: Transfer On-Chain
            GH-->>WAL: تأیید انتقال
            WAL->>DB: ثبت تخصیص
        end

        WAL-->>API: تخصیص‌ها انجام شد
        API-->>UI: تأیید
        UI-->>A: تخصیص اولیه انجام شد
    end

11. مدیریت بازخرید

شرح خلاصه

مدیران می‌توانند درخواست‌های بازخرید توکن از کاربران را مدیریت کنند. این شامل تعیین قیمت بازخرید، بررسی و تأیید درخواست‌ها، و پردازش خودکار یا دستی بازخرید است. سیستم از تنظیمات بازخرید خودکار (Auto Buy-Back) نیز پشتیبانی می‌کند.

بازیگران

  • Admin/Asset Manager
  • کاربر (User)
  • سرویس بازار (Market Service)
  • سرویس کیف پول (Wallet Service)

پیش‌نیازها

  • توکن قابل بازخرید
  • تنظیمات بازخرید فعال
  • موجودی ریالی کافی در سیستم

جریان اصلی

  1. تنظیم پارامترهای بازخرید (قیمت، محدودیت‌ها)
  2. دریافت درخواست بازخرید از کاربر
  3. بررسی شرایط (Lock Period, etc.)
  4. تأیید یا رد درخواست
  5. دریافت توکن از کاربر
  6. پرداخت معادل ریالی

نتیجه

  • توکن به سیستم بازمی‌گردد
  • وجه به حساب کاربر واریز می‌شود

Sequence Diagram

sequenceDiagram
    participant A as Admin
    participant U as کاربر
    participant UI as رابط کاربری
    participant API as API Gateway
    participant MKT as Market Service
    participant WAL as Wallet Service
    participant GH as Kuknos Blockchain
    participant DB as Database

    Note over A,DB: تنظیم پارامترهای بازخرید

    A->>UI: ورود به پنل مدیریت
    A->>UI: تنظیمات بازخرید توکن
    UI->>API: به‌روزرسانی تنظیمات
    API->>MKT: ذخیره پارامترها

    MKT->>DB: ذخیره تنظیمات
    Note right of DB: تنظیمات:<br/>- قیمت بازخرید<br/>- بازخرید خودکار<br/>- حداقل/حداکثر مقدار<br/>- Lock Period<br/>- کارمزد بازخرید

    MKT-->>API: تنظیمات ذخیره شد
    API-->>UI: تأیید
    UI-->>A: بازخرید فعال شد

    Note over A,DB: درخواست بازخرید توسط کاربر

    U->>UI: درخواست بازخرید توکن
    UI->>API: ثبت درخواست
    API->>MKT: بررسی امکان بازخرید

    MKT->>DB: خواندن تنظیمات
    DB-->>MKT: پارامترهای بازخرید

    MKT->>WAL: بررسی موجودی کاربر
    WAL->>GH: Query Balance
    GH-->>WAL: موجودی توکن

    MKT->>MKT: بررسی شرایط
    Note right of MKT: بررسی:<br/>- توکن قابل بازخرید؟<br/>- Lock Period سپری شده؟<br/>- مقدار در محدوده؟<br/>- موجودی کافی؟

    alt شرایط برقرار
        MKT->>MKT: محاسبه قیمت بازخرید
        MKT->>DB: ثبت درخواست (Pending)
        MKT-->>API: درخواست ثبت شد
        API-->>UI: منتظر تأیید
        UI-->>U: درخواست شما ثبت شد

        alt بازخرید خودکار فعال
            MKT->>MKT: تأیید خودکار
            MKT->>WAL: پردازش بازخرید

            WAL->>GH: دریافت توکن از کاربر
            GH->>GH: پردازش تراکنش
            GH-->>WAL: توکن دریافت شد

            WAL->>DB: افزایش موجودی ریالی کاربر
            WAL->>DB: کسر موجودی ریالی سیستم
            WAL->>DB: کسر کارمزد

            MKT->>DB: به‌روزرسانی وضعیت (Completed)
            MKT-->>API: بازخرید انجام شد
            API->>UI: نوتیفیکیشن
            UI-->>U: بازخرید موفق

        else بازخرید دستی
            Note over A,DB: بررسی و تأیید توسط Admin

            A->>UI: مشاهده درخواست‌های بازخرید
            UI->>API: لیست درخواست‌های Pending
            API->>MKT: Query درخواست‌ها
            MKT->>DB: لیست Pending
            DB-->>MKT: درخواست‌ها
            MKT-->>API: لیست
            API-->>UI: نمایش
            UI-->>A: درخواست‌های بازخرید

            A->>UI: بررسی + تصمیم

            alt تأیید بازخرید
                A->>UI: تأیید درخواست
                UI->>API: تأیید بازخرید
                API->>MKT: پردازش بازخرید

                MKT->>WAL: انتقال توکن
                WAL->>GH: Transfer On-Chain
                GH-->>WAL: تأیید
                WAL->>DB: به‌روزرسانی موجودی‌ها

                MKT->>DB: وضعیت: Approved
                MKT-->>API: تأیید شد
                API->>UI: نوتیفیکیشن به کاربر
                UI-->>U: بازخرید تأیید شد

            else رد بازخرید
                A->>UI: رد درخواست + دلیل
                UI->>API: رد بازخرید
                API->>MKT: ثبت رد
                MKT->>DB: وضعیت: Rejected
                MKT-->>API: رد شد
                API->>UI: نوتیفیکیشن
                UI-->>U: درخواست رد شد
            end
        end

    else شرایط برقرار نیست
        MKT-->>API: خطا
        API-->>UI: پیام خطا
        UI-->>U: امکان بازخرید وجود ندارد
    end

12. مدیریت سفارش‌ها و بازار

شرح خلاصه

مدیران می‌توانند بازار را کنترل و نظارت کنند. این شامل مشاهده تمام سفارش‌های فعال، لغو سفارش‌های مشکوک، تنظیم کارمزدهای Maker/Taker، مدیریت Order Book، و کنترل نقدینگی بازار است. سیستم گزارش‌های جامعی از حجم معاملات، قیمت‌ها، و فعالیت کاربران ارائه می‌دهد.

بازیگران

  • Admin/Market Operator
  • سرویس بازار (Market Service)

پیش‌نیازها

  • دسترسی Admin با نقش Market Operator
  • مجوز ABAC برای مدیریت بازار

جریان اصلی

  1. مشاهده Order Book و سفارش‌های فعال
  2. مدیریت سفارش‌ها (لغو، تعلیق)
  3. تنظیم کارمزدها
  4. مشاهده آمار و گزارشات
  5. کنترل نقدینگی
  6. تنظیمات امنیتی (حد معامله، KYC Level)

نتیجه

  • بازار به صورت سالم و شفاف عمل می‌کند
  • گزارش‌های کامل در دسترس است

Sequence Diagram

sequenceDiagram
    participant A as Admin
    participant UI as Admin Panel
    participant API as API Gateway
    participant AUTH as Auth Service
    participant MKT as Market Service
    participant DB as Database

    A->>UI: ورود به پنل مدیریت بازار
    UI->>API: درخواست احراز هویت
    API->>AUTH: بررسی دسترسی
    AUTH->>AUTH: RBAC + ABAC Check
    AUTH-->>API: دسترسی تأیید شد
    API-->>UI: ورود موفق

    Note over A,DB: مشاهده و مدیریت سفارش‌ها

    A->>UI: مشاهده Order Book
    UI->>API: درخواست سفارش‌های فعال
    API->>MKT: دریافت Order Book
    MKT->>DB: Query سفارش‌های Open
    DB-->>MKT: لیست سفارش‌ها
    MKT->>MKT: تحلیل و آماده‌سازی
    MKT-->>API: Order Book کامل
    API-->>UI: نمایش
    UI-->>A: لیست سفارش‌های فعال

    opt مدیریت سفارش خاص
        A->>UI: انتخاب سفارش
        UI->>API: درخواست جزئیات
        API->>MKT: اطلاعات کامل سفارش
        MKT->>DB: Query جزئیات
        DB-->>MKT: اطلاعات کامل
        MKT-->>API: جزئیات سفارش
        API-->>UI: نمایش جزئیات
        UI-->>A: اطلاعات سفارش

        alt لغو سفارش
            A->>UI: لغو سفارش + دلیل
            UI->>API: درخواست لغو
            API->>MKT: Cancel Order
            MKT->>DB: به‌روزرسانی وضعیت
            MKT->>DB: آزادسازی توکن قفل شده
            MKT-->>API: سفارش لغو شد
            API->>UI: نوتیفیکیشن به کاربر
            UI-->>A: سفارش لغو شد
        end
    end

    Note over A,DB: تنظیم کارمزدها

    A->>UI: تنظیمات کارمزد
    UI->>API: درخواست تنظیمات فعلی
    API->>MKT: دریافت کارمزدها
    MKT->>DB: Query تنظیمات
    DB-->>MKT: کارمزدهای فعلی
    MKT-->>API: تنظیمات
    API-->>UI: نمایش کارمزدها
    UI-->>A: کارمزدهای فعلی

    A->>UI: تغییر کارمزدها
    Note right of A: تنظیمات:<br/>- Maker Fee<br/>- Taker Fee<br/>- کارمزد بر اساس توکن<br/>- تخفیف حجمی

    UI->>API: ذخیره کارمزدهای جدید
    API->>MKT: به‌روزرسانی
    MKT->>DB: ذخیره تنظیمات
    MKT-->>API: تأیید
    API-->>UI: کارمزدها به‌روز شدند
    UI-->>A: تنظیمات ذخیره شد

    Note over A,DB: مشاهده آمار و گزارشات

    A->>UI: درخواست گزارش بازار
    UI->>API: دریافت آمار
    API->>MKT: تولید گزارش

    par جمع‌آوری داده‌ها
        MKT->>DB: حجم معاملات
        DB-->>MKT: آمار معاملات
    and
        MKT->>DB: تعداد کاربران فعال
        DB-->>MKT: آمار کاربران
    and
        MKT->>DB: میانگین قیمت‌ها
        DB-->>MKT: آمار قیمت
    and
        MKT->>DB: کارمزدهای دریافتی
        DB-->>MKT: آمار کارمزد
    end

    MKT->>MKT: تحلیل و تجمیع
    MKT-->>API: گزارش کامل
    API-->>UI: نمایش گزارش
    UI-->>A: آمار و تحلیل بازار

    Note over A,DB: کنترل نقدینگی

    A->>UI: مدیریت نقدینگی
    UI->>API: وضعیت نقدینگی
    API->>MKT: تحلیل نقدینگی
    MKT->>DB: موجودی‌های سیستم
    DB-->>MKT: موجودی‌ها
    MKT->>MKT: محاسبه Liquidity Ratio
    MKT-->>API: وضعیت نقدینگی
    API-->>UI: نمایش
    UI-->>A: تحلیل نقدینگی

    opt تنظیمات امنیتی
        A->>UI: تنظیمات امنیتی بازار
        Note right of A: تنظیمات:<br/>- حداکثر مبلغ معامله<br/>- KYC Level مورد نیاز<br/>- محدودیت روزانه<br/>- فیلترهای ضد تقلب

        UI->>API: به‌روزرسانی تنظیمات
        API->>MKT: ذخیره تنظیمات امنیتی
        MKT->>DB: ذخیره
        MKT-->>API: تأیید
        API-->>UI: تنظیمات ذخیره شد
        UI-->>A: تنظیمات امنیتی فعال شد
    end

13. مدیریت کاربران و گزارشات

شرح خلاصه

مدیران می‌توانند کاربران را مدیریت کنند، شامل مشاهده اطلاعات کاربران، وضعیت KYC، تاریخچه فعالیت‌ها، مسدودسازی یا فعال‌سازی حساب‌ها، و دسترسی به گزارشات جامع مالی و عملیاتی. سیستم از فیلترهای پیشرفته و امکان Export گزارشات پشتیبانی می‌کند.

بازیگران

  • Admin/User Manager
  • سرویس احراز هویت (Auth Service)
  • سرویس مالی (Wallet Service)

پیش‌نیازها

  • دسترسی Admin با نقش User Manager
  • مجوز RBAC/ABAC

جریان اصلی

  1. جستجو و فیلتر کاربران
  2. مشاهده جزئیات کاربر
  3. بررسی وضعیت KYC
  4. مشاهده تاریخچه فعالیت‌ها
  5. مدیریت وضعیت حساب (فعال/غیرفعال/مسدود)
  6. تولید گزارشات سفارشی
  7. Export داده‌ها

نتیجه

  • مدیریت کامل کاربران
  • دسترسی به گزارشات جامع

Sequence Diagram

sequenceDiagram
    participant A as Admin
    participant UI as Admin Panel
    participant API as API Gateway
    participant AUTH as Auth Service
    participant WAL as Wallet Service
    participant MKT as Market Service
    participant DB as Database

    A->>UI: ورود به پنل مدیریت کاربران
    UI->>API: احراز هویت
    API->>AUTH: بررسی دسترسی
    AUTH-->>API: دسترسی تأیید شد
    API-->>UI: ورود موفق

    Note over A,DB: جستجو و مشاهده کاربران

    A->>UI: جستجوی کاربر
    Note right of A: فیلترها:<br/>- شماره موبایل<br/>- کدملی<br/>- وضعیت KYC<br/>- تاریخ ثبت‌نام<br/>- سطح فعالیت

    UI->>API: درخواست لیست کاربران
    API->>AUTH: Query کاربران
    AUTH->>DB: جستجو با فیلتر
    DB-->>AUTH: لیست کاربران
    AUTH-->>API: نتایج
    API-->>UI: نمایش لیست
    UI-->>A: لیست کاربران

    Note over A,DB: مشاهده جزئیات کاربر

    A->>UI: انتخاب کاربر
    UI->>API: درخواست اطلاعات کامل

    par دریافت اطلاعات
        API->>AUTH: اطلاعات هویتی
        AUTH->>DB: Query اطلاعات کاربر
        DB-->>AUTH: اطلاعات + وضعیت KYC
        AUTH-->>API: اطلاعات هویتی
    and
        API->>WAL: اطلاعات مالی
        WAL->>DB: موجودی‌ها
        DB-->>WAL: موجودی توکن + ریال
        WAL-->>API: اطلاعات مالی
    and
        API->>MKT: تاریخچه معاملات
        MKT->>DB: Query تراکنش‌ها
        DB-->>MKT: تاریخچه
        MKT-->>API: تراکنش‌ها
    end

    API->>API: تجمیع اطلاعات
    API-->>UI: پروفایل کامل کاربر
    UI-->>A: نمایش اطلاعات کامل

    Note over A,DB: بررسی وضعیت KYC

    A->>UI: مشاهده جزئیات KYC
    UI->>API: درخواست اطلاعات KYC
    API->>AUTH: اطلاعات احراز هویت
    AUTH->>DB: Query KYC Data
    DB-->>AUTH: اطلاعات KYC
    Note right of DB: اطلاعات:<br/>- وضعیت (تأیید/رد/در انتظار)<br/>- اطلاعات شاهکار<br/>- اطلاعات بانکی<br/>- مدارک ارسالی<br/>- تاریخ احراز

    AUTH-->>API: اطلاعات کامل KYC
    API-->>UI: نمایش
    UI-->>A: جزئیات احراز هویت

    opt تغییر وضعیت KYC
        A->>UI: تأیید/رد KYC
        UI->>API: به‌روزرسانی وضعیت
        API->>AUTH: تغییر وضعیت KYC
        AUTH->>DB: Update KYC Status
        AUTH-->>API: تأیید
        API->>UI: نوتیفیکیشن به کاربر
        UI-->>A: وضعیت به‌روز شد
    end

    Note over A,DB: مدیریت وضعیت حساب

    A->>UI: تغییر وضعیت حساب
    Note right of A: عملیات ممکن:<br/>- فعال‌سازی<br/>- غیرفعال‌سازی<br/>- مسدودسازی موقت<br/>- مسدودسازی دائم

    UI->>API: درخواست تغییر وضعیت
    API->>AUTH: به‌روزرسانی وضعیت
    AUTH->>DB: Update Account Status

    alt مسدودسازی حساب
        AUTH->>WAL: قفل کردن دارایی‌ها
        WAL->>DB: Lock Assets
        WAL-->>AUTH: دارایی‌ها قفل شدند

        AUTH->>MKT: لغو سفارش‌های فعال
        MKT->>DB: Cancel Active Orders
        MKT-->>AUTH: سفارش‌ها لغو شدند
    end

    AUTH-->>API: وضعیت تغییر کرد
    API->>UI: نوتیفیکیشن
    UI-->>A: حساب کاربر به‌روز شد

    Note over A,DB: تولید گزارشات

    A->>UI: درخواست گزارش سفارشی
    Note right of A: گزارشات:<br/>- کاربران جدید<br/>- حجم معاملات<br/>- کارمزدهای دریافتی<br/>- وضعیت KYC<br/>- تراکنش‌های مشکوک

    UI->>API: پارامترهای گزارش
    API->>AUTH: جمع‌آوری داده‌ها

    par دریافت داده‌های مختلف
        AUTH->>DB: آمار کاربران
        DB-->>AUTH: داده‌های کاربری
    and
        API->>WAL: آمار مالی
        WAL->>DB: داده‌های مالی
        DB-->>WAL: آمار
        WAL-->>API: اطلاعات مالی
    and
        API->>MKT: آمار معاملات
        MKT->>DB: داده‌های معاملاتی
        DB-->>MKT: آمار
        MKT-->>API: اطلاعات معاملات
    end

    AUTH-->>API: داده‌های کاربری
    API->>API: تجمیع و تحلیل
    API-->>UI: گزارش نهایی
    UI-->>A: نمایش گزارش

    opt Export گزارش
        A->>UI: درخواست Export (PDF/Excel/CSV)
        UI->>API: تولید فایل
        API->>API: ایجاد فایل Export
        API-->>UI: فایل آماده
        UI-->>A: دانلود گزارش
    end

    Note over A,DB: مشاهده فعالیت‌های مشکوک

    A->>UI: بررسی فعالیت‌های مشکوک
    UI->>API: درخواست تراکنش‌های مشکوک
    API->>MKT: تحلیل الگوهای غیرعادی

    MKT->>DB: Query تراکنش‌ها
    Note right of MKT: الگوهای مشکوک:<br/>- حجم غیرعادی<br/>- قیمت غیرمنطقی<br/>- فعالیت همزمان<br/>- wash trading

    DB-->>MKT: تراکنش‌های مشکوک
    MKT-->>API: لیست فعالیت‌ها
    API-->>UI: نمایش
    UI-->>A: فعالیت‌های مشکوک

14. پیکربندی و پایش سامانه

شرح خلاصه

مدیران سیستم می‌توانند تنظیمات کلی سامانه را پیکربندی کنند و سلامت سیستم را پایش نمایند. این شامل مانیتورینگ سرویس‌ها، مشاهده لاگ‌ها، تنظیم پارامترهای سیستم، مدیریت اتصال به بلاکچین، و دریافت آلارم‌های امنیتی و عملیاتی است. از ابزارهایی مانند Prometheus، Grafana، و Portainer استفاده می‌شود.

بازیگران

  • System Admin/DevOps
  • Prometheus
  • Grafana
  • Portainer
  • تمام سرویس‌های سیستم

پیش‌نیازها

  • دسترسی System Admin
  • دسترسی به ابزارهای مانیتورینگ

جریان اصلی

  1. مشاهده وضعیت سرویس‌ها (Health Check)
  2. مانیتورینگ منابع (CPU, Memory, Disk)
  3. بررسی لاگ‌های سیستم
  4. تنظیم پارامترهای سیستمی
  5. مدیریت اتصال بلاکچین
  6. دریافت و مدیریت آلارم‌ها
  7. Backup و Recovery

نتیجه

  • سیستم به صورت بهینه عمل می‌کند
  • مشکلات به موقع شناسایی می‌شوند

Sequence Diagram

sequenceDiagram
    participant A as System Admin
    participant UI as Admin Panel
    participant PORT as Portainer
    participant PROM as Prometheus
    participant GRAF as Grafana
    participant ALERT as Alertmanager
    participant API as API Gateway
    participant WAL as Wallet Service
    participant GH as Kuknos Blockchain
    participant DB as Database

    Note over A,DB: مانیتورینگ وضعیت سرویس‌ها

    A->>UI: ورود به داشبورد مانیتورینگ
    UI->>GRAF: درخواست داشبورد

    GRAF->>PROM: Query Metrics

    par جمع‌آوری Metrics
        PROM->>API: /metrics
        API-->>PROM: API Metrics
    and
        PROM->>WAL: /metrics
        WAL-->>PROM: Wallet Metrics
    and
        PROM->>DB: Database Metrics
        DB-->>PROM: DB Metrics
    end

    PROM-->>GRAF: تمام Metrics
    GRAF->>GRAF: ایجاد نمودارها
    GRAF-->>UI: داشبورد
    UI-->>A: نمایش وضعیت سیستم

    Note over A,DB: Health Check سرویس‌ها

    A->>UI: بررسی سلامت سرویس‌ها
    UI->>PORT: لیست کانتینرها
    PORT-->>UI: وضعیت کانتینرها

    par بررسی Health
        UI->>API: /health
        API->>API: Self Check
        API->>DB: Ping Database
        DB-->>API: OK
        API-->>UI: Status: Healthy
    and
        UI->>WAL: /health
        WAL->>GH: Check Connection
        GH-->>WAL: OK
        WAL->>DB: Ping DB
        DB-->>WAL: OK
        WAL-->>UI: Status: Healthy
    end

    UI-->>A: همه سرویس‌ها سالم هستند

    Note over A,DB: بررسی اتصال بلاکچین

    A->>UI: بررسی وضعیت ققنوس
    UI->>WAL: Blockchain Status
    WAL->>GH: Network Info
    GH-->>WAL: Network Status
    Note right of GH: اطلاعات:<br/>- وضعیت شبکه<br/>- آخرین بلاک<br/>- زمان پاسخ<br/>- تعداد تراکنش‌های pending

    WAL->>GH: Test Transaction
    GH-->>WAL: Transaction Success
    WAL-->>UI: وضعیت بلاکچین
    UI-->>A: اتصال بلاکچین سالم است

    Note over A,DB: مشاهده و تحلیل لاگ‌ها

    A->>UI: مشاهده لاگ‌ها
    UI->>PORT: درخواست لاگ‌ها

    alt لاگ سرویس خاص
        PORT->>API: docker logs
        API-->>PORT: Logs
        PORT-->>UI: نمایش لاگ‌ها
    else لاگ‌های خطا
        PORT->>PROM: Query Error Logs
        PROM-->>PORT: Error Logs
        PORT-->>UI: نمایش خطاها
    end

    UI-->>A: لاگ‌های سیستم

    Note over A,DB: تنظیم پارامترهای سیستم

    A->>UI: تنظیمات سیستم
    UI->>API: درخواست تنظیمات فعلی
    API->>DB: Query Config
    DB-->>API: تنظیمات
    API-->>UI: نمایش
    UI-->>A: تنظیمات فعلی

    A->>UI: تغییر پارامترها
    Note right of A: پارامترها:<br/>- حداکثر درخواست/دقیقه<br/>- Timeout تراکنش‌ها<br/>- Cache TTL<br/>- تنظیمات امنیتی<br/>- فیچرهای فعال/غیرفعال

    UI->>API: به‌روزرسانی تنظیمات
    API->>DB: ذخیره Config جدید
    API->>API: Reload Configuration
    API-->>UI: تنظیمات اعمال شد
    UI-->>A: تنظیمات به‌روز شدند

    Note over A,DB: مدیریت آلارم‌ها

    PROM->>PROM: بررسی شرایط آلارم
    Note right of PROM: شرایط آلارم:<br/>- CPU > 80%<br/>- Memory > 90%<br/>- Disk < 10% free<br/>- Error Rate > threshold<br/>- Response Time > 5s

    alt آلارم فعال شد
        PROM->>ALERT: Trigger Alert
        ALERT->>ALERT: بررسی قوانین
        ALERT->>A: ارسال اعلان (Email/SMS/Telegram)

        A->>UI: بررسی آلارم
        UI->>GRAF: مشاهده نمودارها
        GRAF->>PROM: Query Metrics
        PROM-->>GRAF: داده‌های دقیق
        GRAF-->>UI: نمودار مشکل
        UI-->>A: تشخیص مشکل

        A->>UI: اقدام اصلاحی
        alt راه‌اندازی مجدد سرویس
            UI->>PORT: Restart Service
            PORT->>PORT: Restart Container
            PORT-->>UI: سرویس راه‌اندازی شد
        else افزایش منابع
            UI->>PORT: Scale Service
            PORT-->>UI: منابع افزایش یافت
        end

        UI-->>A: مشکل برطرف شد
        A->>ALERT: تأیید رفع مشکل
        ALERT->>ALERT: Close Alert
    end

    Note over A,DB: Backup و Recovery

    A->>UI: مدیریت Backup
    UI->>API: وضعیت آخرین Backup
    API->>DB: Query Backup Info
    DB-->>API: اطلاعات Backup
    API-->>UI: نمایش
    UI-->>A: وضعیت Backup

    opt ایجاد Backup دستی
        A->>UI: ایجاد Backup
        UI->>API: درخواست Backup
        API->>DB: Create Backup
        DB->>DB: Dump Database
        DB-->>API: Backup Created
        API-->>UI: Backup موفق
        UI-->>A: Backup ایجاد شد
    end

    opt بازیابی از Backup
        A->>UI: بازیابی از Backup
        UI->>API: لیست Backup ها
        API->>DB: Query Backups
        DB-->>API: لیست
        API-->>UI: نمایش
        UI-->>A: انتخاب Backup

        A->>UI: تأیید بازیابی
        UI->>API: Restore Backup
        API->>DB: Restore از فایل
        DB->>DB: بازیابی داده‌ها
        DB-->>API: Restore Complete
        API-->>UI: بازیابی موفق
        UI-->>A: سیستم بازیابی شد
    end