185 lines
10 KiB
JSON
185 lines
10 KiB
JSON
{
|
|
"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" }
|
|
]
|
|
}
|
|
]
|
|
} |