ifnex/UAT-3.11.md
Kazem Alghasi 8d61eb19d5 feat(uat): implement smoke test command and UAT documentation
Add `ifnex:smoke-test` console command to perform automated end-to-end
checks post-deployment, including database connectivity, essential
data presence, and API endpoint availability.

- Implement `IfnexSmokeTest` command for automated system verification
- Add feature tests for the smoke test command
- Create `UAT-3.11.md` containing the client acceptance checklist
- Update `CLIENT_DELIVERY.md` to reflect phase 3.10 and 3.11 completion
- Register the new command in `bootstrap/app.php`
- Add project documentation directory
2026-11-01 11:36:25 +03:30

14 KiB
Raw Blame History

📋 چک‌لیست تست پذیرش نهایی کارفرما (UAT) — فاز ۳.۱۱

پروژه: IFNEX — سیستم بین‌المللی حمل‌ونقل و باربری فاز: ۳.۱۱ — User Acceptance Testing (UAT) تاریخ: ۱۴۰۴/۰۸/۱۱ نسخه کد: phase-3.10.1 + phase-3.11 مخزن: 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 دستی توسط کارفرما، تیم فنی باید این تست خودکار را اجرا کند:

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
سرور Laravel https://system.ifnex.ir
سرور WordPress https://ifnex.ir

نکتهٔ نهایی: این سند پس از امضای هر دو طرف، به‌عنوان سند رسمی تحویل پروژه در آرشیو نگهداری می‌شود. هر تغییر بعدی در نسخه‌های آتی باید با سند تغییرات (changelog) همراه باشد.