پرتوپرتو

بنچ‌مارک نرخ تعامل (EngagementRateBenchmark)

نوار افقی فشرده با نشانگر موقعیت روی مقیاس ضعیف → متوسط → خوب → عالی، با پشتیبانی از benchmark های مرجع (میانگین صنعت، هدف، …).

معرفی

EngagementRateBenchmark یک نوار افقی فشرده برای مقایسه یک متریک (معمولاً نرخ تعامل٪ یا نمره ۰-۱۰۰) با یک مقیاس چهار سطحی (ضعیف/متوسط/خوب/عالی) و یک یا چند نقطه مرجع (benchmark). برخلاف EngagementRate که یک کارت آموزشی پر محتوا است با ۶ سطح و logic مخصوص فالوور، این کامپوننت جمع‌وجور و مناسب جدول/ردیف/کارت است.

چه زمانی استفاده کنیم:

  • ستون «نرخ تعامل» در جدول پیج‌ها با نشانگر «شما اینجایید»
  • کارت comparison که پیج شما را با میانگین صنعت مقایسه می‌کند
  • نمودار نمره در کارت EntityHealthCard
  • نمایش سریع «خوب/بد بودن» یک متریک بدون نیاز به تفسیر

چه زمانی استفاده نکنیم:

  • وقتی توضیح کامل آستانه‌ها و category بر اساس فالوور لازم است — از EngagementRate استفاده کنید
  • برای نمایش پیشرفت یک سهمیه — از QuotaProgressBar استفاده کنید
  • برای عدد تکی بدون مقایسه — از MetricCard استفاده کنید
میانگین صنعتبهترین ماه
۳.۲٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪

زمین بازی

با تغییر تنظیمات زیر، پیش‌نمایش زنده را مشاهده کنید.

زمین بازی
۴.۲٪
۰.۰٪۱۰.۰٪
تنظیمات
داده
محتوا
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.

استفاده

'use client'
import { EngagementRateBenchmark } from '@parto-system-design/ui'

export function PageEngagement({ page }) {
  return (
    <EngagementRateBenchmark
      value={page.engagementRate}
      max={10}
      benchmarks={[
        { value: 2.5, label: 'میانگین صنعت' },
        { value: page.best30DayRate, label: 'بهترین ماه' },
      ]}
      showTierLabels
    />
  )
}

چهار سطح پیش‌فرض

۰.۵٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪
۱.۸٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪
۳.۵٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪
۷.۰٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪

آستانه‌های پیش‌فرض برای نرخ تعامل (درصد):

  • ضعیف (--score-poor) — ۰ تا ۱٪
  • متوسط (--score-moderate) — ۱ تا ۲٫۵٪
  • خوب (--score-good) — ۲٫۵ تا ۵٪
  • عالی (--score-excellent) — بالای ۵٪

با benchmark های مقایسه

میانگین جهانیمیانگین صنعتهدف
۴.۲٪
ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪

هر benchmark یک تیک داخل نوار + label متنی بالای آن می‌گذارد. مناسب برای:

  • میانگین صنعت (industry average)
  • بهترین عملکرد گذشته شما
  • هدف سه ماهه
  • رقیب اصلی

برای نمره ۰–۱۰۰

حداقل قابل قبول
۷۶٪
ضعیفمتوسطخوبعالی
۰٪۱۰۰٪

با tiers={getScoreBenchmarkTiers(locale)} و max={100}، برای نمرات خام استفاده کنید. مثال: نمره کلی پیج‌های تحت رصد.

اندازه‌ها

sm
۳.۲٪
۰.۰٪۱۰.۰٪
md (پیش‌فرض)
۳.۲٪
۰.۰٪۱۰.۰٪
lg
۳.۲٪
۰.۰٪۱۰.۰٪

سه اندازه sm / md / lg برای استفاده در ردیف، کارت، یا صفحه detail.

آستانه‌های سفارشی

برای دامنه خاص خود (مثلاً Booster worker quality score)، tiers را override کنید:

<EngagementRateBenchmark
  value={72}
  min={0}
  max={100}
  tiers={[
    { label: 'ناسالم', max: 40, color: 'hsl(var(--destructive-default))' },
    { label: 'در خطر', max: 60, color: 'hsl(var(--warning-default))' },
    { label: 'پایدار', max: 80, color: 'hsl(var(--sentiment-positive))' },
    { label: 'ممتاز', max: Infinity, color: 'hsl(var(--brand-default))' },
  ]}
  showTierLabels
/>

بدون نشانگر مقدار

ضعیفمتوسطخوبعالی
۰.۰٪۱۰.۰٪

با hideValueMarker، فقط نوار و benchmark ها رندر می‌شوند — مناسب برای نمایش legend یا demo آستانه‌ها.

Props

Prop

Type

BenchmarkTier

Prop

Type

BenchmarkMarker

Prop

Type

helpers

import { getEngagementRateBenchmarkTiers, getScoreBenchmarkTiers, findTierIndex } from '@parto-system-design/ui'

// 4-tier defaults for engagement-rate % (poor <1 / moderate <2.5 / good <5 / excellent)
const tiers = getEngagementRateBenchmarkTiers('fa')

// 4-tier defaults for 0-100 score (poor <40 / moderate <60 / good <80 / excellent)
const scoreTiers = getScoreBenchmarkTiers('fa')

// Find which tier contains a value
const idx = findTierIndex(3.2, tiers) // 2 (good)

راهنمای استفاده

بکنید

  • وقتی می‌خواهید یک حساب را با میانگین tier فالوور خود مقایسه کنید (مثلاً Macro در برابر سایر Macroها) از این کامپوننت استفاده کنید — context کاربر را سریع‌تر می‌سازد - benchmarkها را به ۱-۳ نقطه محدود کنید (میانگین صنعت + هدف + بهترین گذشته) — بیش از این، خوانش بصری کاهش می‌یابد - برای ستون جدول اندازه‌ی sm و برای کارت detail md/lg استفاده کنید
  • وقتی benchmark خود string متنی است، label آن را برای aria-label خودکار قابل خوانایی پاس بدهید (نه JSX)

نکنید

  • این کامپوننت را وقتی تاریخچه‌ی فالوور حساب کافی نیست (کم‌تر از ۲ هفته) استفاده نکنید — نرخ تعامل ناپایدار است و مقایسه با benchmark گمراه‌کننده می‌شود - برای پیشرفت سهمیه (مثل API calls/۱۰۰) از این استفاده نکنید — از QuotaProgressBar استفاده کنید - tiers سفارشی را با کم‌تر از ۲ سطح پاس ندهید — کامپوننت حداقل ۲ tier نیاز دارد - رنگ tierها را به سلیقه عوض نکنید — سفارشی‌سازی فقط برای دامنه‌های متفاوت معنادار است (مثل score worker quality)، نه استایل

دسترسی‌پذیری

  • نوار یک role="progressbar" با aria-valuemin / aria-valuemax / aria-valuenow است. aria-valuenow مقدار واقعی (حتی اگر خارج از [min,max] باشد) را منتقل می‌کند.
  • هر benchmark tick دارای aria-label به شکل "label: value%" است (اگر label از نوع string باشد).
  • segmentها aria-hidden="true" هستند — اطلاعات بصری از طریق valuenow منتقل می‌شود.
  • هنگامی که label یک React node (مثل JSX) است، aria-label خودکار ست نمی‌شود؛ مسئولیت با شماست.

کامپوننت‌های مرتبط

  • EngagementRate — نسخه کامل و آموزشی ۶-سطحی مخصوص اینفلوئنسر — وقتی نیاز به category فالوور و تفسیر دارید
  • EngagementRateBar — variant بار فشرده (پیش‌ترین موقعیت)
  • QuotaProgressBar — برای پیشرفت سهمیه (سبز → قرمز براساس usage)
  • MetricCard — متریک تک‌عدد بدون مقایسه
  • EntityHealthCard — وقتی benchmark جزئی از روایت سلامت است، از این بنچ‌مارک داخل آن استفاده کنید