Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/WARRANTY_ACTIVATION_PAGE_ACCESS.md
2026-04-14 19:34:55 +03:30

5.8 KiB
Executable file

بررسی دسترسی به صفحه فعال‌سازی گارانتی

خلاصه بررسی

نتیجه: صفحه فعال‌سازی گارانتی (PublicWarrantyActivationPage) وجود دارد اما راه دسترسی به آن در نظر گرفته نشده است.

جزئیات بررسی

✅ موارد موجود

  1. صفحه فعال‌سازی وجود دارد:

    • فایل: hesabixUI/hesabix_ui/lib/pages/public/public_warranty_activation_page.dart
    • صفحه کاملاً پیاده‌سازی شده و آماده استفاده است
    • شامل فرم کامل برای ورود اطلاعات فعال‌سازی
  2. صفحه در main.dart import شده:

    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 (موجود و قابل دسترسی)

GoRoute(
  path: '/public/person-link/:code',
  name: 'public_person_share_link',
  builder: (context, state) => PublicPersonShareLinkPage(
    code: state.pathParameters['code'] ?? '',
  ),
),

این صفحه:

  • ✅ Route دارد
  • ✅ قابل دسترسی است
  • ✅ از طریق لینک اشتراک‌گذاری استفاده می‌شود

صفحه PublicWarrantyActivationPage (موجود اما غیرقابل دسترسی)

  • ❌ Route ندارد
  • ❌ قابل دسترسی نیست
  • ❌ هیچ لینکی به آن وجود ندارد

راه‌حل‌های پیشنهادی

1. اضافه کردن Route (ضروری)

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:

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 یا لینک اشتراک‌گذاری اضافه شود