گزارش موقت پروژه

به‌روزرسانی وضعیت پیشرفت و موارد فنی

خلاصه وضعیت

می‌دونم علاقه‌ای به جزئیات فنی نداری پس اصل حرف رو اول می‌زنم و جزئیات فنی رو می‌ذارم در پیام‌های بعدی که ازت می‌خوام با دقت بخونی چون من موظفم بگم تا هم پیچیدگی کاری که انجام شده و داره انجام میشه رو بدونی، و هم باید بدونی سیستم چطور کار می‌کنه تا تصمیم‌های بعدی که می‌گیری و قابلیت‌های دیگه‌ای که بر این اساس می‌تونی بگی می‌تونیم ایجاد کنیم رو بهم بگی:

پیشرفت‌های انجام شده:

  • شاخ غول و چیزی که درش گیر کرده بودم شکسته (ساخت وب‌هوکی که بی‌برو برگرد کار کنه)
  • معماری دیتابیس به صورت کامل انجام شده. (در چند مرحله مجبور شدم این معماری رو اصلاح کنم و واقعا کار سخت و پیچیده‌ایه، برای این کار مجبور شدم postgresql رو خوب بفهمم)
  • ستاپ سرور‌های لینوکسی‌مون برای پرفرمنس و استیبل بودن انجام شده
  • وب‌های دبیر، زنجیر و وضع‌مان‌چونه؟ طراحی و ساخته شده.
  • وب‌اپ دبیر کامل و دقیق کار می‌کنه. (از همه‌ی تست‌های ممکن در تمام سناریو‌های ممکن پیروز بیرون اومده).
  • توکن‌های اختصاصی دیجی‌کالا (۶ پنل از ۸ پنل) ساخته شده (هر کدوم یه مرحله تیکت و دو مرحله طراحی رمزنگاری و رمزگشایی برای دریافت توکن بود.)
  • برای ۲ تا از پنل‌ها هنوز بهمون دسترسی ساخت توکن ندادن که بهشون تیکت زدم دوباره.
  • توکن با سلام دریافت شد.
  • مستندات API تمام این‌ها رو ایندکس کردم و داکیومنت‌شده دارم.
  • فرایندهای مرتبط به موجودی روی کاغذ و در تست‌های لوکال کار می‌کنه. (باید این هفته دونه دونه با محصولات تستی با حسین امتحان کنیم)
  • برای تمام کدها مراحل ورژن‌کنترل انجام شده (در گیتهاب) تا برای توسعه‌های بعدی دهن‌مون سرویس نباشه.
  • برای تمام کدها تا همین لحظه همه‌ی داکیومنت‌نویسی‌ها انجام شده (باید یه دور از اول بازم باید بشینم بخونم)

موارد نیازمند توجه:

  • وب‌اپ زنجیر و وضع‌مان چونه نیاز به دیباگ و برطرف‌کردن یه سری مشکلات داره. (در بعضی سناریوها شکست خوردن)
  • توکن‌های وردپرس یه گیر و گور پرفرمنسی باهاش دارم (تاخیر در ارسال داده‌ها دارن) که دارم روی یه ووکامرس لوکال که ساختم باهاش ور می‌رم تا حل‌اش کنم.

من آخر این هفته رو روز ددلاین و شکست پروژه در صورت تموم نشدن اعلام کردم. از نظر من پروژه تموم نشده و طبق حرف خودم امیرحسین عاملی به وعده‌اش نرسید. ۹۰ مساوی ۱۰۰ نیست. ولی من فراتر از ۱۰۰ خودم رو گذاشتم تا این پروژه رو تموم کنم. کمال‌گرایی هم نکردم (قانون‌ام این بود که استانداردها در ساده‌ترین حالت و به دور از پیچیدگی باشه و واقعا کار کنه) به قله واقعا نزدیکم. اما امر امر شماست. استدعا دارم بقیه‌ی موارد رو ولی بخونی.

اطلاعات پایه

محصول

که پایه‌ی همه چیزه! آن چیز که خصوصیات فیزیکی، بسته‌بندی، نام، عنوان، برند و استان مشترک دارد. (پس شکر پنیر محصول نیست! شکر پنیر هلدار ۲۰۰ گرمی برند شکرریز محصول است.)

شناسه‌ی محصول

هر محصولا شناسه‌ی یکتا داره (که در جریانید).

دسته‌ی محصول

یک یا چند محصول با این داده‌های یکسان: ۱.قیمت واحد ۲.تاریخ تولید ۳.تاریخ انقضا

شناسه‌ی دسته محصول- batch-PID (که در نهایت شناسه‌ی دسته‌ی یکتا خواهند داشت)

محصول nعددی

محصولی که از یک محصول دیگه منشعب شده و با یک شناسه‌ی جدید در بسته‌های nعددی فروش میره

محصول مادر

محصولی که محصولات nعددی مشخصی از اون منشعب شدن (در دیتابیس به یکدیگر متصل شده‌اند)

پنل‌های فروش:

  • ۸ پنل در دیجی‌کالا
  • ۲ پنل ووکامرسی (سایت مالمو و استریج)
  • ۱ پنل باسلام

توکن اختصاصی دیجی‌کالا

کلید API که ما می‌تونیم ازش به عنوان رمز استفاده کنیم و بر اساس مستندات دیجی‌کالا باهاش داده‌هایی که می‌خوایم رو بفرستیم یا بگیریم.

وب‌هوک

مثل یه صندوق پسته که آدرسش رو به جاهایی که می‌خوایم میدیم که به صورت زنده تغییرات رو برامون ارسال کنن. (البته قاعدتا خیلی پیچیده‌تر از این مثاله)

توکن API

به جز دیجی‌کالا برای سایت و با سلام توکن‌های مختلفی داریم.

تکنولوژی‌ها و پلتفرم‌ها:

  • سوپابیس: یه پلتفرم مدیریت داده‌ها بر پایه‌ی postgresql (که قابلیت‌های خیلی خفنی برای دیتابیس میده). نگهداری تمام داده‌های محصول، موجودی، فروش، کاربران پنل‌ها، عکس‌های سایت (به زودی)، تعیین سطح دسترسی، (و بخشی از بک‌اند و فرایندها) روی این بستر انجام میشه.
  • کولیفای: پلتفرم مدیریت کانتینترهای متفاوت‌مون (فعلا سوپابیس و n8n ولی خیلی خیلی هنوز باهاش کار داریم)
  • ورکر کلادفلر: سرورهای لبه و رایگان کلادفلر که تا صدهزار فراخوان رو در روز جواب میده که به خوبی (بسیار بیشتر از نیازمون) پاسخ‌گوی ما هست)
  • هونو: پلتفرمی برای ساخت وب (بک‌اند ساده و سبک)
  • اج‌تی‌ام‌ایک‌س (htmx): فریمورکی برای ساخت وب‌پیج‌ها بدون دنگ و فنگ‌ و پیچیدگی زیاد.
  • ابرآروان: بستر سرور وب‌هوک‌هامون، بستر دامنه‌ی malmoyar
  • کلادفلر: بستر ورکرهامون، بستر دامنه‌ی amelink
  • هتزنر: بستر کولیفای‌مون

تشریح بیشتر

پنل دبیر (پنل تیم تامین)

قابلیت‌های:

  • ساخت شناسنامه‌ی محصول (بسیار بهتر از شناسه‌ساز قبلی که بر پایه‌ی گوگل‌اسکرپیت بود که کن‌فیکون‌ شده.)
  • ساخت دسته‌های مختلف محصول تامین‌شده ( هر دسته واخدهای اطلاعاتی یکتا داره: با قیمت خرید و فروش، تاریخ فاکتور، حد سفارش، تاریخ تولید و انقضا)
  • و امکان ادیت تمام موارد بالا.
  • شناسه‌یاب پیشرفته (حس می‌کنم دارم برای سپاه گزارش می‌نویسم، یه شناسه‌یابه دیگه😂)

فرایند:

  • محصولات جدید که شناسنامه (شناسه و اطلاعات اصلی) می‌خواد توسط تیم تامین شناسنامه‌اش ساخته می‌شه، زمانی که محصول به انبار رسید بر اساس هر فاکتور و بسته‌ی واصله یه دسته (با شناسه‌ی دسته) توسط تیم تامین براش ایجاد میشه که موارد یکتای خودش رو داره
  • به محض تامین به صورت خودکار برای تیم فروش در پنل زنجیر (که پایین توضیح‌اش میدم)‌ پیامی دریافت میشه که چه محصولاتی تامین شدن که براشون تصمیم‌گیری بشه.

نکات:

  • این پنل چون پایه‌ی همه‌چیزه تمام تلاشم رو کردم در استانداردترین و با درنظر گرفتن تمام جزئیات و در عین سادگی و کاربرمحوری بسازم.
  • کار با این پنل بیشتر با تیم تامینه و برای این که تیم تامین بتونه کامل باهاش کار کنه نیازمنده اینه که یه آموزش دقیق بذارم تا اول بفهمه داده‌ها در دیتابیس‌مون چطور ذخیره میشه و بهتره که چه نکاتی رو مدنظر بگیره.

نکات فنی:

  • زبان‌ها: htmx (typescript) + hono + tailwindcss بر روی ورکر کلادفلر .
  • متصل به سوپابیس

پنل زنجیر (با شعار واعتصمو بحبل‌الله جمیعا)

قابلیت‌های:

  • روی میز: بخشی که محصولاتی که تامین شدن و میزان موجودی‌شون در پنل‌های فروش با میزان موجودی‌شون در انبار یکی نیست دیده میشن (باید براشون تعیین و تکلیف صورت بگیره)
  • توزیع موجودی‌های جدید (واصله از تیم تامین) با پیچیده‌ترین حالت‌های ممکنی که بخوایم:
    • توزیع یک دسته در یک پنل
    • توزیع یک دسته در برخی پنل‌ها
    • توزیع یک دسته در تمام پنل‌ها
    • توزیع برخی دسته‌ها در یک پنل‌
    • توزیع برخی دسته‌ها در برخی پنل‌ها
    • توزیع برخی دسته‌ها در تمام پنل‌ها
    • توزیع تمام دسته‌ها در یک پنل
    • توزیع تمام دسته‌ها در برخی پنل‌ها
    • توزیع تمام دسته‌ها در تمام پنل‌ها
  • اتصال موجودی بین دسته‌های یک عددی و دوعددی و سه عددی و پنج عددی! (در این بخش که مناسب محصولاتیه که چند عددی می‌فروشیم، کاربر باید یک دسته‌ی خاص رو اول تعیین کنه که شناسه‌ی دوعددی‌اش (یا هر عددی‌اش) چیه. (در جریان هستیم که محصولات چند عددی شناسه‌ی جدا براشون طراحی شده بود که چنین روزی به کارمون بیاد) بعد سیستم می‌فهمه که این مربوط به چیه، و ما در سیستم می‌تونیم متوجه بشیم که از یک محصول چه محصولات چندعددی‌ای ساخته شده و محصول مادر، مادر چند محصوله.)
  • دارین به این فکر می‌کنین بعد فروش چطور موجودی‌ها رو کم کنین؟ این بخش به صورت خودکار کار می‌کنه و به محض فروش در هر جایی موجودی‌ها در پنل زنجیر و در دیتابیس و در پنل‌های فروش مختص این دسته کم و هماهنگ میشه.

بررسی احتمالات به فنا رفتن؟

  • مسئولیت‌پذیری دیجی و باسلام و ووکامرس؟ (سیستم وب‌هوکی‌ای در جهان این ادعا رو دارن که ما به صورت لایو به شما دیتا رو می‌دیم مگه یه درصد یه اتفاق بدی بیافته مثلا اسرائیل موشک بزنه به مرکز فرماندهی دیجی‌کالا)!

پنل وضع‌مان‌چونه؟

قابلیت‌های:

  • بررسی وضعیت حدسفارش
  • بررسی وضعیت تاریخ انقضاها
  • بررسی فروش روز، ماه، سال و قس علی هذه. (در تمام پنل‌ها)
  • بررسی تامین محصولات

(این بخش به نظرم باید جدا می‌بود تا همه می‌تونستن در یه فضای مشترک و محیط ساده‌ایی جدای از بقیه‌ی وب‌اپ‌ها ببینن چه خبره و چه مواردی نیاز به تعیین و تکلیف داره.

مواردی که به این پنل اضافه میشه:

  • از جایی که دیجی گزارش‌های خودش رو فقط تا ۳۰ روز میده یه فرایند طراحی کردم که روزانه گزارش و اینستایت‌های روز رو هر ۲۴ ساعت یکبار بگیره و ذخیره کنه (ولی هنوز کدش رو ننوشتم)
  • وضعیت بلاگ‌ها (در سایت آخرین بلاگ‌ها و وضعیت انتشارشون چطور بوده)

اتومیشین‌هایی که می‌تونیم توسط supabase و همچنین برای مدیریت منابع مصرفی سوپایس با همکاری n8n داشته باشیم

حین طراحی این اپ‌ها و سیستم به ذهنم یه سری موارد اومد:

مواردی که اس‌ام‌اس یا پیام در تلگرام ارسال بشه (به هر کسی که مشخص کنیم)

  • به محض فروش در هر پنلی
  • به محض رسیدن یه محصول به حد سفارش
  • به محض تغییر موجودی یک دسته توسط تیم تامین پیام به تیم فروش ارسال بشه

نتیجه‌گیری

پروژه در حال پیشرفت است و بخش‌های اصلی سیستم طراحی و پیاده‌سازی شده‌اند. با این حال، هنوز نیاز به تست‌های بیشتر و برطرف کردن برخی مشکلات عملکردی وجود دارد. با توجه به پیچیدگی سیستم و تعداد بالای پنل‌ها و ادغام‌ها، نیاز به هماهنگی بیشتر و آموزش کاربران نهایی احساس می‌شود.

با احترام،

تیم توسعه