{
  "title": "سیاست بلوپرینت",
  "slug": "team/platform/standards/blueprint-policy",
  "url": "/docs/team/platform/standards/blueprint-policy",
  "frontmatter": {
    "layout": "doc",
    "title": "سیاست بلوپرینت",
    "description": "الزامات پیش از توسعه هر سرویس — فایل‌ها، محتوا، تأیید و چرخه عمر",
    "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": "**Blueprint Policy**\n\nنسخه 1.0 | الزامی پیش از توسعه هر سرویس\n\n---"
    },
    {
      "level": 2,
      "heading": "1. اصل اساسی",
      "content": "**بدون Blueprint، توسعه سرویس مجاز نیست.**\n\nهر سرویس قبل از شروع پیاده‌سازی باید یک Blueprint کامل داشته باشد که توسط تیم تأیید شده باشد.\n\n---"
    },
    {
      "level": 2,
      "heading": "2. فایل‌های اجباری",
      "content": "```\nblueprint/\n├── blueprint.md          # هدف، مسئولیت‌ها، نمای کلی\n├── requirements.md       # نیازمندی‌های دقیق کسب‌وکار\n├── scenarios.md          # سناریوهای اصلی و خطا\n└── api-design.md         # (اختیاری) طرح API اولیه\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "3. محتوای `blueprint.md`",
      "content": "| بخش | توضیح | مثال |\n|---|---|---|\n| هدف سرویس | یک پاراگراف — این سرویس چه مسئله‌ای را حل می‌کند | \"مدیریت فرآیند پرداخت و Escrow\" |\n| مسئولیت‌ها | لیست کارهایی که این سرویس انجام می‌دهد | \"قفل کردن وجوه، آزادسازی پس از تحویل\" |\n| حوزه (Scope) | چه چیزهایی در این سرویس است و چه چیزهایی نیست | \"در این سرویس: پرداخت. نیست: انصراف سفارش\" |\n| وابستگی‌ها | سرویس‌ها و پکیج‌هایی که به آنها وابسته است | `order-service`, `nons-api/contracts/` (Proto) |\n| ریسک‌ها | چالش‌های بالقوه | \"مدیریت همزمانی در آزادسازی Escrow\" |\n\n---"
    },
    {
      "level": 2,
      "heading": "4. محتوای `requirements.md`",
      "content": "```markdown"
    },
    {
      "level": 1,
      "heading": "نیازمندی‌های سرویس پرداخت",
      "content": ""
    },
    {
      "level": 2,
      "heading": "نیازمندی‌های وظیفه‌ای (Functional)",
      "content": "- [ ] کاربر بتواند سفارش را پرداخت کند\n- [ ] وجوه در Escrow قفل شود\n- [ ] پس از تأیید تحویل، وجوه به فروشنده آزاد شود\n- [ ] در صورت انصراف، وجوه به خریدار برگردد"
    },
    {
      "level": 2,
      "heading": "نیازمندی‌های غیروظیفه‌ای (Non-Functional)",
      "content": "- زمان تأیید پرداخت کمتر از ۵ ثانیه\n- قابلیت بازیابی پس از خطا\n- ثبت تمام تراکنش‌ها برای حسابرسی\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "5. محتوای `scenarios.md`",
      "content": ""
    },
    {
      "level": 3,
      "heading": "سناریوهای خوشحال (Happy Path)",
      "content": "- [ ] پرداخت موفق — کاربر سفارش را پرداخت می‌کند، وجوه قفل می‌شود\n- [ ] تحویل موفق — خریدار تأیید می‌کند، وجوه به فروشنده می‌رسد"
    },
    {
      "level": 3,
      "heading": "سناریوهای خطا (Error Scenarios)",
      "content": "- [ ] موجودی ناکافی — کاربر موجودی کافی ندارد\n- [ ] زمان‌گذرد (Timeout) — کاربر در مهلت مقرر پرداخت نکرد\n- [ ] اختلاف (Dispute) — خریدار اعلام مشکل می‌کند\n- [ ] ازکارافتادگی سرویس — سرویس پرداخت در دسترس نیست"
    },
    {
      "level": 3,
      "heading": "سناریوهای مرزی (Edge Cases)",
      "content": "- [ ] پرداخت همزمان — دو درخواست همزمان برای یک سفارش\n- [ ] انصراف پس از پرداخت — سفارش پرداخت شده اما تحویل نشده\n- [ ] مبلغ صفر — سفارش با مبلغ رایگان\n\n---"
    },
    {
      "level": 2,
      "heading": "6. ارتباط Blueprint با Demo",
      "content": "Blueprint و Demo دو مرحله مجزا و ترتیبی هستند:\n\n1. **Blueprint** — README پیشنهادی سرویس، بدون دمو یا کد اجرایی\n2. **بررسی و تأیید** — Blueprint توسط تیم بازبینی و تأیید می‌شود\n3. **Demo** — پس از تأیید Blueprint، یک پیش‌نمایش اولیه در `demo/` ساخته می‌شود\n\n```\ndemo/\n├── index.html       # صفحه اصلی — هدف، نقاط پایانی، رویدادها\n└── assets/          # فایل‌های CSS/JS (در صورت نیاز)\n```\n\nاین دمو پس از توسعه به **نسخه نهایی** تبدیل می‌شود.\n\n> **قانون:** دمو باید تا حد امکان به نسخه نهایی نزدیک باشد. هر تغییری در توسعه باید دمو را هم‌گام به‌روزرسانی کند.\n\n---"
    },
    {
      "level": 2,
      "heading": "7. تأیید Blueprint",
      "content": "| مرحله | مسئول | وضعیت |\n|---|---|---|\n| نوشتن Blueprint | توسعه‌دهنده ارشد سرویس | 📝 |\n| بازبینی نیازمندی‌ها | مدیر محصول (Product Owner) | 👀 |\n| بازبینی فنی | معمار سیستم (Architect) | 🔍 |\n| تأیید نهایی | تیم کامل | ✅ |\n\nپس از تأیید، Blueprint در مخزن commit می‌شود و توسعه آغاز می‌گردد.\n\n---"
    },
    {
      "level": 2,
      "heading": "8. چرخه عمر Blueprint",
      "content": "```mermaid\nflowchart LR\n    A[ایده سرویس] --> B[نوشتن Blueprint]\n    B --> C[بازبینی تیمی]\n    C --> D[تأیید]\n    D --> E[توسعه سرویس]\n    E --> F[به‌روزرسانی demo/docs]\n    F --> G[انتشار v1.0.0]\n```\n\nپس از انتشار `v1.0.0`، پوشه `blueprint/` بایگانی یا حذف می‌شود. محتوای آن به `docs/` منتقل می‌گردد.\n\n---"
    },
    {
      "level": 2,
      "heading": "خلاصه",
      "content": "| مورد | وضعیت |\n|---|---|\n| وجود Blueprint پیش از توسعه | اجباری |\n| تأیید تیمی پیش از توسعه | اجباری |\n| هم‌گام‌سازی Blueprint با توسعه | اجباری |\n| وجود دمو پس از تأیید Blueprint | اجباری |\n| بایگانی Blueprint پس از انتشار | توصیه شده |"
    }
  ]
}