{ "tasks": [ { "id": "EPIC-20-TASK-01", "title": "Backend NestJS: Standardized Exception Filter & Farsi Error Schema", "description": "Create CustomHttpExceptionFilter and Farsi error response schema across all NestJS endpoints for detailed, localized, and structured error responses.", "architectural_layer": "infrastructure", "assigned_role": "05_dev_backend", "priority": "HIGH", "status": "completed", "max_files_allowed": 5, "estimated_minutes": 30, "dependency_task_ids": [], "acceptance_criteria": [ "ایجاد فیلتر استثنای سفارشی CustomHttpExceptionFilter در NestJS", "بازگرداندن پاسخ‌های خطا با فرمت مشخص شامل statusCode, message (فارسی), code, details, timestamp, path", "تست و اطمینان از عملکرد یکپارچه در تمام کنترلرها" ], "sub_steps": [ { "index": 1, "name": "create_error_response_schema", "description": "Define ErrorResponseDto and error code enums", "status": "done" }, { "index": 2, "name": "implement_exception_filter", "description": "Implement CustomHttpExceptionFilter in backend/src/common/filters", "status": "done" }, { "index": 3, "name": "bind_global_filter", "description": "Bind global exception filter in main.ts", "status": "done" } ] }, { "id": "EPIC-20-TASK-02", "title": "Backend NestJS: Farsi ValidationPipe & Prisma Exception Mapper", "description": "Customize NestJS ValidationPipe and Prisma exception mapping to produce friendly Farsi messages for DTO validation errors and database constraints (P2002, P2025).", "architectural_layer": "infrastructure", "assigned_role": "05_dev_backend", "priority": "HIGH", "status": "completed", "max_files_allowed": 4, "estimated_minutes": 25, "dependency_task_ids": ["EPIC-20-TASK-01"], "acceptance_criteria": [ "ترجمه و نگاشت تمام خطاهای ValidationPipe به پیام‌های توصیفی فارسی", "مدیریت خطاهای دیتابیس پریزما (Prisma Known Error Code Mapper) به خطاهای کاربرپسند فارسی" ], "sub_steps": [ { "index": 1, "name": "customize_validation_pipe", "description": "Configure ValidationPipe exceptionFactory for Farsi field messages", "status": "done" }, { "index": 2, "name": "implement_prisma_error_mapper", "description": "Implement PrismaErrorFilter for database constraint handling", "status": "done" } ] }, { "id": "EPIC-20-TASK-03", "title": "Customer App Next.js: Standardized Error Interceptor & Farsi Toast Handler", "description": "Update application/lib/services/api.ts to parse standardized error schemas and display structured Farsi toasts and inline field error alerts.", "architectural_layer": "presentation_ui", "assigned_role": "06_dev_frontend", "priority": "HIGH", "status": "completed", "max_files_allowed": 4, "estimated_minutes": 25, "dependency_task_ids": ["EPIC-20-TASK-01"], "acceptance_criteria": [ "استخراج پیام‌های فارسی و جزئیات فیلدها از لایه API", "نمایش اعلان‌های حرفه‌ای Farsi Toast از طریق Sonner در اپلیکیشن فرانت" ], "sub_steps": [ { "index": 1, "name": "update_api_client_error_parser", "description": "Add error parser to lib/services/api.ts", "status": "done" }, { "index": 2, "name": "integrate_toast_notifications", "description": "Connect API error parser to Sonner toast notification system", "status": "done" } ] }, { "id": "EPIC-20-TASK-04", "title": "Admin Panel React: Global Axios Interceptor & Auth Error Handling", "description": "Implement global Axios response interceptor in admin-panel to handle 401 unauthenticated redirect, 403 forbidden alerts, and 500 Farsi toast messages.", "architectural_layer": "presentation_ui", "assigned_role": "06_dev_frontend", "priority": "HIGH", "status": "completed", "max_files_allowed": 3, "estimated_minutes": 20, "dependency_task_ids": ["EPIC-20-TASK-01"], "acceptance_criteria": [ "ایجاد Axios Interceptor در پنل ادمین برای مدیریت خودکار خطاهای احراز هویت (۴۰۱)", "نمایش پیام‌های فارسی توصیفی خطا در بخش مدیریت" ], "sub_steps": [ { "index": 1, "name": "create_axios_interceptor", "description": "Add response interceptor in admin-panel src/services/api.ts", "status": "done" } ] }, { "id": "EPIC-21-TASK-01", "title": "Customer App Next.js: Trust Seals & Enamad Dedicated Page (/trust-seals)", "description": "Design and build premium Farsi Trust Seals page (/trust-seals and /namad) featuring eNamad iframe, Samandehi badge, Veterinary Organization licenses, and authenticity guarantees.", "architectural_layer": "presentation_ui", "assigned_role": "06_dev_frontend", "priority": "MEDIUM", "status": "completed", "max_files_allowed": 5, "estimated_minutes": 35, "dependency_task_ids": [], "acceptance_criteria": [ "ایجاد مسیر اختصاصی /trust-seals و /namad با طراحی مدرن و شکیل", "ادغام کامپوننت نماد الکترونیکی (eNamad) به همراه حالت لودینگ و fallback", "نمایش مشخصات پروانه‌ها و مجوزهای سازمان دامپزشکی و غذا و دارو" ], "sub_steps": [ { "index": 1, "name": "create_trust_seals_page", "description": "Create app/trust-seals/page.tsx with responsive glassmorphism design", "status": "done" }, { "index": 2, "name": "implement_enamad_component", "description": "Build reusable EnamadBadge component with async loading", "status": "done" }, { "index": 3, "name": "add_footer_trust_links", "description": "Link trust seals page in Footer.tsx and add inline footer badges", "status": "done" } ] }, { "id": "EPIC-22-TASK-01", "title": "Backend NestJS: MeliPayamak SMS Integration Module (Pattern/Service Line)", "description": "Build modular SmsService using MeliPayamak REST API / Pattern Service to send ultra-fast OTPs, order notifications, and admin alerts bypassing user blacklists.", "architectural_layer": "business_logic", "assigned_role": "05_dev_backend", "priority": "HIGH", "status": "completed", "max_files_allowed": 4, "estimated_minutes": 30, "dependency_task_ids": [], "acceptance_criteria": [ "پیاده‌سازی SmsModule و SmsService با قابلیت متصل شدن به وب‌سرویس پترن ملی‌پيامك", "پشتیبانی از متغیرهای پیکربندی API Token, Shared Service Number و Pattern Body" ], "sub_steps": [ { "index": 1, "name": "create_sms_module", "description": "Create SmsModule, SmsService, and configuration schema", "status": "done" }, { "index": 2, "name": "implement_melipayamak_pattern_client", "description": "Implement HTTP pattern sending methods for MeliPayamak API", "status": "done" } ] }, { "id": "EPIC-22-TASK-02", "title": "Backend NestJS: OTP SMS Authentication Flow Integration", "description": "Connect user register/login and password reset flows in AuthModule to SmsService for instant OTP code transmission.", "architectural_layer": "business_logic", "assigned_role": "05_dev_backend", "priority": "HIGH", "status": "completed", "max_files_allowed": 3, "estimated_minutes": 25, "dependency_task_ids": ["EPIC-22-TASK-01"], "acceptance_criteria": [ "ارسال کد تایید ۴/۶ رقمی ثبت‌نام و ورود از طریق سرویس پترن ملی‌پيامك", "اعتبارسنجی انقضای کد OTP در دیتابیس/ردیس" ], "sub_steps": [ { "index": 1, "name": "connect_auth_service_to_sms", "description": "Call SmsService.sendOtp in Authservice register and forgot-password flows", "status": "done" } ] }, { "id": "EPIC-22-TASK-03", "title": "Backend NestJS: Order Status SMS Notifications & Track Link Dispatch", "description": "Trigger automated SMS dispatches to customers upon Order Confirmation, Order Shipment (with tracking code), and Cancellation.", "architectural_layer": "business_logic", "assigned_role": "05_dev_backend", "priority": "MEDIUM", "status": "completed", "max_files_allowed": 3, "estimated_minutes": 20, "dependency_task_ids": ["EPIC-22-TASK-01"], "acceptance_criteria": [ "ارسال پیامک خودکار تایید سفارش همراه با شماره فاکتور پس از پرداخت موفق", "ارسال پیامک تغییر وضعیت به 'ارسال شد' به همراه کد رهگیری پستی" ], "sub_steps": [ { "index": 1, "name": "add_order_sms_hooks", "description": "Hook SmsService into OrdersService updateStatus and placeOrder methods", "status": "done" } ] }, { "id": "EPIC-22-TASK-04", "title": "Backend NestJS: Pet Care Reminders & Admin Alert SMS Services", "description": "Implement Cron Job for pet health reminders (vaccination, deworming) and admin notification alerts on B2B wholesale applications.", "architectural_layer": "business_logic", "assigned_role": "05_dev_backend", "priority": "MEDIUM", "status": "completed", "max_files_allowed": 4, "estimated_minutes": 25, "dependency_task_ids": ["EPIC-22-TASK-01"], "acceptance_criteria": [ "ارسال پیامک خودکار یادآوری زمان واکسیناسیون و انگل‌زدایی پت‌ها", "ارسال پیامک اطلاع‌رسانی به مدیر فروشگاه در زمان ثبت درخواست‌های همکاری عمده" ], "sub_steps": [ { "index": 1, "name": "implement_pet_care_cron_sms", "description": "Create PetsCronService to query upcoming reminders and dispatch SMS", "status": "done" }, { "index": 2, "name": "implement_wholesale_admin_sms_alert", "description": "Trigger SMS alert to admin mobile on new wholesale application", "status": "done" } ] } ] }