Skip to content

nrmz/review-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

درباره مساله

#طراحی و پیاده سازی سیستم نظرات محصولات

  • فرض کنید که ما محصولاتی ‎(Product)‏ داریم که برای مشتریان ‎(User)‏ نمایش داده می شوند۔ این محصولات مربوط به شرکت های ‎(Provider)‏ مختلفی هستند۔ مدیر محصولات می تواند هر کدام ازمحصولات را در معرض نمایش مشتریان قرار دهد، برای آن ها امکان ثبت نظر ‎(Comment)‏ و امتیاز (‎Vote)‏ | به صورت جداگانه فعال یا غیرفعال نمایند۔ همچنین امکان انتخاب اینکه نظر و امتیاز برای این محصولات به صورت عمومی برای تمامی بازدیدکنندگان فعال باشد یا فقط خریداران بتوانند پس از تایید خرید نظر ثبت کنند، برای مدیر محصولات باید امکان پذیر باشد۔

#نیازمندی های سیستم

- کاربر وارد صفحه محصولات می شود۔ سمت کلاینت این صفحه یک اپلیکیشن ‎SPA‏ است که دیتای لازم برای رندر شدن صفحه را توسط ‎api‏ هایی از بک اند دریافت می کند۔ قیمت دهی محصولات توسط سرویس استعلام ‎(Enquiry System)‏ انجام می شود و لازم است اطلاعات اینکه هر یک از محصولات نمایش داده شوند یا خیر و امکان ثبت نظر و امتیاز برای آن ها فراهم هست یا خیر از سرویس ‎Review‏ دریافت شود۔ هم چنین سه نظر آخر روی هر محصول و میانگین کل امتیازات و تعداد کل نظرات داده شده به هر محصول نیز. به کلاینت ارسال می شود تا صفحه را برای کاربر رندر نماید۔
- در صورتی که امکان ثبت نظر و امتیاز برای کاربر فراهم باشد، مشتری می تواند این کار را انجام دهد و نظر و امتیاز او در وضعیت تایید نشده ثبت می گردد۔ مدیر محصول می تواند نظرات را مشاهده نماید و نظرات و امتیازات تایید نشده را رد یا تایید کند۔ صرفا نظرات و امتیازات تایید شده در میانگین و تعداد نظرات آن محصول تاثیرگذار هستند۔

خروجی مورد نظر

- الف - طراحی ساختار ¡طد هایی که از سمت کلاینت فراخوانی می شوند را انجام دهید۔ لطفا ذکر کنید که برای رندر شدن صفحه با توجه به توضیحات چند ‎api‏ با چه ورودی هایی ‎call‏ شوند و چه خروجی هایی داشته باشند۔ همچنین چه سرویس یا سرویس هایی و چگونه در بک اند این ‎api‏ را پاسخ می دهد۔ (در این بخش طراحی و معماری سرویس و apiها مدنظر است)
خروجی مدنظر برای دریافت اطلاعات در دایرکتوری result/A در پست من قابل دسترس است
- پ - با استفاده از ‎PHP Laravel‏ و بدون استفاده از ابزارهای تولید اپلیکیشن مانند ‎«CrestApps‏ سرویس ‎Review‏ را صرفا در سطح بک اند (بدون فرانت اند) پیاده سازی کنید۔ برای خروجی کار ‎ERD‏ سرویس، سورس کد و ‎API Doc‏ (ترجیحا ‎(Postman‏ را ارسال نمایید۔ توجه کنید که سرویس، توضیحات ذکر شده را پوشش دهد و نیازی به پیاده سازی سرویس های دیگر مانند سرویس ‎Enquiry‏ نقش های کاربران و ‎authentication‏ آن ها نیست. (در این بخش کیفیت ساختار پروژه کدنویسی تمیز و کوئری های بهینه مدنظر است)

نصب و راه‌اندازی

- تنظیمات دیتابیس فایل env قرار دارد

‍‍‍‍‍‍‍‍‍‍‍‍‍DB_CONNECTION=mysql

DB_HOST=mysql

DB_PORT=3306

DB_DATABASE=homestead

DB_USERNAME=homestead

DB_PASSWORD=secret

- این پارامتر هم محدودیت تعداد آخرین کامنت ها را تنظیم می کند که به صورت پیش فرض 3 در نظر گرفته شده است

show_review_count=3

- برای اجرای برنامه نیاز است ابتدا دستور زیر را اجرا تا پکیج های لازم نصب شود

docker-compose run --rm composer install

- سپس با دستور زیر برنامه اجرا می شود و در http://localhost:8000 دسترس خواهد بود

docker-compose up -d server

- با اجرای دستور زیر علاوه بر ساخت جداول دیتابیس؛ داده های تصادفی هم برای تست ثبت خواهد شد

docker-compose run --rm artisan migrate --seed

- برای احراز هویت کاربران از passport استفاده شده است و نیاز است با دستور زیر نصب و راه اندازی شود

لطفا بعد از هر بار اجرای دستور migrate، مجددا دستور زیر اجرا شود

docker-compose run --rm artisan passport:install

- برای دسترسی به نمودار erd دیتابیس از آدرس زیر استفاده نمایید

همینطور در دایرکتوری ./src/docs/erd نیز فایل استاتیک آن در دسترس است

http://localhost:8000/erd

- همچنین برای ساخت مجدد آن می توانید از دستور زیر استفاده نمایید

docker-compose run --rm artisan erd:generate

- با استفاده از اطلاعات زیر می توانید با متد login در پست من وارد شوید

"email": "[email protected]"

"password": "password"

پست من

- در لینک زیر لیست Api و نمونه request & response در دسترس است

Review Task Postman.

- لطفا پارامتر token و baseUrl در environment postman تعریف کنید
  • به محض لاگین یا رجیستر به صورت اتوماتیک token از سمت سرور دریافت خواهد شد ونیازی به مقداردهی دستی ندارد

baseUrl: http://localhost:8000/api

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages