این راهنما مراحل کامل تست سیستم Task و Mission را توضیح میدهد.
# اجرای migrations (اگر هنوز اجرا نشده)
php artisan migrate
# اجرای seeders پایه
php artisan db:seed --class=TenantSeeder
php artisan db:seed --class=PersonnelSeeder
# اجرای seeder کامل تست
php artisan db:seed --class=CompleteTestSeederبعد از اجرای CompleteTestSeeder، شما خواهید داشت:
- ✅ یک Task با Prompt و Content
- ✅ یک Mission با Prompt و Content
- ✅ همه به یک پرسنل assign شدهاند
بعد از اجرای Seeder، اطلاعات زیر نمایش داده میشود:
📋 Task:
Task ID: 1
Task Name: تسک تست - 2025-12-25 15:00
Task Prompt ID: 1
Task Content ID: 1
Assigned to Personnel: 1 (علی احمدی)
🎯 Mission:
Mission ID: 1
Mission Title: ماموریت تست - 2025-12-25 15:00
Mission Prompt ID: 2
Mission Content ID: 2
Assigned to Personnel: 1 (علی احمدی)
- پرسنل در ربات ماموریت دستور
/statusرا ارسال میکند - باید Task خود را ببیند
- پرسنل در ربات ماموریت لینک نتیجه را ارسال میکند:
https://example.com/task-result/12345 - سیستم به صورت خودکار:
- لینک را در جدول
tasksذخیره میکند - وضعیت را به
pending_approvalتغییر میدهد - پیام را در گروه تایید ارسال میکند
- لینک را در جدول
- در گروه تایید، به پیام reply کنید
- کلمه "تایید" را ارسال کنید
- سیستم:
- وضعیت را به
approvedتغییر میدهد approved_by_chat_idرا ثبت میکند- امتیاز به پرسنل اضافه میشود
- وضعیت را به
- به ربات مدیا بروید
- دستور زیر را ارسال کنید:
/upload_mission_1 - سپس فایلهای آموزشی را ارسال کنید:
- عکس
- ویدیو
- صوت
- برای پایان آپلود:
/done
در ربات مدیا دستور زیر را ارسال کنید:
/send_training_1_to_1
(ماموریت 1 به پرسنل 1)
یا پرسنل در ربات ماموریت:
/get_training
- پرسنل در ربات ماموریت لینک نتیجه را ارسال میکند:
https://example.com/mission-result/12345 - سیستم به صورت خودکار:
- لینک را در جدول
mission_personnelذخیره میکند - وضعیت را به
pending_approvalتغییر میدهد - پیام را در گروه تایید ارسال میکند
- لینک را در جدول
- در گروه تایید، به پیام reply کنید
- کلمه "تایید" را ارسال کنید
- سیستم:
- وضعیت را به
approvedتغییر میدهد approved_by_chat_idرا ثبت میکند- امتیاز به پرسنل اضافه میشود
- وضعیت را به
-- مشاهده Task
SELECT * FROM tasks WHERE id = 1;
-- مشاهده Prompt مربوط به Task
SELECT * FROM prompts WHERE task_id = 1;
-- مشاهده Content مربوط به Task (اگر وجود دارد)
SELECT * FROM contents WHERE id IN (
SELECT content_id FROM task_contents WHERE task_id = 1
);-- مشاهده Mission
SELECT * FROM missions WHERE id = 1;
-- مشاهده Prompt مربوط به Mission
SELECT * FROM prompts WHERE mission_id = 1;
-- مشاهده Content مربوط به Mission
SELECT c.*, mc.sort_order
FROM contents c
JOIN mission_contents mc ON c.id = mc.content_id
WHERE mc.mission_id = 1
ORDER BY mc.sort_order;
-- مشاهده پرسنل assign شده
SELECT mp.*, p.first_name, p.last_name
FROM mission_personnel mp
JOIN personnel p ON mp.personnel_id = p.id
WHERE mp.mission_id = 1;-- برای Task
SELECT approved_by_chat_id, approved_at, status
FROM tasks
WHERE id = 1 AND status = 'approved';
-- برای Mission
SELECT approved_by_chat_id, approved_at, status
FROM mission_personnel
WHERE mission_id = 1 AND personnel_id = 1 AND status = 'approved';-- مشاهده امتیاز کل پرسنل
SELECT
p.id,
p.first_name,
p.last_name,
(
SELECT COALESCE(SUM(points), 0)
FROM tasks
WHERE assigned_user_id = p.id AND task_status = 'approved'
) +
(
SELECT COALESCE(SUM(m.points), 0)
FROM missions m
JOIN mission_personnel mp ON m.id = mp.mission_id
WHERE mp.personnel_id = p.id AND mp.status = 'approved'
) as total_points
FROM personnel p
WHERE p.id = 1;-
Queue Worker: برای ارسال ترتیبی محتواها، باید Queue Worker در حال اجرا باشد:
php artisan queue:work
-
Webhook: مطمئن شوید که webhookهای رباتها به درستی تنظیم شدهاند
-
گروه تایید: ربات باید در گروه عضو باشد و دسترسی ارسال پیام داشته باشد
-
Environment Variables: تمام متغیرهای محیطی باید به درستی تنظیم شوند
- مطمئن شوید که migrations اجرا شدهاند
- چک کنید که Tenant و Personnel وجود دارند
- چک کنید که پرسنل وجود دارد
- بررسی کنید که foreign key constraints درست هستند
- Queue Worker را اجرا کنید
- چک کنید که
personnel_idدرbot_users.settingsذخیره شده باشد
# مشاهده لاگها
tail -f storage/logs/laravel.log
# اجرای Queue Worker
php artisan queue:work
# پاک کردن Cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
# مشاهده Routes
php artisan route:list | grep mission
php artisan route:list | grep task