داشبورد Ciaro

نمای کلی

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

طراحی و پیاده‌سازی داشبورد با کارایی بالا در Next.js App Router با استفاده از Zustand جهت مدیریت وضعیت‌های گذرا (کشوها، فیلترها و حالت‌های نمایش) به صورت مجزا از کش داده‌های سرور در TanStack Query. ایجاد پایپ‌لاین بافر رویدادها با requestAnimationFrame جهت اعمال تغییرات با نرخ پایدار ۶۰ هرتز، رندر نمودارهای برداری با موتور SVG در ECharts همراه با ترنزیشن‌های همزمان React، انیمیشن‌های شتاب‌یافته کشو در ترد گرافیکی (GPU) و تثبیت ابعاد گرید CSS برای حذف کامل جهش چیدمان.

نرخ استریم تله‌متری
بچینگ ۶۰ هرتز بلادرنگ
انیمیشن کشوی شواهد
۶۰ FPS سخت‌افزاری
تغییر چیدمان حالت‌ها
صفر مطلق (Zero CLS)
داشبورد Ciaro
چالش‌های مهندسی

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

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

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

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

کمپین‌های پرترافیک تا ۵۰ رخداد کلیک در ثانیه تولید می‌کردند که موجب اشباع صف رندرهای React و تاخیر در پاسخگویی کلیدها می‌شد.

↳ توسعه هوک بافرینگ بر مبنای requestAnimationFrame که رخدادهای ورودی را تجمیع کرده و با نرخ هماهنگ ۶۰ هرتز به رابط کاربری اعمال می‌کند.

تغییر تراکم بصری داشبورد بدون ایجاد جهش چیدمان (Zero CLS)

جابجایی میان حالت نمایش عادی و پیشرفته درخت کامپوننت‌ها را تغییر داده و موجب پرش ساختار صفحه می‌شد.

↳ استفاده از گرید مشترک CSS و ویژگی content-visibility که ابعاد چیدمان را ثابت نگه داشته و تغییر چیدمان را به صفر می‌رساند.

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

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

↳ انتقال انیمیشن اسلاید دراور به ترد کامپوزیتور پردازنده گرافیکی (GPU) با ترنسفورم CSS و رندر تنبل لیست‌های حجیم با مجازی‌سازی DOM پس از اتمام انیمیشن.

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

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

0160 FPS Hardware-Accelerated

Drawer Slide Frame Rate

Target Budget: 60 FPS Sustained

اندازه‌گیری‌شده با ابزار Rendering HUD در کروم هنگام باز و بسته شدن دراور. انیمیشن باز شدن دراور کشویی با ترنسفورم GPU در ترد کامپوزیتور مرورگر.

02< 160ms

Interaction to Next Paint (INP)

Target Budget: < 200ms

اندازه‌گیری‌شده با افزونه رسمی Web Vitals در حین دریافت پیوسته رویدادهای زنده کلیک. دسته‌بندی رویدادهای جریانی و مموایز کردن سلکتورهای محاسبه بودجه.

030.00 (Zero CLS)

Cumulative Layout Shift (CLS)

Target Budget: < 0.05

اعتبارسنجی‌شده با Lighthouse CI در محیط پروداکشن در هنگام سوییچ حالت‌های نمایش. رزرو فضای ثابت در ردیف‌های گرید برای نمودارها و کارت‌های آماری.

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

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

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

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

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

کشوی بازرسی شواهد و تحلیل نشست‌های مشکوک

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

کشوی بازرسی شواهد و تحلیل نشست‌های مشکوک

موتور محاسبه بودجه محافظت‌شده و تحلیل هزینه ادز

سیستم مصورسازی مالی برای محاسبه لحظه‌ای بودجه نجات‌یافته (تعداد کلیک‌های مسدودشده ضرب در میانگین نرخ لحظه‌ای CPC). مبتنی بر هوک‌های تجمیعی مموایز بدون ایجاد وقفه در ترد اصلی.

موتور محاسبه بودجه محافظت‌شده و تحلیل هزینه ادز

فید زنده اقدامات و استریم مسدودسازی خودکار تهدیدها

لاگ زنده اقدامات مهار تهدیدات شامل مسدودسازی خودکار IPهای مخرب و اجرای قوانین امنیتی. یکپارچه‌شده با پایپ‌لاین بافرینگ requestAnimationFrame جهت حفظ روانی ۶۰ هرتز در استریم‌های پرترافیک.

فید زنده اقدامات و استریم مسدودسازی خودکار تهدیدها
ماژول‌های مهندسی

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

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

بافرینگ استریم پربسامد تله‌متری

توسعه پایپ‌لاین بافر بر پایه requestAnimationFrame برای پردازش بیش از ۵۰ رویداد تله‌متری در ثانیه با نرخ ثابت ۶۰ هرتز.

  • ▸جلوگیری از انباشت صف رندر React و حذف پرش‌های تاخیر ورودی در بار ترافیکی بالا
  • ▸تجمع رخدادهای زنده کلیک گوگل ادز در صف‌های میکرونکته‌ای همگام‌شده
  • ▸تثبیت شاخص Interaction to Next Paint (INP) به صورت مداوم زیر ۱۶۰ میلی‌ثانیه
02ماژول فرانت‌اند

سوییچ تراکم بصری بدون جهش چیدمان (Zero CLS)

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

  • ▸تثبیت ابعاد ردیف‌های گرید مشترک CSS با نگه‌دارنده‌های مشخص چیدمان
  • ▸استفاده هوشمندانه از دستورات content-visibility برای بهینه‌سازی رندر نمودارها
  • ▸کسب نمره کامل صفر مطلق در ممیزی Cumulative Layout Shift در ابزار لایت‌هاوس
03ماژول فرانت‌اند

کشوهای بازرسی با شتاب سخت‌افزاری

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

  • ▸انتقال کامل انیمیشن به ترد کامپوزیتور پردازنده گرافیکی با CSS transform
  • ▸مدیریت فوکوس کیبورد و پشتیبانی کامل از بسته شدن با کلید Escape
  • ▸مجازی‌سازی لاگ‌های خام سشن‌ها جهت باز شدن آنی بدون افت فریم
04ماژول فرانت‌اند

موتور بلادرنگ محاسبه بودجه محافظت‌شده

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

  • ▸محاسبه پویا از طریق ضرب سشن‌های مخرب در نرخ لحظه‌ای میانگین CPC
  • ▸جلوگیری از ارزیابی‌های مجدد و تکراری کامپوننت‌ها به کمک هوک‌های مموایز
  • ▸ارائه بازخورد آنی در هنگام تغییر بازه زمانی و اسلایدرهای فیلترینگ
تصمیمات معماری و بده‌بستان‌ها

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

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

تصمیم ۰1Architecture

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

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

استفاده از Zustand برای وضعیت‌های گذرا و TanStack Query برای کش سرور

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

کتابخانه جامع Redux Toolkit

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

وضعیت کلاینت سیارو عمدتاً شامل متغیرهای گذرا (دراور شواهد، فیلترها و حالت نمایش) بود. Zustand بدون نیاز به بویلرپلیت‌های سنگین Redux وضعیت‌های تعاملی را مدیریت کرد و TanStack Query وظیفه کش داده‌های سرور را بر عهده گرفت.

تصمیم ۰2Architecture

رندرینگ نمودارها: رندر وکتوری SVG در برابر HTML5 Canvas

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

به‌کارگیری ECharts با موتور رندر SVG

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

موتور رندر پیش‌فرض Canvas

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

در نمایشگرهای رتینا با تراکم پیکسلی بالا، نمودارهای Canvas نیازمند تنظیم دستی نسبت پیکسل دستگاه بوده و امکان استایل‌دهی با متغیرهای CSS را ندارند. موتور رندر SVG خطوط وکتوری کاملاً شفاف، دسترسی‌پذیری ARIA و تغییر پویا تم‌ها را با مصرف رم کمتر فراهم ساخت.

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

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

طراحی و پیاده‌سازی داشبورد با کارایی بالا در Next.js App Router با استفاده از Zustand جهت مدیریت وضعیت‌های گذرا (کشوها، فیلترها و حالت‌های نمایش) به صورت مجزا از کش داده‌های سرور در TanStack Query. ایجاد پایپ‌لاین بافر رویدادها با requestAnimationFrame جهت اعمال تغییرات با نرخ پایدار ۶۰ هرتز، رندر نمودارهای برداری با موتور SVG در ECharts همراه با ترنزیشن‌های همزمان React، انیمیشن‌های شتاب‌یافته کشو در ترد گرافیکی (GPU) و تثبیت ابعاد گرید CSS برای حذف کامل جهش چیدمان.

Core Framework

Next.js App Router with React Server Components & Client Boundaries

State Architecture

Zustand (Transient UI Controls) & TanStack Query (Server State Cache)

Data Visualization

ECharts (SVG Vector Renderer with Dynamic CSS Theme Variables)

Styling & Layout

Tailwind CSS with Hardware-Accelerated Slide Drawer Overlays

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

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

01

بافر کردن استریم رویدادهای پربسامد با requestAnimationFrame از رندرهای مجدد بیهوده جلوگیری کرده و شاخص INP را سبز نگه می‌دارد.

02

استفاده از Zustand برای کنترل وضعیت کشوهای گذرا در کنار TanStack Query برای همگام‌سازی سرور، پیچیدگی اضافی استورها را از بین می‌برد.

03

رندرینگ وکتوری SVG در ECharts شفافیت، دسترسی‌پذیری ARIA و سازگاری بالاتری با متغیرهای تم CSS نسبت به Canvas فراهم می‌کند.