{
  "title": "جریان داده‌ها در زمان اجرا (Official Data Flow)",
  "slug": "team/frontend/architecture/data-flow",
  "url": "/docs/team/frontend/architecture/data-flow",
  "frontmatter": {
    "layout": "doc",
    "title": "جریان رسمی داده‌ها (Data Flow)",
    "description": "مسیر پردازش، بارگذاری تنظیمات پلتفرم و حرکت رویدادها در زمان اجرای برنامه",
    "version": "1.1.0",
    "status": "PRIVATE",
    "author": "Antigravity",
    "owner": "xoxxel",
    "created_at": "2026-06-30",
    "updated_at": "2026-06-30",
    "tags": "",
    "reviewers": ""
  },
  "sections": [
    {
      "level": 1,
      "heading": "جریان داده‌ها در زمان اجرا (Official Data Flow)",
      "content": "این مستند جریان چرخش داده‌ها و چرخه حیات بارگذاری پلتفرم Nons را در زمان اجرای فرانت‌بند (Runtime) تشریح می‌کند.\n\n---"
    },
    {
      "level": 2,
      "heading": "۱. چرخه حیات کلان و بارگذاری پیکربندی",
      "content": "هنگام راه‌اندازی فرانت‌بند، سیستم از زنجیره سلسله‌مراتبی زیر برای خواندن پیکربندی‌ها، آماده‌سازی قالب‌ها و ارسال درخواست‌ها استفاده می‌کند:\n\n```mermaid\ngraph TD\n    NonsConfig[.nons Configuration / فایل‌های تنظیمات پلتفرم] --> Loader[Runtime Loader / بارگذار زمان اجرا]\n    Loader --> App[Application / اجرای بدنه برنامه]\n    App --> Renderer[Template / Renderer / قالب‌ساز و رندرر]\n    Renderer --> UIKit[UI Kit / کیت طراحی کامپوننت]\n    UIKit --> Registry[Registry / لایه واسط رجیستری]\n    Registry --> GeneratedAPI[API Client / کدهای تولیدشده]\n    GeneratedAPI --> Backend[Backend / سرور اصلی وب]\n```"
    },
    {
      "level": 3,
      "heading": "تشریح زنجیره اجرای زمان اجرا (Runtime Lifecycle)",
      "content": "1. **مرحله بارگذاری تنظیمات (.nons Configuration):**\n   در بدو اجرای وب‌سایت، فایل‌های پیکربندی پروژه (از جمله `config.yaml` ،`theme.yaml` و `navigation.yaml`) خوانده می‌شوند.\n2. **مرحله راه‌انداز زمان اجرا (Runtime Loader):**\n   بارگذار سیستم کدهای پیکربندی را تحلیل کرده، توکن‌های پوسته، زبان سیستم، ساختار منوها و نگاشت رجیستری‌ها را در حافظه زمان اجرا بارگذاری می‌کند.\n3. **مرحله برنامه (Application):**\n   برنامه کلاینت (درون پوشه `src/`) با استفاده از داده‌های بارگذاری‌شده آغاز به کار می‌کند.\n4. **مرحله قالب و رندرینگ (Template / Renderer):**\n   برنامه بر اساس شِمای صفحات، قالب‌ها (`Templates`) و پوسته‌های ساختاری را فراخوانی و ساختار بصری را آماده می‌کند.\n5. **مرحله کیت رابط کاربری (UI Kit):**\n   کامپوننت‌های پایه (لایه `components/`) استایل‌ها و متون خود را از توکن‌های تم و لوکال سیستم طراحی دریافت کرده و ظاهر صفحه را رندر می‌کنند.\n6. **مرحله رجیستری (Registry):**\n    لایه واسط رجیستری (مطابق [الگوی رجیستری](./registry-pattern)) فراخوانی‌های صفحات را به متدهای API Client هدایت می‌کند. این لایه خطاها را قالب‌بندی کرده و خروجی تمیز به صفحه تحویل می‌دهد.\n7. **مرحله ارتباطات شبکه (API Client):**\n    کدهای API Client تولیدشده (توسط `nons generate` در `.nons/generated/api-client/`) متدهای تایپ‌پذیر را با Mapping خودکار فرمت داده فراخوانی کرده و درخواست‌های HTTP به سمت بک‌اند ارسال می‌کند.\n\n---"
    },
    {
      "level": 2,
      "heading": "۲. جریان رویدادها در تعاملات کاربری (User Event Flow)",
      "content": "هنگامی که کاربر تعاملی با صفحه ایجاد می‌کند (مانند کلیک روی دکمه ثبت فرم)، اطلاعات و پاسخ‌ها مسیر زیر را طی می‌کنند:\n\n```mermaid\nsequenceDiagram\n    participant User as کاربر\n    participant UIKit as کامپوننت بصری (UI Kit)\n    participant Template as قالب صفحه (Template)\n    participant Reg as رجیستری (Registry)\n    participant APIClient as API Client تولیدشده\n    participant BE as سرور بک‌اند\n    \n    User->>UIKit: کلیک یا ارسال فرم\n    UIKit->>Template: ارسال رویداد ساده (onClick Event)\n    Template->>Reg: فراخوانی متد رجیستری (مثلاً usersRegistry.create)\n    Reg->>APIClient: فراخوانی متد تولیدشده از رجیستری\n    APIClient->>BE: ارسال درخواست HTTP به وب‌سرویس بک‌اند\n    BE-->>APIClient: بازگرداندن داده خروجی (Response)\n    APIClient-->>Reg: تحویل داده سازمان‌یافته به رجیستری\n    Note over Reg: به‌روزرسانی وضعیت و کش داده‌ها\n    Reg-->>Template: تغییر وضعیت کامپوننت (State Update)\n    Template-->>UIKit: رندر مجدد تغییرات گرافیکی با متون جدید\n    UIKit-->>User: نمایش پیام موفقیت یا تغییر صفحه\n```"
    }
  ]
}