arc/docs/WARRANTY_PLUGIN_FIXES.md
2026-04-14 19:34:55 +03:30

5 KiB
Executable file
Raw Permalink Blame History

گزارش رفع مشکلات افزونه گارانتی

این گزارش شامل مشکلات رفع شده در بخش افزونه گارانتی (Warranty Plugin) است.

مشکلات رفع شده

مشکلات بک‌اند

✅ 1. رفع مشکل Import درون تابع

فایل: hesabixAPI/app/services/warranty_service.py
تغییرات: Import WarrantyCodeRepository از داخل تابع track_warranty_by_link به ابتدای فایل منتقل شد.

✅ 2. بهبود کارایی list_warranty_codes_by_person

فایل:

  • hesabixAPI/app/services/warranty_service.py
  • hesabixAPI/adapters/db/repositories/warranty_repository.py

تغییرات:

  • متدهای list_by_person و count_by_person به Repository اضافه شدند
  • تابع list_warranty_codes_by_person اکنون از query در سطح دیتابیس استفاده می‌کند به جای فیلتر در حافظه
  • Pagination اکنون به درستی کار می‌کند

✅ 3. رفع مشکل Cache Timeout

فایل: hesabixAPI/app/services/warranty_service.py
تغییرات: مشکل در محاسبه timeout برطرف شد. حالا lockout_minutes قبل از استفاده محاسبه می‌شود.

✅ 4. اضافه کردن بررسی فعال بودن پلاگین در فعال‌سازی عمومی

فایل: hesabixAPI/app/services/warranty_service.py
تغییرات: بررسی فعال بودن پلاگین گارانتی برای کسب و کار در endpoint فعال‌سازی عمومی اضافه شد.

✅ 5. اضافه کردن Index برای کارایی بهتر

فایل: hesabixAPI/adapters/db/models/warranty.py
تغییرات:

  • Index برای activated_by_person_id اضافه شد
  • Index ترکیبی برای business_id و activated_by_person_id اضافه شد

مشکلات فرانت‌اند

✅ 6. رفع مشکل در warranty_management_page.dart

فایل: hesabixUI/hesabix_ui/lib/pages/business/warranty_management_page.dart
تغییرات:

  • حذف لود دستی داده‌ها (که باعث لود دو باره می‌شد)
  • استفاده صحیح از DataTableWidget که خودش داده‌ها را از API می‌گیرد
  • حذف pagination دستی (DataTableWidget خودش pagination دارد)

✅ 7. اضافه کردن UI برای فیلتر محصول

فایل: hesabixUI/hesabix_ui/lib/pages/business/warranty_management_page.dart
تغییرات:

  • Dropdown برای انتخاب محصول اضافه شد
  • فیلتر محصول به query parameters اضافه شد
  • لیست محصولات از API لود می‌شود

✅ 8. اضافه کردن فیلد require_customer_registration در UI

فایل: hesabixUI/hesabix_ui/lib/pages/business/warranty_settings_page.dart
تغییرات:

  • SwitchListTile برای require_customer_registration به بخش تنظیمات مشتری اضافه شد
  • توضیحات مناسب برای این فیلد اضافه شد

✅ 9. اضافه کردن نمایش لینک رهگیری پس از فعال‌سازی

فایل: hesabixUI/hesabix_ui/lib/pages/public/public_warranty_activation_page.dart
تغییرات:

  • ذخیره trackingLinkCode از نتیجه فعال‌سازی
  • نمایش کد رهگیری در صفحه موفقیت
  • راهنمایی برای استفاده از کد رهگیری

خلاصه تغییرات

  • فایل‌های تغییر یافته بک‌اند: 3 فایل
  • فایل‌های تغییر یافته فرانت‌اند: 3 فایل
  • مشکلات رفع شده: 9 مشکل اصلی
  • بهبودهای کارایی: 2 مورد (list_by_person و index ها)
  • بهبودهای UI: 3 مورد

مشکلات باقی‌مانده

برخی مشکلات که نیاز به بررسی بیشتر یا تغییرات ساختاری دارند:

  1. مشکل Race Condition در تولید کد ترتیبی - نیاز به Lock در دیتابیس
  2. عدم وجود endpoint برای لغو/بازگردانی گارانتی
  3. عدم وجود endpoint برای به‌روزرسانی اطلاعات گارانتی
  4. عدم وجود Rate Limiting در endpoint های عمومی
  5. عدم وجود Batch Processing برای تولید کدهای انبوه
  6. مشکلات UI/UX جزئی دیگر

مراحل بعدی

  1. تست تغییرات انجام شده
  2. بررسی عملکرد با داده‌های واقعی
  3. بررسی مشکلات باقی‌مانده و اولویت‌بندی آن‌ها
  4. اضافه کردن تست‌های واحد برای تغییرات

نکات مهم

  • تمام تغییرات با توجه به ساختار موجود کد انجام شده است
  • هیچ تغییر ساختاری بزرگ انجام نشده است
  • تمام تغییرات backward compatible هستند
  • خطاهای لینت بررسی شده و هیچ مشکلی وجود ندارد