forked from hesabix/arc
157 lines
5.8 KiB
Markdown
Executable file
157 lines
5.8 KiB
Markdown
Executable file
# بررسی دسترسی به صفحه فعالسازی گارانتی
|
|
|
|
## خلاصه بررسی
|
|
|
|
**نتیجه**: صفحه فعالسازی گارانتی (`PublicWarrantyActivationPage`) **وجود دارد** اما **راه دسترسی به آن در نظر گرفته نشده است**.
|
|
|
|
## جزئیات بررسی
|
|
|
|
### ✅ موارد موجود
|
|
|
|
1. **صفحه فعالسازی وجود دارد**:
|
|
- فایل: `hesabixUI/hesabix_ui/lib/pages/public/public_warranty_activation_page.dart`
|
|
- صفحه کاملاً پیادهسازی شده و آماده استفاده است
|
|
- شامل فرم کامل برای ورود اطلاعات فعالسازی
|
|
|
|
2. **صفحه در main.dart import شده**:
|
|
```dart
|
|
import 'pages/public/public_warranty_activation_page.dart';
|
|
```
|
|
|
|
3. **API Endpoint موجود است**:
|
|
- `POST /api/v1/warranty/public/activate`
|
|
- Service در فرانتاند پیادهسازی شده: `WarrantyService.activateWarranty()`
|
|
|
|
### ❌ موارد مفقود
|
|
|
|
1. **Route تعریف نشده**:
|
|
- در فایل `main.dart` هیچ route برای صفحه فعالسازی تعریف نشده است
|
|
- برخلاف صفحه `PublicPersonShareLinkPage` که route دارد: `/public/person-link/:code`
|
|
- صفحه فعالسازی قابل دسترسی نیست
|
|
|
|
2. **لینک در UI کسب و کار وجود ندارد**:
|
|
- در صفحه مدیریت گارانتی (`warranty_management_page.dart`) هیچ دکمه یا لینکی برای دسترسی به صفحه فعالسازی وجود ندارد
|
|
- در صفحه تنظیمات گارانتی (`warranty_settings_page.dart`) هم لینکی وجود ندارد
|
|
|
|
3. **لینک در Dialog جزئیات کد وجود ندارد**:
|
|
- در `warranty_code_details_dialog.dart` که جزئیات کد گارانتی را نمایش میدهد، هیچ لینکی برای فعالسازی وجود ندارد
|
|
|
|
4. **QR Code یا لینک اشتراکگذاری وجود ندارد**:
|
|
- هیچ مکانیزمی برای تولید QR Code یا لینک اشتراکگذاری برای کدهای گارانتی وجود ندارد
|
|
|
|
## مقایسه با صفحات مشابه
|
|
|
|
### صفحه PublicPersonShareLinkPage (موجود و قابل دسترسی)
|
|
|
|
```dart
|
|
GoRoute(
|
|
path: '/public/person-link/:code',
|
|
name: 'public_person_share_link',
|
|
builder: (context, state) => PublicPersonShareLinkPage(
|
|
code: state.pathParameters['code'] ?? '',
|
|
),
|
|
),
|
|
```
|
|
|
|
این صفحه:
|
|
- ✅ Route دارد
|
|
- ✅ قابل دسترسی است
|
|
- ✅ از طریق لینک اشتراکگذاری استفاده میشود
|
|
|
|
### صفحه PublicWarrantyActivationPage (موجود اما غیرقابل دسترسی)
|
|
|
|
- ❌ Route ندارد
|
|
- ❌ قابل دسترسی نیست
|
|
- ❌ هیچ لینکی به آن وجود ندارد
|
|
|
|
## راهحلهای پیشنهادی
|
|
|
|
### 1. اضافه کردن Route (ضروری)
|
|
|
|
```dart
|
|
GoRoute(
|
|
path: '/public/warranty/activate',
|
|
name: 'public_warranty_activate',
|
|
builder: (context, state) {
|
|
final businessCode = state.uri.queryParameters['business_code'];
|
|
return PublicWarrantyActivationPage(
|
|
businessCode: businessCode,
|
|
);
|
|
},
|
|
),
|
|
```
|
|
|
|
یا با business_id:
|
|
```dart
|
|
GoRoute(
|
|
path: '/public/warranty/activate/:business_id',
|
|
name: 'public_warranty_activate',
|
|
builder: (context, state) {
|
|
final businessId = int.tryParse(state.pathParameters['business_id'] ?? '');
|
|
return PublicWarrantyActivationPage(
|
|
businessId: businessId,
|
|
);
|
|
},
|
|
),
|
|
```
|
|
|
|
### 2. اضافه کردن لینک در صفحه مدیریت گارانتی
|
|
|
|
در `warranty_management_page.dart` میتوان دکمهای اضافه کرد:
|
|
- دکمه "لینک فعالسازی" که URL صفحه فعالسازی را نمایش دهد
|
|
- یا دکمه "کپی لینک" برای اشتراکگذاری
|
|
|
|
### 3. اضافه کردن لینک در Dialog جزئیات
|
|
|
|
در `warranty_code_details_dialog.dart` میتوان:
|
|
- دکمه "فعالسازی گارانتی" که به صفحه فعالسازی هدایت کند
|
|
- یا نمایش لینک فعالسازی برای اشتراکگذاری
|
|
|
|
### 4. تولید QR Code
|
|
|
|
میتوان قابلیت تولید QR Code برای کدهای گارانتی اضافه کرد که:
|
|
- شامل لینک صفحه فعالسازی باشد
|
|
- یا مستقیماً شامل کد و سریال گارانتی باشد
|
|
|
|
### 5. لینک اشتراکگذاری
|
|
|
|
مشابه `PublicPersonShareLinkPage`، میتوان:
|
|
- لینک اشتراکگذاری برای هر کد گارانتی ایجاد کرد
|
|
- که مستقیماً به صفحه فعالسازی با کد از پیش پر شده هدایت کند
|
|
|
|
## URL پیشنهادی برای صفحه فعالسازی
|
|
|
|
### گزینه 1: ساده (بدون business_id)
|
|
```
|
|
/public/warranty/activate
|
|
```
|
|
|
|
### گزینه 2: با business_code (Query Parameter)
|
|
```
|
|
/public/warranty/activate?business_code=ABC123
|
|
```
|
|
|
|
### گزینه 3: با business_id (Path Parameter)
|
|
```
|
|
/public/warranty/activate/:business_id
|
|
```
|
|
|
|
### گزینه 4: با کد از پیش پر شده (Query Parameter)
|
|
```
|
|
/public/warranty/activate?code=WR-ABC12345&serial=XYZ789012
|
|
```
|
|
|
|
## نتیجهگیری
|
|
|
|
صفحه فعالسازی گارانتی **کاملاً پیادهسازی شده** اما **غیرقابل دسترسی** است چون:
|
|
|
|
1. ❌ Route تعریف نشده
|
|
2. ❌ هیچ لینکی در UI وجود ندارد
|
|
3. ❌ هیچ مکانیزمی برای اشتراکگذاری وجود ندارد
|
|
|
|
**برای استفاده از این صفحه، باید**:
|
|
1. Route اضافه شود
|
|
2. لینک یا دکمه در UI کسب و کار اضافه شود
|
|
3. (اختیاری) QR Code یا لینک اشتراکگذاری اضافه شود
|
|
|
|
|