Files
Backend-Api/BUG_REPORT_SYSTEM.md

4.9 KiB

سیستم گزارش خرابی (Bug Report System)

نمای کلی

این سیستم برای جمع‌آوری، ذخیره و مدیریت گزارش‌های خرابی از تطبیق موبایلی طراحی شده است.

ساختار فایل‌ها

Domain Layer

  • AccountManagement.Domain/BugReportAgg/
    • BugReport.cs - موجودیت اصلی
    • BugReportLog.cs - لاگ‌های گزارش
    • BugReportScreenshot.cs - تصاویر ضمیمه شده

Application Contracts

  • AccountManagement.Application.Contracts/BugReport/
    • IBugReportApplication.cs - اینترفیس سرویس
    • CreateBugReportCommand.cs - درخواست ایجاد
    • EditBugReportCommand.cs - درخواست ویرایش
    • BugReportViewModel.cs - نمایش لیست
    • BugReportDetailViewModel.cs - نمایش جزئیات
    • IBugReportRepository.cs - اینترفیس Repository

Application Service

  • AccountManagement.Application/BugReportApplication.cs - پیاده‌سازی سرویس

Infrastructure

  • AccountMangement.Infrastructure.EFCore/
    • Mappings/BugReportMapping.cs
    • Mappings/BugReportLogMapping.cs
    • Mappings/BugReportScreenshotMapping.cs
    • Repository/BugReportRepository.cs

API Controller

  • ServiceHost/Controllers/BugReportController.cs

Admin Pages

  • ServiceHost/Areas/AdminNew/Pages/BugReport/
    • BugReportPageModel.cs - base model
    • Index.cshtml.cs / Index.cshtml - لیست گزارش‌ها
    • Details.cshtml.cs / Details.cshtml - جزئیات کامل
    • Edit.cshtml.cs / Edit.cshtml - ویرایش وضعیت/اولویت
    • Delete.cshtml.cs / Delete.cshtml - حذف

روش استفاده

1. ثبت گزارش از موبایل

POST /api/bugreport/submit

{
  "title": "برنامه هنگام ورود خراب می‌شود",
  "description": "هنگام وارد کردن نام کاربری، برنامه کرش می‌کند",
  "userEmail": "user@example.com",
  "deviceModel": "Samsung Galaxy S21",
  "osVersion": "Android 12",
  "platform": "Android",
  "manufacturer": "Samsung",
  "deviceId": "device-unique-id",
  "screenResolution": "1440x3200",
  "memoryInMB": 8000,
  "storageInMB": 256000,
  "batteryLevel": 75,
  "isCharging": false,
  "networkType": "4G",
  "appVersion": "1.0.0",
  "buildNumber": "100",
  "packageName": "com.example.app",
  "installTime": "2024-01-01T10:00:00Z",
  "lastUpdateTime": "2024-12-01T14:30:00Z",
  "flavor": "production",
  "type": 1,           // Crash = 1
  "priority": 2,       // High = 2
  "stackTrace": "...",
  "logs": ["log1", "log2"],
  "screenshots": ["base64-encoded-image-1"]
}

2. دسترسی به Admin Panel

https://yourdomain.com/AdminNew/BugReport

صفحات موجود:

  • Index - لیست تمام گزارش‌ها با فیلترها
  • Details - نمایش جزئیات کامل شامل:
    • معلومات کاربر و گزارش
    • معلومات دستگاه
    • معلومات برنامه
    • لاگ‌ها
    • تصاویر
    • Stack Trace
  • Edit - تغییر وضعیت و اولویت
  • Delete - حذف گزارش

3. درخواست‌های API

دریافت لیست

GET /api/bugreport/list?type=1&priority=2&status=1&searchTerm=crash&pageNumber=1&pageSize=10

دریافت جزئیات

GET /api/bugreport/{id}

ویرایش

PUT /api/bugreport/{id}

{
  "id": 1,
  "priority": 2,
  "status": 3
}

حذف

DELETE /api/bugreport/{id}

انواع (Enums)

BugReportType

  • 1 - Crash (کرش)
  • 2 - UI (مشکل رابط)
  • 3 - Performance (عملکرد)
  • 4 - Feature (فیچر)
  • 5 - Network (شبکه)
  • 6 - Camera (دوربین)
  • 7 - FaceRecognition (تشخیص چهره)
  • 8 - Database (دیتابیس)
  • 9 - Login (ورود)
  • 10 - Other (سایر)

BugPriority

  • 1 - Critical (بحرانی)
  • 2 - High (بالا)
  • 3 - Medium (متوسط)
  • 4 - Low (پایین)

BugReportStatus

  • 1 - Open (باز)
  • 2 - InProgress (در حال بررسی)
  • 3 - Fixed (رفع شده)
  • 4 - Closed (بسته شده)
  • 5 - Reopened (مجدداً باز)

Migration

برای اعمال تغییرات دیتابیس:

Add-Migration AddBugReportTables
Update-Database

نکات مهم

  1. تصاویر: تصاویر به صورت Base64 encoded ذخیره می‌شوند
  2. لاگ‌ها: تمام لاگ‌ها به صورت جدا ذخیره می‌شوند
  3. وضعیت پیش‌فرض: وقتی گزارش ثبت می‌شود، وضعیت آن "Open" است
  4. تاریخ: تاریخ ایجاد و بروزرسانی خودکار ثبت می‌شود

Security

  • API endpoints از authentication محافظت می‌شوند
  • Admin pages تنها برای کاربرانی با دسترسی AdminArea قابل دسترس هستند
  • حذف و ویرایش نیاز به تأیید دارد