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