داشبورد مدیریتی Admoon

نمای کلی

مدیریت تله‌متری زنده کمپین‌های تبلیغاتی و تراکنش‌های سنگین مالی با چالش‌های عمده فرانت‌اند روبرو بود: استریم همزمان داده‌ها و نمودارها باعث افت فریم شدید و تاخیر در پاسخگویی (INP بالای ۳۲۰ms) می‌شد، پیچیدگی تسویه چندارزی با رفرش صفحه از بین می‌رفت و ناهماهنگی قراردادهای API موجب خطاهای ران‌تایم در کلاینت می‌گردید.

طراحی معماری مقیاس‌پذیر چندمستأجره با Next.js App Router و متدولوژی Feature-Sliced Design. جداسازی رندرهای سنگین نمودارها با Concurrent Transitions در React، مجازی‌سازی نودهای DOM در جداول AG-Grid Enterprise، پیاده‌سازی ماشین حالت تسویه با پایداری نشست در Redux Persist، و خودکارسازی کلاینت‌های امن با Orval و Zod.

پاسخگویی تعامل (INP)
کمتر از ۱۸۰ میلی‌ثانیه
مجازی‌سازی جداول
۶۰ فریم بر ثانیه (۲,۰۰۰+ ردیف)
پایداری قراردادها
۱۰۰٪ تایپ‌های امن و همگام
داشبورد مدیریتی Admoon
چالش‌های مهندسی

گلوگاه‌های فنی، عملکرد رندرینگ و معماری مقیاس‌پذیر

مدیریت تله‌متری زنده کمپین‌های تبلیغاتی و تراکنش‌های سنگین مالی با چالش‌های عمده فرانت‌اند روبرو بود: استریم همزمان داده‌ها و نمودارها باعث افت فریم شدید و تاخیر در پاسخگویی (INP بالای ۳۲۰ms) می‌شد، پیچیدگی تسویه چندارزی با رفرش صفحه از بین می‌رفت و ناهماهنگی قراردادهای API موجب خطاهای ران‌تایم در کلاینت می‌گردید.

چالش‌های کلیدی پیاده‌سازی و راهکارهای فنی:

بهینه‌سازی شاخص INP به زیر ۱۸۰ میلی‌ثانیه در داشبوردهای تحلیلی

رندر همزمان نمودارهای سنگین ECharts و بروزرسانی داده‌های AG-Grid باعث انسداد ترد اصلی مرورگر شده و شاخص INP را در هنگام اعمال فیلترها به بیش از ۳۲۰ میلی‌ثانیه می‌رساند.

↳ جداسازی وضعیت تعاملی UI از محاسبات نمودار با استفاده از React startTransition و اعمال Debounce ۱۵۰ میلی‌ثانیه‌ای روی فیلترها.

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

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

↳ پیاده‌سازی هوک اختصاصی ماسک فیلدهای ارزی با تبدیل Debounce شده نرخ لحظه‌ای و قوانین اعتبارسنجی Zod جهت بررسی تطابق مجموع مبالغ تقسیمی با صورت‌حساب قبل از فعال شدن دکمه پرداخت.

بروزرسانی خوش‌بینانه (Optimistic) در ماتریس ۲۵ سطح دسترسی

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

↳ توسعه جهش‌های خوش‌بینانه در استور با قابلیت بازگشت خودکار در صورت خطا و دسته‌بندی درخواست‌های PATCH با مکانیزم تلاش مجدد.

بودجه عملکردی

معیارهای عملکردی و استانداردهای کیفی فرانت‌اند

01< 180ms

Interaction to Next Paint (INP)

Target Budget: < 200ms

اندازه‌گیری‌شده در پنل Performance ابزار Chrome DevTools با شبیه‌سازی کاهش ۴ برابری سرعت CPU در حین فیلترینگ مداوم. انتقال رندرهای مجدد نمودار و فیلترها به React startTransition جهت حفظ پاسخگویی آنی UI.

0260 FPS (0 Frame Drops)

Data Table Virtualization

Target Budget: 60 FPS Sustained

اندازه‌گیری‌شده با ابزار Frame Rendering Stats مرورگر کروم در حین اسکرول سریع بیش از ۲,۰۰۰ رکورد مالی. بازیافت نودهای خارج از صفحه با مجازی‌سازی ردیف‌های AG-Grid و محدود کردن نودهای فعال DOM به ۱۸ ردیف.

03Zero Runtime Drift

API Contract Synchronization

Target Budget: 100% Type-Safe

اعتبارسنجی‌شده از طریق تولید خودکار کلاینت Orval از OpenAPI و بررسی خطاهای تایپ با دستور `tsc --noEmit` در فرآیند بیلد. تمام مرزهای ورودی با اسکیماهای زمان اجرای Zod کنترل می‌شوند.

صفحات و بخش‌های پروژه

معماری اجزا و بررسی کامل صفحات

مرکز فرماندهی ادمین و تحلیل داده‌های پرتراکم

داشبورد تحلیلی با تراکم داده بالا برای پایش سلامت کمپین‌ها، شتاب درآمد و توزیع حساب‌ها. پیاده‌سازی‌شده با ECharts در ساب‌تری‌های مموازی‌شده React و مدیریت کش همگام با سرور توسط TanStack Query.

مرکز فرماندهی ادمین و تحلیل داده‌های پرتراکم

سیستم صف سفارشات و تریاژ وضعیت

رابط عملیاتی تریاژ و تخصیص سفارشات با AG-Grid Enterprise، شامل رندریرهای سفارشی وضعیت سلول‌ها، فیلترهای سرور مجهز به Debounce و لود مدال‌های تخصیص بدون Layout Shift.

سیستم صف سفارشات و تریاژ وضعیت

داشبورد پایش تله‌متری تبلیغات گوگل

داشبورد نظارتی سمت کاربر برای تبدیل داده‌های خام API به کارت‌های خوانا. پیاده‌سازی‌شده با ساختار خودکار CSS Grid، حلقه‌های پیشرفت SVG و هوک‌های اختصاصی نرمال‌سازی استریم داده.

داشبورد پایش تله‌متری تبلیغات گوگل

انتخاب بسته‌های خدماتی و محاسبه پویای کارمزد

موتور قیمت‌گذاری تعاملی با تفکیک زنده کارمزدها. پیاده‌سازی‌شده با کارت‌های حالت‌دار React که مجموع صورت‌حساب را بدون Layout Shift محاسبه کرده و به اسلایس تسویه ارسال می‌کنند.

انتخاب بسته‌های خدماتی و محاسبه پویای کارمزد

کیف‌پول چندارزی و قیف تسویه حساب ۵ مرحله‌ای (multi-currency wallet / checkout funnel)

ماشین حالت تسویه ۵ مرحله‌ای با پشتیبانی از پرداخت ترکیبی از موجودی‌های دلار، درهم، لیر و ریال. مهندسی‌شده با React Hook Form، اعتبارسنجی تفکیکی Discriminated Union در Zod و ذخیره‌سازی مداوم نشست با Redux Persist.

تسویه چند ارزی ترکیبی کامل (دلار، درهم، لیر)

تسویه چند ارزی ترکیبی کامل (دلار، درهم، لیر)

توزیع کامل پرداخت یک سفارش بین کیف‌پول‌های دلار، درهم و لیر با نرخ‌های لحظه‌ای.

ماتریس مدیریت سطوح دسترسی بر پایه نقش (RBAC)

رابط امنیتی حاکمیتی برای مدیریت دسترسی‌های مشاهده و ویرایش در ۲۵ قابلیت پلتفرم. پیاده‌سازی به صورت جدول ماتریسی کنترل‌شده با جهش‌های خوش‌بینانه، هوک‌های تغییرات دسته‌ای و اتصال به میان‌افزار Route Guard در Next.js.

تعریف نقش‌های سازمانی (Account, Campaign, Finance, CEO)

تعریف نقش‌های سازمانی (Account, Campaign, Finance, CEO)

تعریف و مدیریت نقش‌های آژانس با حدود دسترسی تفکیک‌شده بین تیم‌های حساب، کمپین، مالی و مدیر ارشد.

ماژول‌های مهندسی

قابلیت‌ها و پیاده‌سازی‌های کلیدی فرانت‌اند

01ماژول فرانت‌اند

مجازی‌سازی جداول پرتراکم مالی (AG-Grid Enterprise)

بازیافت نودهای خارج از صفحه برای رندر بیش از ۲,۰۰۰ رکورد مالی با نرخ پایدار ۶۰ فریم بر ثانیه بدون افت کارایی و نشت حافظه.

  • ▸حفظ نرخ پایدار ۶۰FPS با رندر تنها ۱۸ ردیف فعال در DOM بدون توجه به حجم داده‌ها
  • ▸مرتب‌سازی چندستونه و فیلترهای سمت سرور مجهز به Debounce بدون قفل شدن ترد اصلی
  • ▸رندریرهای سفارشی برای وضعیت‌های پرداخت و دکمه‌های تریاژ سفارشات
02ماژول فرانت‌اند

ماشین حالت امن تسویه و پرداخت چندارزی

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

  • ▸پایداری وضعیت سبد خرید با Redux Persist هنگام رفرش ناگهانی صفحه در تمام مراحل
  • ▸اعتبارسنجی اسکیمای تفکیکی Zod جهت تطابق مانده‌ها با نرخ‌های لحظه‌ای ارز
  • ▸کاهش ۸۵ درصدی رندرهای اضافی فرم با جایگزینی Formik با ورودی‌های کنترل‌نشده React Hook Form
03ماژول فرانت‌اند

ماتریس سطوح دسترسی (RBAC) با بروزرسانی خوش‌بینانه

پنل حاکمیت امنیتی برای کنترل دسترسی‌های ۲۵ قابلیت در میان نقش‌های مختلف کاربری در پلتفرم.

  • ▸پاسخگویی آنی رابط کاربری از طریق جهش‌های خوش‌بینانه در استور Redux همراه با کش بازگشت خودکار
  • ▸دسته‌بندی درخواست‌های PATCH با مکانیزم تلاش مجدد نمایی برای جلوگیری از Race Condition
  • ▸اعمال قوانین دسترسی در میان‌افزار Next.js قبل از هیدریشن کلاینت
04ماژول فرانت‌اند

پایپ‌لاین خودکار قراردادهای امن API

تولید خودکار کلاینت‌های کدهای کلاینت از مستندات OpenAPI به هوک‌های دارای تایپ سخت‌گیرانه TanStack Query.

  • ▸حذف کامل خطاهای ناشی از انحراف قراردادها میان مایکروسرویس‌ها و کلاینت با Orval
  • ▸صفر شدن خطاهای Null Pointer در زمان ران‌تایم در کل استریم تله‌متری کمپین‌ها
  • ▸اعتبارسنجی سخت‌گیرانه تایپ‌ها در مرحله بیلد با کامپایلر TypeScript
تصمیمات معماری و بده‌بستان‌ها

تحلیل تصمیمات فنی و چرایی انتخاب ابزارها

هر انتخاب معماری بر اساس محدودیت‌های عملکردی، مدل ذهنی تیم و نیازمندی‌های مقیاس‌پذیری انجام شده است. در اینجا دلایل ترجیح الگوها و کتابخانه‌های انتخابی بر گزینه‌های دیگر بررسی شده است.

تصمیم ۰1Architecture

مدیریت وضعیت: Redux Toolkit و Persist در برابر Zustand

✓ راهکار انتخاب‌شده

استفاده از Redux Toolkit همراه با میان‌افزار سفارشی سری‌سازی و Redux Persist

✕ گزینه بررسی‌شده

کتابخانه Zustand با هوک‌های دستی هماهنگ‌سازی LocalStorage

تحلیل فنی و دلیل انتخاب

موتور تسویه چندارزی نیازمند ماشین حالت متناهی و کنترل‌شده با قابلیت رول‌بک مراحل و بازیابی نشست هنگام رفرش بود. اسلایس‌های RTK بررسی دقیق سری‌سازی اکشن‌ها را تضمین کرده و با مرزهای ماژولار مونورپوی NX هماهنگ بودند، در حالی که Zustand برای وضعیت‌های گذرا (مثل مدال‌ها و دراورها) به کار رفت.

تصمیم ۰2Architecture

جداول حجیم داده: AG-Grid Enterprise در برابر TanStack Table

✓ راهکار انتخاب‌شده

به‌کارگیری AG-Grid Enterprise با مجازی‌سازی ردیف‌های DOM و صفحه‌بندی سمت سرور

✕ گزینه بررسی‌شده

جداول Headless با TanStack Table (نسخه ۸)

تحلیل فنی و دلیل انتخاب

گرچه TanStack Table آزادی کامل در استایل‌دهی می‌دهد، مدیریت بازیافت نودهای DOM، ستون‌های پین‌شده و بروزرسانی لحظه‌ای سلول‌ها در بیش از ۲,۰۰۰ رکورد مالی نیازمند هوک‌های پیچیده بود. AG-Grid مجازی‌سازی بومی ردیف‌ها را در سطح ترد کامپوزیتور مرورگر فراهم کرد و مانع افت فریم و نشت حافظه شد.

تصمیم ۰3Architecture

معماری فرم‌ها: React Hook Form و Zod در برابر Formik و Yup

✓ راهکار انتخاب‌شده

استفاده از React Hook Form همراه با اعتبارسنجی اسکیمای Zod

✕ گزینه بررسی‌شده

ترکیب Formik و اعتبارسنجی با Yup

تحلیل فنی و دلیل انتخاب

قیف تسویه چندمرحله‌ای شامل فیلدهای شرطی بسته به نوع پرداخت (تک‌ارزی یا اسپلیت چندارزی) بود. Formik با هر بار فشردن کلید تمام درخت کامپوننت را دوباره رندر می‌کرد. معماری ورودی‌های کنترل‌نشده در RHF بیش از ۸۵٪ رندرها را حذف کرد و Zod تایپ‌های همگام با قراردادهای بک‌اند تولید نمود.

راهکار مهندسی

راهکار فنی پیاده‌سازی‌شده

طراحی معماری مقیاس‌پذیر چندمستأجره با Next.js App Router و متدولوژی Feature-Sliced Design. جداسازی رندرهای سنگین نمودارها با Concurrent Transitions در React، مجازی‌سازی نودهای DOM در جداول AG-Grid Enterprise، پیاده‌سازی ماشین حالت تسویه با پایداری نشست در Redux Persist، و خودکارسازی کلاینت‌های امن با Orval و Zod.

API & Networking

Axios Instance with JWT Auth Interceptors, Silent Refresh Queuing & Orval OpenAPI Codegen

State Architecture

Redux Toolkit (Audited Checkout State Machine), Redux Persist (Session Recovery), React Query (Server State Cache)

High-Density Data Grids

AG-Grid Enterprise (DOM Row Virtualization, Server-Side Pagination, Column Pinning)

Real-Time Visual Analytics

ECharts & Chart.js (React Transitions, Responsive Canvas Viewports, Sub-Tree Memoization)

Form & Validation Engine

React Hook Form (Uncontrolled Subscriptions), Zod Runtime Schema Validation

نتایج و دستاوردها

تاثیر بر پروژه و آموخته‌های کلیدی

01

تفکیک وضعیت‌های موقت رابط کاربری (Zustand یا لوکال استیت) از وضعیت‌های تراکنشی و مالی (Redux Toolkit) مانع از آلودگی استور و نشت وضعیت در سیستم‌های ماژولار می‌شود.

02

به‌کارگیری React startTransition برای رندر مجدد نمودارهای سنگین، نقشی کلیدی در نگه داشتن شاخص INP زیر ۱۸۰ میلی‌ثانیه در داشبوردهای پرتراکم دارد.

03

تولید خودکار هوک‌های API از روی مشخصات OpenAPI با استفاده از Orval، خطاهای ناهماهنگی تایپ میان سرویس‌های بک‌اند و فرانت‌اند را به صفر می‌رساند.