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

100 lines
5 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# گزارش رفع مشکلات افزونه گارانتی
این گزارش شامل مشکلات رفع شده در بخش افزونه گارانتی (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 هستند
- خطاهای لینت بررسی شده و هیچ مشکلی وجود ندارد