{
  "title": "سیاست پیش‌نمایش",
  "slug": "team/platform/standards/demo-policy",
  "url": "/docs/team/platform/standards/demo-policy",
  "frontmatter": {
    "layout": "doc",
    "title": "سیاست پیش‌نمایش",
    "description": "استاندارد دموی سرویس — HTML/CSS ساده، قوانین فنی، چرخه عمر و همگام‌سازی",
    "version": "1.0.0",
    "status": "PRIVATE",
    "author": "xoxxel",
    "owner": "xoxxel",
    "created_at": "2026-06-07",
    "updated_at": "2026-06-07",
    "tags": "",
    "reviewers": ""
  },
  "sections": [
    {
      "level": 1,
      "heading": "سیاست پیش‌نمایش",
      "content": "**Demo Policy**\n\nنسخه 1.0 | الزامی برای همه سرویس‌ها\n\n---"
    },
    {
      "level": 2,
      "heading": "1. اصل اساسی",
      "content": "**هر سرویس باید یک پیش‌نمایش (Demo) داشته باشد.**\n\nدمو یک صفحه HTML/CSS ساده است که عملکرد سرویس را بدون نیاز به اجرای آن نمایش می‌دهد.\n\n---"
    },
    {
      "level": 2,
      "heading": "2. ساختار دمو",
      "content": "```\ndemo/\n├── index.html          # صفحه اصلی دمو (ورودی)\n├── styles.css          # (اختیاری) استایل‌ها\n├── app.js              # (اختیاری) اسکریپت‌ها\n└── assets/             # منابع استاتیک\n    ├── logo.svg\n    └── ...\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "3. قوانین فنی",
      "content": "| قانون              | توضیح                                                     |\n| ------------------ | --------------------------------------------------------- |\n| بدون فریم‌ورک      | فقط HTML و CSS ساده — بدون React, Vue, Svelte             |\n| بدون Build Step    | باید مستقیماً با `open demo/index.html` در مرورگر باز شود |\n| بدون CDN           | همه منابع به صورت محلی — بدون لینک به CDN خارجی           |\n| بدون وابستگی خارجی | هیچ فایلی از سرور خارجی لود نشود                          |\n| خودکفا             | همه چیز در پوشه `demo/` موجود باشد                        |\n\n```html\n<!-- ✅ درست -->\n<link rel=\"stylesheet\" href=\"styles.css\" />\n<script src=\"app.js\"></script>\n\n<!-- ❌ غلط -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css\"\n/>\n<script src=\"https://unpkg.com/vue@3/dist/vue.global.js\"></script>\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "4. محتوای دمو",
      "content": ""
    },
    {
      "level": 3,
      "heading": "صفحه اصلی (`index.html`) باید شامل:",
      "content": "| بخش                     | توضیح                                  |\n| ----------------------- | -------------------------------------- |\n| عنوان سرویس             | نام سرویس با توضیح یک خطی              |\n| مسئولیت‌ها              | لیست کارهایی که سرویس انجام می‌دهد     |\n| نقاط پایانی (Endpoints) | جدول مسیرهای API با نمونه درخواست/پاسخ |\n| رویدادها (Events)       | رویدادهای منتشر شده و مصرف شده         |\n| سناریوهای خطا           | نمونه خطاهای ممکن                      |\n| مدل داده (Data Model)   | ساختار موجودیت‌های اصلی                |"
    },
    {
      "level": 3,
      "heading": "مثال بخش Endpoints:",
      "content": "```html\n<h3>نقاط پایانی</h3>\n<table>\n  <tr>\n    <th>Method</th>\n    <th>Path</th>\n    <th>Description</th>\n    <th>Request</th>\n    <th>Response</th>\n  </tr>\n  <tr>\n    <td>POST</td>\n    <td>/v1/orders</td>\n    <td>ایجاد سفارش جدید</td>\n    <td><pre>{ \"productId\": \"...\", \"quantity\": 1 }</pre></td>\n    <td><pre>{ \"data\": { \"id\": \"...\", \"status\": \"pending\" } }</pre></td>\n  </tr>\n</table>\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "5. چرخه عمر دمو",
      "content": ""
    },
    {
      "level": 3,
      "heading": "فاز 1: Blueprint — طراحی اولیه",
      "content": "Blueprint شامل README پیشنهادی سرویس است — بدون دمو یا کد اجرایی:\n\n- هدف سرویس\n- مسئولیت‌ها و حوزه\n- نقاط پایانی پیشنهادی\n- رویدادهای پیشنهادی"
    },
    {
      "level": 3,
      "heading": "فاز 1.5: دمو — پس از تأیید Blueprint",
      "content": "پس از بررسی و تأیید دقیق Blueprint، یک دموی اولیه ساخته می‌شود:\n\n- هدف سرویس\n- نقاط پایانی نهایی\n- رویدادهای نهایی"
    },
    {
      "level": 3,
      "heading": "فاز 2: توسعه — همگام‌سازی",
      "content": "هر تغییری که رفتار سرویس را تغییر می‌دهد باید دمو را به‌روزرسانی کند:\n\n| تغییر در سرویس          | اقدام در دمو             |\n| ----------------------- | ------------------------ |\n| اضافه شدن endpoint جدید | افزودن به جدول endpoints |\n| تغییر payload پاسخ      | بروزرسانی نمونه پاسخ     |\n| اضافه شدن رویداد جدید   | افزودن به لیست رویدادها  |\n| تغییر سناریوی خطا       | بروزرسانی نمونه خطا      |"
    },
    {
      "level": 3,
      "heading": "فاز 3: انتشار — دموی نهایی",
      "content": "در زمان انتشار `v1.0.0`، دمو باید **کاملاً همگام** با سرویس باشد.\n\n---"
    },
    {
      "level": 2,
      "heading": "6. قوانین PR",
      "content": "| قانون                   | توضیح                                                |\n| ----------------------- | ---------------------------------------------------- |\n| تغییر رفتار = تغییر دمو | PRای که رفتار را تغییر می‌دهد باید دمو را به‌روز کند |\n| بررسی در Review         | Reviewer باید دمو را چک کند                          |\n| دمو در CI               | دمو باید در CI باز شود (Lint یا بررسی ساختار)        |\n\n---"
    },
    {
      "level": 2,
      "heading": "7. مثال حداقلی `index.html`",
      "content": "```html\n<!DOCTYPE html>\n<html lang=\"fa\" dir=\"rtl\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>دمو — سرویس سفارش</title>\n    <link rel=\"stylesheet\" href=\"styles.css\" />\n  </head>\n  <body>\n    <header>\n      <h1>سرویس سفارش (Order Service)</h1>\n      <p>مدیریت فرآیند ایجاد، پرداخت، تحویل و اختلاف سفارشات</p>\n    </header>\n\n    <section>\n      <h2>مسئولیت‌ها</h2>\n      <ul>\n        <li>ایجاد و مدیریت سفارشات</li>\n        <li>مدیریت چرخه عمر سفارش (Pending → Paid → Delivered → Completed)</li>\n        <li>مدیریت اختلافات و انصراف</li>\n      </ul>\n    </section>\n\n    <section>\n      <h2>نقاط پایانی</h2>\n      <table>\n        <tr>\n          <th>Method</th>\n          <th>Path</th>\n          <th>Description</th>\n        </tr>\n        <tr>\n          <td>POST</td>\n          <td>/v1/orders</td>\n          <td>ایجاد سفارش</td>\n        </tr>\n        <tr>\n          <td>GET</td>\n          <td>/v1/orders/:id</td>\n          <td>دریافت سفارش</td>\n        </tr>\n      </table>\n    </section>\n\n    <footer>\n      <p>نسخه 1.0 | <a href=\"https://github.com/nons-api\">Repository</a></p>\n    </footer>\n  </body>\n</html>\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "8. رویدادها در دمو",
      "content": "```html\n<section>\n  <h2>رویدادها (Events)</h2>\n\n  <h3>منتشر می‌کند (Publishes)</h3>\n  <ul>\n    <li><code>nons.order.created</code> — سفارش جدید ایجاد شد</li>\n    <li><code>nons.order.paid</code> — سفارش پرداخت شد</li>\n    <li><code>nons.order.delivered</code> — سفارش تحویل شد</li>\n  </ul>\n\n  <h3>مصرف می‌کند (Subscribes)</h3>\n  <ul>\n    <li><code>nons.payment.released</code> — وجه آزاد شد</li>\n  </ul>\n</section>\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "خلاصه",
      "content": "| مورد                      | وضعیت  |\n| ------------------------- | ------ |\n| وجود دمو                  | اجباری |\n| بدون فریم‌ورک             | اجباری |\n| بدون CDN                  | اجباری |\n| خودکفا                    | اجباری |\n| همگام با سرویس            | اجباری |\n| به‌روزرسانی در PR         | اجباری |\n| دمو پس از تأیید Blueprint | اجباری |"
    }
  ]
}