# نقش‌ها، User Journey و تجربه کاربری MVP

**نسخه:** 0.2.0 — پیشنهادی برای بازبینی  
**تفاوت:** Journey هدف و تجربه انسان است؛ Flow مجموعه صفحات، تصمیم‌ها و state transitionهای مشخص برای اجرای آن هدف است.

## پرسونا و دسترسی پایه
- **God Admin / معمار پلتفرم:** در Control Plane مدل، فیلد، رابطه، سناریوی وضعیت، قواعد، سیاست دسترسی، template و integration connector را تعریف و با نسخه جدید publish می‌کند. دسترسی سراسری به داده تجاری به‌صورت پیش‌فرض فرض نمی‌شود؛ elevation و audit لازم است.
- **Network Operator:** معرفی/دعوت بازیگران، تعریف روابط و SLA، مدیریت اختلافات و گزارش شبکه با مجوز مشخص.
- **Wheat/Flour Operator (ورامین):** دسترسی به lotهای متعلق/مجاز، اسناد دریافت، تولید آرد، رزرو و حواله.
- **Pasta Planner & Production Operator (سمیرا):** BOM، ظرفیت، درخواست، دریافت و تولید واقعی.
- **Retail Buyer/Warehouse/POS Operator (افق کوروش):** سفارش، رسید، شعب، فروش و مرجوعی؛ عدم مشاهده قیمت خرید سایر سازمان‌ها بدون قرارداد/مجوز.
- **Finance Officer:** تأیید دوره، مشاهده قرارداد و ledger مجاز، اختلاف، مدارک تسویه خارجی.
- **Auditor:** فقط خواندن lineage، version و history مجاز و گزارش export کنترل‌شده.
- **Integration Service Account:** Scope محدود، source identity، credentials rotation و نرخ/حجم درخواست؛ حق تأیید انسانی ندارد.

## Journey J01 — راه‌اندازی اولین شبکه (مدیر پلتفرم)
**هدف:** بدون کدنویسی اختصاصی، زنجیره نمونه را فعال کند.  
**Trigger:** تصمیم ایجاد شبکه ارزش برای پایلوت.  
**Preconditions:** مدیر مجاز؛ template پایه و موتورهای قابل استفاده وجود دارند.
1. وارد محیط مدیریت می‌شود، شبکه جدید ایجاد و ارز/واحد/تقویم/حوزه صنعت را تعیین می‌کند.
2. مدل‌های داده و روابط (Organization, Product, Lot, Transform, Order, Shipment, SaleEvent, Journal) را از template انتخاب یا مشتق می‌کند.
3. فیلدهای خاص نمونه مانند درصد رطوبت گندم، شاخص کیفیت آرد و تعداد بسته محصول را به‌صورت metadata تعریف می‌کند.
4. Schema preview و اثر تغییر را می‌بیند؛ publish تحت مجوز و migration کنترل‌شده انجام می‌شود.
5. فرم/اسلات، workflow، نقش‌ها و فیلدهای اجباری را از metadata تنظیم می‌کند.
6. سه سازمان را دعوت می‌کند، روابط تجاری و قراردادهای نسخه‌دار را ثبت می‌کند.
7. مسیر دریافت CSV/API و نگاشت منابع را تنظیم؛ sandbox validation را تست می‌کند.
8. با یک کاربر آزمایشی، API و رابط کاربری را هر دو تست و نسخه فعال را ثبت می‌کند.
**Touchpoints:** God Admin Studio، دعوت‌نامه، تنظیمات Integration، Audit، Preview.
**Pain:** ناسازگاری داده/پیکربندی ناقص → publication gate با خطای دقیق.
**Success:** ایجاد مدل/فرم/فرآیند جدید بدون edit/redeploy هسته، با امکان rollback نسخه پیکربندی (نه rollback مخرب داده).

## Journey J02 — ثبت و آزادسازی گندم (اپراتور ورامین)
**هدف:** موجودی قابل اعتماد و قابل تخصیص معرفی کند.
1. با انتخاب شرکت ورامین وارد داشبورد مجاز می‌شود.
2. یک lot مبدأ یا محموله را با شناسه یکتا، تاریخ، مقدار، واحد، انبار/سیلو، منشأ و مدارک ثبت می‌کند.
3. مقدار ثبت‌شده فعلاً **Declared** است؛ اعتبارسنجی و ارزیابی سند اجرا می‌شود.
4. بازبین دارای مجوز کیفیت/موجودی را می‌سنجد؛ تأیید، رد، یا «دارای مغایرت» ثبت می‌کند.
5. موجودی **Accepted/Available** پس از رفع مغایرت و قوانین رزرو قابل تخصیص می‌شود.
**Touchpoints:** Lot Form، پیوست سند، صف تأیید، Inventory ledger.
**Failure:** وزن/واحد ناسازگار، duplicate lot، مجوز نامعتبر، سند ناکامل، lot قرنطینه.
**Success:** هر عدد موجودی به سند/منبع/تاریخ و تصمیم اعتبارسنجی قابل برگشت باشد.

## Journey J03 — سفارش ماکارونی (خریدار افق)
**هدف:** تحویل مقدار و SKU مشخص در بازه زمانی مجاز.
1. کاتالوگ SKU مجاز را می‌بیند؛ مقصد و تاریخ مطلوب را انتخاب می‌کند.
2. سفارش draft با مقدار، واحد، قواعد پرداخت/تحویل و مدرک احتمالی ایجاد می‌کند.
3. پیش‌نمایش شرایط قرارداد و تاریخ انقضا را می‌بیند؛ درخواست را submit می‌کند.
4. وضعیت Pending Supplier Review را دنبال می‌کند؛ سمیرا می‌تواند accept/partial/counter/reject کند.
5. در counter-offer، خریدار نسخه جدید را می‌پذیرد یا رد می‌کند.
6. تأیید نهایی سفارش برنامه ساخت/رزرو را شروع می‌کند؛ ارسال و رسیدهای جزئی قابل مشاهده‌اند.
**Pain:** زمان تحویل نامشخص، تغییر قیمت/مقدار بدون تأیید، سفارش بالاتر از ظرفیت.
**Success:** یک تاریخچه توافق و وضعیت سفارش/مرسوله و مانده تحویل.

## Journey J04 — برنامه‌ریزی سمیرا (برنامه‌ریز تولید)
**هدف:** تقاضای پذیرفته‌شده را به نیاز واقعی مواد تبدیل کند.
1. سفارش‌های قابل اقدام و موجودی آرد را می‌بیند.
2. SKU/BOM نسخه معتبر برای تاریخ برنامه را انتخاب می‌کند؛ نیاز ناخالص/خالص آرد و سایر مواد محاسبه می‌شود.
3. ظرفیت و ضریب افت کنترل می‌شود؛ پیشنهاد تولید در قالب Plan draft تولید می‌شود.
4. نیاز قابل تأمین از موجودی رزرو و کسری به درخواست خرید/تأمین آرد تبدیل می‌شود.
5. مقدار و تاریخ پیشنهادی ورامین دریافت می‌شود؛ تصمیم پذیرش/اصلاح/لغو با ثبت علت.
6. برنامه بعد از رزروهای معتبر قطعی می‌شود؛ برچسب ریسک تأخیر یا کسری حفظ می‌شود.
**Failure:** BOM انتشارنیافته، اختلاف واحد، رزرو تکراری، تغییر ظرفیت.
**Success:** linkage صریح SalesOrder → ProductionPlan → MaterialRequirement → FlourOrder.

## Journey J05 — تأمین و آسیاب ورامین
**هدف:** تحویل آردی که منشأ و مقدار واقعی آن مشخص است.
1. درخواست آرد را بررسی و قیمت/ظرفیت/انبار/شرایط نسخه قرارداد را تطبیق می‌کند.
2. تخصیص batchهای گندم را با توجه به available balance و کیفیت انجام می‌دهد.
3. دستور تولید ایجاد؛ input lotها و مقادیر واقعی هر کدام هنگام مصرف ثبت می‌شوند.
4. output lot آرد، ضایعات و بازده اندازه‌گیری و تراز مواد بررسی می‌شود.
5. QC خروجی را آزاد یا قرنطینه می‌کند؛ حواله و shipment ثبت می‌شود.
6. وزن خروج و وزن رسید گیرنده مقایسه؛ مغایرت در workflow مشترک ثبت می‌شود.
**Failure:** مصرف بیش از موجودی، اختلاف mass balance بالاتر از tolerance، QC fail، کسری حمل.
**Success:** Flour Lot → Inputs + Quantities + Evidence + Shipment + Acceptance.

## Journey J06 — تولید و ارسال سمیرا
**هدف:** تبدیل آرد تحویل‌گرفته به کالای قابل فروش با هویت قابل رهگیری.
1. در زمان تحویل، shipment ورامین را با مقدار، QC، اسناد و lotهای دریافتی تطبیق می‌دهد.
2. پذیرفته‌شده را به موجودی قابل مصرف انتقال و مغایرت را جداگانه ثبت می‌کند.
3. اجرای دستور با BOM version، lot مواد و consumed quantity آغاز می‌کند.
4. batch ماکارونی، SKU، تعداد، ضایعات، کیفیت و تاریخ تولید ثبت می‌شود.
5. QC آزادسازی انجام و موجودی محصول آماده ارسال می‌شود.
6. ارسال به افق با lot manifest و مدارک بسته‌بندی/حمل ثبت می‌شود.
**Success:** genealogy چندبه‌چند تا منشأ و مانده مصرف ماده اولیه.

## Journey J07 — دریافت، فروش و مرجوعی افق
**هدف:** گزارش فروش قابل اتکا برای تسویه و تحلیل تقاضا.
1. انبار افق shipment را می‌بیند؛ رسید جزئی/کامل و مغایرت را ثبت می‌کند.
2. انتقال انبار به شعبه در صورت وجود داده WMS ثبت می‌شود.
3. POS یا فایل دوره، رخدادهای فروش با sourceEventId، store, SKU, time, quantity, netAmount را ارسال می‌کند.
4. سیستم duplicate، مقدار غیرممکن، currency/units و mapping را بررسی و وضعیت quarantined یا accepted را تعیین می‌کند.
5. با داشتن lot واقعی: Exact lineage؛ با صرف SKU: SKU-only و تخصیص تخمینی به lot صرفاً بر اساس قواعد مصوب و برچسب confidence.
6. مرجوعی به original sale ارجاع می‌شود؛ رویدادهای قبلی پاک نمی‌شوند.
7. کارشناس افق گزارش دوره را می‌بیند و تأیید یا dispute می‌کند.
**Failure:** offline POS، دیررسیدن داده، مرجوعی بعد از closing، مغایرت stock.
**Success:** فروش بدون تکرار و بدون ادعای اثبات منشأ غیرواقعی.

## Journey J08 — تسویه و بستن دوره (مالی)
**هدف:** بدهکار/بستانکار قابل ممیزی بدون ادعای انتقال واقعی پول.
1. کارشناس مالی دوره و قرارداد مؤثر را انتخاب می‌کند.
2. سیستم فقط رویدادهای eligible را بر مبنای rule version ارزیابی می‌کند.
3. پیش‌نویس calculation با پایه قیمت، کسورات، مالیات (اگر مصوب)، سهم، ارز و سررسید ارائه می‌شود.
4. مسئولان دارای مجوز آن را تأیید یا وارد پرونده اختلاف می‌کنند.
5. موتور سند دوبل را در ledger ثبت و مانده بدهی/طلب را به‌روزرسانی می‌کند.
6. مدرک پرداخت برون‌سامانه ثبت و در صورت تأیید با تعهد open match می‌شود؛ ثبت مدرک به‌تنهایی Paid نیست.
7. دوره با reconciliation و audit بسته می‌شود؛ بعد از closing فقط correction/reversal یا adjustment در دوره مجاز.
**Failure:** data feed late، نرخ نامعتبر، فرمول نامتوازن، dispute حل‌نشده، payment proof جعلی/مغایر.
**Success:** ledger balanced، مانده معتبر، پرونده قابل بازرسی.

## Journey J09 — رسیدگی به مغایرت (اپراتور/ممیز)
**هدف:** هیچ داده غلطی بی‌ردپا اصلاح نشود.
1. هشدار کیفیت، کسری، تاریخچه API یا اختلاف سفارش ایجاد می‌شود.
2. پرونده با نوع/شدت/مالک/زمان‌پاسخ باز می‌شود.
3. داده و مدارک طرفین ثبت؛ مسئول مجاز تصمیم Accept/Reject/Request Evidence می‌گیرد.
4. اقدام جبرانی (adjustment, release, reverse, reship, resend) به transactionهای اصلی لینک می‌شود.
5. پرونده بعد از بررسی اثر انبار/ledger بسته می‌شود.
**Success:** منبع اختلاف و اثر اصلاحی کامل در audit.
