# سیستم گزارش خرابی (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. ثبت گزارش از موبایل ```csharp 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 برای اعمال تغییرات دیتابیس: ```powershell Add-Migration AddBugReportTables Update-Database ``` ## نکات مهم 1. **تصاویر**: تصاویر به صورت Base64 encoded ذخیره می‌شوند 2. **لاگ‌ها**: تمام لاگ‌ها به صورت جدا ذخیره می‌شوند 3. **وضعیت پیش‌فرض**: وقتی گزارش ثبت می‌شود، وضعیت آن "Open" است 4. **تاریخ**: تاریخ ایجاد و بروزرسانی خودکار ثبت می‌شود ## Security - API endpoints از `authentication` محافظت می‌شوند - Admin pages تنها برای کاربرانی با دسترسی AdminArea قابل دسترس هستند - حذف و ویرایش نیاز به تأیید دارد