در زمان اجرای بکتست، خطای زیر در لاگهای بکاند مشاهده میشد:
Not Found: /api/api/gamification/scores/me/
2025-12-05 22:49:38 [WARNING] django.request: Not Found: /api/api/gamification/scores/me/
همچنین بکتست به کندی اجرا میشد و در نهایت خروجی بکتست 0 بود و هیچ اطلاعاتی ثبت نمیشد.
مشکل در فایل frontend/src/components/GamificationScore.tsx بود. این کامپوننت برای دریافت امتیاز کاربر از API استفاده میکند، اما URL به اشتباه با پیشوند /api/ فراخوانی میشد:
const response = await get('/api/gamification/scores/me/')در حالی که در فایل frontend/src/api/client.ts، baseURL قبلاً به /api تنظیم شده است:
const client = axios.create({
baseURL: API_BASE_URL, // که برابر با '/api' است
...
})بنابراین وقتی کامپوننت /api/gamification/scores/me/ را فراخوانی میکرد، axios آن را به baseURL + url تبدیل میکرد که نتیجه آن /api/api/gamification/scores/me/ میشد.
URL در GamificationScore.tsx از /api/gamification/scores/me/ به /gamification/scores/me/ تغییر یافت تا با baseURL ترکیب شود و URL صحیح /api/gamification/scores/me/ تولید شود.
فایل: frontend/src/components/GamificationScore.tsx
- const response = await get('/api/gamification/scores/me/')
+ const response = await get('/gamification/scores/me/')فایل تست backend/tests/test_gamification_endpoint.py ایجاد شد که شامل تستهای زیر است:
- test_gamification_scores_me_endpoint_exists: بررسی وجود endpoint
- test_gamification_scores_me_returns_user_score: بررسی بازگشت دادههای صحیح
- test_gamification_scores_me_creates_score_if_not_exists: بررسی ایجاد خودکار امتیاز
- test_gamification_scores_me_requires_authentication: بررسی نیاز به احراز هویت
- test_gamification_scores_me_url_not_doubled: بررسی عدم وجود
/api/apiدر URL
cd backend
python manage.py test tests.test_gamification_endpointکامپوننت GamificationScore در صفحه Results استفاده میشود و در زمان نمایش نتایج بکتست، این کامپوننت برای نمایش امتیاز کاربر تلاش میکند API را فراخوانی کند. اگرچه این فراخوانی مستقیماً بر اجرای بکتست تأثیر نمیگذارد، اما:
- خطای 404 در لاگها ثبت میشد
- درخواستهای ناموفق ممکن است باعث تأخیر در UI شوند
- کامپوننت به درستی کار نمیکرد و امتیاز کاربر نمایش داده نمیشد
نکته: مشکل خروجی صفر بکتست احتمالاً مشکل جداگانهای است و باید به صورت مستقل بررسی شود. این رفع مشکل فقط مشکل URL گیمیفیکیشن را حل میکند.
با استفاده از grep بررسی شد که آیا موارد مشابه دیگری وجود دارد یا خیر. نتیجه بررسی نشان داد که فقط GamificationScore.tsx این مشکل را داشت و سایر فایلها از توابع API client به درستی استفاده میکنند.
- ✅ مشکل URL دوگانه
/api/apiبرطرف شد - ✅ کامپوننت
GamificationScoreاکنون به درستی کار میکند - ✅ تستهای جامع برای endpoint نوشته شد
- ✅ هیچ بخش دیگری از سیستم آسیب ندید
برای بررسی مشکل خروجی صفر بکتست، موارد زیر پیشنهاد میشود:
- بررسی لاگهای بکتست برای خطاهای احتمالی
- بررسی اینکه آیا دادههای بازار به درستی دریافت میشوند
- بررسی اینکه آیا استراتژی به درستی پارس میشود
- بررسی اینکه آیا شرایط ورود/خروج به درستی ارزیابی میشوند
- بررسی لاگهای
BacktestEngineبرای جزئیات بیشتر