ساخت سیستمی برای صدور فاکتور و گزارش فروش روزانه
مهارتهای مورد نیاز:
NestJS
MongoDB
RabbitMQ
Cron Jobs
RESTful APIs
ارسال ایمیل
تست (واحد و یکپارچه)
سناریو:
شما باید سیستمی بسازید که کاربران بتوانند فاکتورهای مربوط به تراکنشهای فروش را ایجاد کنند. این سیستم به صورت خودکار یک گزارش خلاصه فروش روزانه را در ساعت 12 ظهر هر روز تولید کرده و از طریق RabbitMQ به صف ارسال کند. یک سرویس جداگانه مصرفکننده این پیامها را دریافت کرده و ایمیل حاوی گزارش را ارسال میکند.
جزئیات تسک
1. سرویس ایجاد فاکتور:
راهاندازی پروژه:
یک پروژه NestJS جدید ایجاد کنید.
MongoDB را برای ذخیره دادهها ادغام کنید.
طراحی اسکیمای MongoDB:
مدل فاکتور را بر اساس فیلدهای زیر طراحی کنید:
customer (رشته): نام یا شناسه مشتری
amount (عدد): مبلغ کل فاکتور
reference (رشته): کد مرجع فاکتور
date (تاریخ): تاریخ ایجاد فاکتور
items (آرایهای از آبجکتها): هر آیتم شامل:
sku (رشته): شناسه یکتا برای آیتم
qt (عدد): تعداد آیتم
توسعه REST API:
ایجاد اندپوینتهای زیر:
POST /invoices: برای ایجاد یک فاکتور جدید
GET /invoices/:id: دریافت جزئیات یک فاکتور بر اساس ID
GET /invoices: دریافت لیست تمام فاکتورها (با امکان فیلتر براساس محدوده زمانی)
تست:
نوشتن تستهای واحد برای منطق ایجاد و بازیابی فاکتور
نوشتن تستهای یکپارچه برای اندپوینتهای REST API با استفاده از Supertest
2. گزارش خلاصه فروش روزانه:
راهاندازی Cron Job:
یک Cron Job برای اجرای روزانه در ساعت 12 ظهر پیادهسازی کنید.
عملکرد Cron Job:
محاسبه فروش کل روز
محاسبه تعداد کل فروختهشده از هر آیتم (براساس SKU)
آمادهسازی یک گزارش خلاصه
ادغام RabbitMQ:
گزارش خلاصه فروش روزانه را به صفی به نام daily_sales_report در RabbitMQ ارسال کنید.
پیام شامل اطلاعات زیر باشد:
مجموع مبلغ فروش
خلاصه فروش هر آیتم (SKU و تعداد کل فروختهشده)
3. سرویس مصرفکننده برای ارسال ایمیل:
ایجاد سرویس جداگانه (email-sender):
RabbitMQ را برای مصرف پیامها از صف daily_sales_report تنظیم کنید.
عملکرد مصرفکننده:
دریافت گزارش خلاصه فروش
ارسال ایمیل شامل گزارش (میتوانید ارسال ایمیل را شبیهسازی کنید یا از سرویسهایی مثل SendGrid استفاده کنید)
تست:
نوشتن تستهای واحد برای پردازش پیام و ارسال ایمیل
نیازمندیهای فنی:
سرویس ایجاد فاکتور:
طراحی صحیح اسکیمای MongoDB و REST API
Cron Job برای تولید گزارش روزانه
RabbitMQ برای ارسال گزارش خلاصه فروش
سرویس مصرفکننده (ارسال ایمیل):
RabbitMQ برای پردازش گزارشها
پیادهسازی شبیهسازیشده یا واقعی ارسال ایمیل
عمومی:
استفاده از Docker یا Docker Compose برای تنظیم و اجرای ساده هر دو سرویس
مدیریت خطاها و لاگنویسی مناسب در هر دو سرویس
پوششدهی کامل تستها برای عملکردهای کلیدی و شرایط خاص
این پروژه روی گیتهاب بخشیش انجام شده میتونید همون رو کمک کنید تکمیلش کنیم
این آگهی از وبسایت پونیشا پیدا شده، با زدن دکمهی تماس با کارفرما، به وبسایت پونیشا برین و از اونجا برای این شغل اقدام کنین.
هشدار
توجه داشته باشید که دریافت هزینه از کارجو برای استخدام با هر عنوانی غیرقانونی است. در صورت مواجهه با موارد مشکوک، با کلیک بر روی «گزارش مشکل آگهی» به ما در پیگیری تخلفات کمک کنید.