# 📋 چک‌لیست تست پذیرش نهایی کارفرما (UAT) — فاز ۳.۱۱ > **پروژه:** IFNEX — سیستم بین‌المللی حمل‌ونقل و باربری > **فاز:** ۳.۱۱ — User Acceptance Testing (UAT) > **تاریخ:** ۱۴۰۴/۰۸/۱۱ > **نسخه کد:** phase-3.10.1 + phase-3.11 > **مخزن:** [git.vernahost.ir/gitmodir110/ifnex](https://www.git.vernahost.ir/gitmodir110/ifnex) --- ## 🎯 هدف این سند چک‌لیست رسمی تست پذیرش نهایی (UAT) پروژه IFNEX است. پس از تکمیل دیپلوی روی سرور Production، کارفرما باید این ۴۳ مورد را به‌ترتیب تست و تأیید کند. هر مورد باید با یک ✓ ثبت شود. در صورت شکست هر مورد، آن را با ✗ علامت بزنید و در بخش «اشکالات یافت‌شده» در انتهای سند ثبت کنید. **معیار قبولی نهایی:** همهٔ ۴۳ مورد باید ✓ شوند (یا به‌صورت رسمی به‌عنوان «تأخیری» علامت‌گذاری شوند). --- ## 🔧 پیش‌نیازها (پیش از شروع UAT) این موارد باید توسط تیم فنی قبل از شروع UAT تکمیل شده باشند: - [ ] سرور Laravel روی `https://system.ifnex.ir` در دسترس است - [ ] سرور WordPress روی `https://ifnex.ir` در دسترس است - [ ] گواهی SSL برای هر دو دامنه فعال است - [ ] `php artisan ifnex:preflight` سبز است - [ ] `php artisan ifnex:smoke-test` سبز است (تست خودکار E2E) - [ ] `php artisan test` سبز است (۷۳+ تست) - [ ] نرخ ارز واقعی import شده (`currencies` جدول) - [ ] حساب ادمین Filament ساخته شده و نقش `super_admin` دارد - [ ] کاربر مشتری تستی در وردپرس ساخته شده - [ ] درگاه پرداخت Zarinpal واقعی تنظیم شده (`SANDBOX=false`) - [ ] سرویس پیامک Kavenegar تنظیم شده (در صورت موجود بودن کلید) - [ ] کرون روزانه نرخ ارز فعال است --- ## 📊 خلاصهٔ چک‌لیست | بخش | تعداد موارد | صفحه | |------|------------|------| | ۱. دسترسی و SSL | ۳ | ۳ | | ۲. احراز هویت مشتری | ۴ | ۳ | | ۳. فرم سفارش Export | ۵ | ۴ | | ۴. فرم سفارش Import | ۴ | ۴ | | ۵. دفترچه آدرس (فاز ۳.۹) | ۳ | ۵ | | ۶. اسناد PDF | ۴ | ۵ | | ۷. تأیید سفارش توسط کارمند | ۳ | ۶ | | ۸. چک‌لیست کارمند | ۲ | ۶ | | ۹. پرداخت با کیف پول | ۲ | ۷ | | ۱۰. پرداخت آنلاین (Zarinpal) | ۲ | ۷ | | ۱۱. کد تخفیف | ۲ | ۷ | | ۱۲. داشبورد و وضعیت مالی | ۳ | ۸ | | ۱۳. اعتبار چندارزی | ۲ | ۸ | | ۱۴. رهگیری مرسوله | ۲ | ۹ | | ۱۵. پنل مدیریت Filament | ۲ | ۹ | | **مجموع** | **۴۳** | | --- ## ۱. دسترسی و SSL (۳ مورد) - [ ] **۱.۱** باز کردن `https://ifnex.ir` — صفحهٔ اصلی وردپرس بدون خطا باز می‌شود - [ ] **۱.۲** باز کردن `https://system.ifnex.ir/up` — پاسخ `200 OK` با کلمهٔ `OK` - [ ] **۱.۳** باز کردن `https://system.ifnex.ir/panel/login` — صفحهٔ ورود Filament باز می‌شود ## ۲. احراز هویت مشتری (۴ مورد) - [ ] **۲.۱** ثبت‌نام مشتری جدید از طریق وردپرس — کاربر در دیتابیس لاراول هم ساخته می‌شود - [ ] **۲.۲** ورود مشتری از طریق وردپرس — توکن Sanctum صادر می‌شود و در localStorage ذخیره - [ ] **۲.۳** ورود ناموفق با رمز اشتباه — پیام خطای واضح نمایش داده می‌شود - [ ] **۲.۴** خروج (Logout) — توکن باطل می‌شود و کاربر به صفحهٔ اصلی هدایت می‌شود ## ۳. فرم سفارش Export (۵ مورد) - [ ] **۳.۱** باز کردن فرم سفارش — قدم ۱ (اطلاعات کلی) بدون خطا Load می‌شود - [ ] **۳.۲** حرکت به قدم ۲ — پس از تکمیل قدم ۱، قدم ۲ (فرستنده/گیرنده) باز می‌شود - [ ] **۳.۳** انتخاب کشور از dropdown — لیست کشورها از API لاراول می‌آید (حداقل ۱۰۰ کشور) - [ ] **۳.۴** محاسبه قیمت آنلاین — دکمهٔ «استعلام قیمت» مبلغ ریالی را برمی‌گرداند - [ ] **۳.۵** ثبت سفارش — سفارش با وضعیت `pending_approval` در دیتابیس ثبت می‌شود ## ۴. فرم سفارش Import (۴ مورد) - [ ] **۴.۱** انتخاب نوع Import در قدم ۱ — فرم برای Import سازگار است - [ ] **۴.۲** پر کردن فرستنده/گیرنده در Import — فیلدها با موفقیت ذخیره می‌شوند - [ ] **۴.۳** استعلام قیمت Import — مبلغ صحیح برمی‌گردد (۴ ربع: Export/Import × Doc/Parcel) - [ ] **۴.۴** ثبت سفارش Import — سفارش با وضعیت `pending_approval` ثبت می‌شود ## ۵. دفترچه آدرس (فاز ۳.۹) (۳ مورد) - [ ] **۵.۱** افزودن آدرس به دفترچه — از پنل کاربری وردپرس، تب «دفترچه آدرس» → افزودن آدرس جدید - [ ] **۵.۲** انتخاب آدرس از dropdown در فرم سفارش — فیلدها با یک کلیک پر می‌شوند - [ ] **۵.۳** چک‌باکس «ذخیره این آدرس» — پس از ثبت سفارش، آدرس در دفترچه ذخیره شده (بدون رکورد تکراری) ## ۶. اسناد PDF (۴ مورد) - [ ] **۶.۱** دانلود AWB — PDF با بارکد قابل اسکن تولید می‌شود - [ ] **۶.۲** دانلود Invoice — PDF با اطلاعات صحیح مشتری و مبلغ - [ ] **۶.۳** دانلود Label — PDF A5 افقی با بارکد بزرگ (بدون برند IFNEX) - [ ] **۶.۴** دانلود Import Invoice — PDF با شیت ENG Invoice ## ۷. تأیید سفارش توسط کارمند (۳ مورد) - [ ] **۷.۱** مشاهدهٔ سفارش در پنل Filament — سفارش در لیست `pending_approval` دیده می‌شود - [ ] **۷.۲** تأیید سفارش — سفارش به `approved` تغییر وضعیت می‌دهد و چک‌لیست خودکار ساخته می‌شود - [ ] **۷.۳** رد سفارش — با دلیل، سفارش به `rejected` تغییر وضعیت می‌دهد و به مشتری اعلان می‌رود ## ۸. چک‌لیست کارمند (۲ مورد) - [ ] **۸.۱** مشاهدهٔ چک‌لیست — آیتم‌های چک‌لیست پس از تأیید سفارش به‌صورت خودکار ساخته می‌شوند - [ ] **۸.۲** تکمیل یک آیتم — کارمند می‌تواند با یادداشت و پیوست، آیتم را کامل کند ## ۹. پرداخت با کیف پول (۲ مورد) - [ ] **۹.۱** پرداخت سفارش از کیف پول — مبلغ از موجودی کم می‌شود و سفارش `paid` می‌شود - [ ] **۹.۲** پرداخت با موجودی ناکافی — پیام خطای واضح (بدون کسر از کیف پول) ## ۱۰. پرداخت آنلاین Zarinpal (۲ مورد) - [ ] **۱۰.۱** شارژ کیف پول از درگاه — redirect به Zarinpal، بازگشت با تراکنش `completed` - [ ] **۱۰.۲** پرداخت سفارش از درگاه — فلوی کامل: سفارش → redirect → بازگشت → `paid` ## ۱۱. کد تخفیف (۲ مورد) - [ ] **۱۱.۱** اعمال کد تخفیف معتبر — مبلغ استعلام قیمت با تخفیف صحیح محاسبه می‌شود - [ ] **۱۱.۲** رد کد تخفیف منقضی — پیام خطای واضح و `used_count` افزایش نمی‌یابد ## ۱۲. داشبورد و وضعیت مالی (۳ مورد) - [ ] **۱۲.۱** داشبورد مشتری — موجودی کیف پول، سفارش‌های اخیر، اعلان‌ها نمایش داده می‌شود - [ ] **۱۲.۲** تب تراکنش‌ها — لیست تراکنش‌ها با نوع و مبلغ و تاریخ - [ ] **۱۲.۳** مانده حساب — `Wallet Balance − Outstanding Approved Obligations` صحیح محاسبه می‌شود ## ۱۳. اعتبار چندارزی (۲ مورد) - [ ] **۱۳.۱** اعطای اعتبار توسط super_admin — بدهی به همان ارز ثبت می‌شود (نه معادل ریالی) - [ ] **۱۳.۲** تسویهٔ ریالی اعتبار — با نرخ روز، بدهی ارزی به ریال تبدیل و از کیف پول کم می‌شود ## ۱۴. رهگیری مرسوله (۲ مورد) - [ ] **۱۴.۱** صفحهٔ `/tracking/` با AWB معتبر — وضعیت و تاریخچه نمایش داده می‌شود - [ ] **۱۴.۲** صفحهٔ `/tracking/` با AWB نامعتبر — پیام ۴۰۴/۴۲۲ (نه ۵۰۰) ## ۱۵. پنل مدیریت Filament (۲ مورد) - [ ] **۱۵.۱** ورود به پنل با `super_admin` — دسترسی به همهٔ منوها - [ ] **۱۵.۲** صفحهٔ «وضعیت مالی مشتری» — ۴ کارت KPI + بدهی‌های ارزی + سفارش‌های اخیر --- ## 🐛 اشکالات یافت‌شده هر موردی که ✗ خورد را اینجا با جزئیات ثبت کنید: | # | مورد | شرح اشکال | شدت | وضعیت | |---|------|-----------|------|------| | ۱ | | | 🔴 بحرانی / 🟡 متوسط / 🟢 خفیف | باز / در حال بررسی / رفع شده | | ۲ | | | | | | ۳ | | | | | | ۴ | | | | | | ۵ | | | | | --- ## ✍️ فرم امضای تحویل پس از تکمیل همهٔ ۴۳ مورد: ``` ═══════════════════════════════════════════════════════════════════ فرم امضای تحویل نهایی ═══════════════════════════════════════════════════════════════════ پروژه: IFNEX — سیستم بین‌المللی حمل‌ونقل و باربری نسخه: phase-3.11 تاریخ تحویل: ۱۴۰۴/۰۸/۱۱ تاریخ تست: ____/____/۱۴۰۴ تعداد موارد تست‌شده: ____ از ۴۳ موعدت سبز شده: ____ موارد قرمز (اشکال): ____ موارد به‌تعویق‌افتاده: ____ ─────────────────────────────────────────────────────────────────── نماینده کارفرما (IFNEX): نام: ______________________________ سمت: ______________________________ امضا: ______________________________ تاریخ: ____/____/۱۴۰۴ ─────────────────────────────────────────────────────────────────── تیم توسعه‌دهنده (VernaSoft): نام: Kazem Alghasi سمت: توسعه‌دهنده ارشد امضا: ______________________________ تاریخ: ____/____/۱۴۰۴ ═══════════════════════════════════════════════════════════════════ وضعیت نهایی پروژه: [ ] پذیرفته شد — آمادهٔ انتشار رسمی [ ] پذیرفته شد با اشکالات خفیف — رفع در نسخهٔ بعدی [ ] پذیرفته نشد — نیاز به اصلاح و تست مجدد ═══════════════════════════════════════════════════════════════════ ``` --- ## 🚀 تست خودکار E2E (برای تیم فنی) پیش از شروع UAT دستی توسط کارفرما، تیم فنی باید این تست خودکار را اجرا کند: ```bash cd /var/www/system.ifnex.ir # ۱. تست‌های خودکار واحد php artisan test # انتظار: 82+ passed (73 قبلی + 9 جدید smoke-test) # ۲. بررسی پیش‌از-دیپلوی (دوباره) php artisan ifnex:preflight # انتظار: همهٔ بررسی‌ها سبز # ۳. تست E2E Post-Deploy php artisan ifnex:smoke-test # انتظار: همهٔ بررسی‌ها سبز (شامل API endpoints) # ۴. اگر از دامنهٔ دیگری استفاده می‌کنید: php artisan ifnex:smoke-test --url=https://system.ifnex.ir ``` اگر هر کدام قرمز بود، UAT را شروع نکنید — ابتدا مشکل را رفع کنید. --- ## 📞 اطلاعات تماس | مورد | مقدار | |------|------| | توسعه‌دهنده | VernaSoft Group — Kazem Alghasi | | ایمیل | kazem@vernasoft.group | | مخزن گیت | [git.vernahost.ir/gitmodir110/ifnex](https://www.git.vernahost.ir/gitmodir110/ifnex) | | سرور Laravel | `https://system.ifnex.ir` | | سرور WordPress | `https://ifnex.ir` | --- > **نکتهٔ نهایی:** این سند پس از امضای هر دو طرف، به‌عنوان سند رسمی تحویل > پروژه در آرشیو نگهداری می‌شود. هر تغییر بعدی در نسخه‌های آتی باید با > سند تغییرات (changelog) همراه باشد.