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
14 KiB
📋 چکلیست تست پذیرش نهایی کارفرما (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) همراه باشد.