کارت قانون هشدار (AlertRuleCard)
تعریف یک alert ذخیرهشده — شرط فعالسازی، آستانه، شدت، کانالهای اطلاعرسانی، Switch روشن/خاموش، تاریخچهی فعالسازی
معرفی
AlertRuleCard تعریف یک قانون هشدار ذخیرهشده را نمایش میدهد: «هرگاه نرخ منفی > ۲۰٪ شود، با severity فوری از طریق ایمیل + تلگرام به تیم اعلام کن». مناسب صفحهی مدیریت Alertها در پنل افکارسنجی، که کاربر میتواند rule را روشن/خاموش کند و تاریخچهی فعالسازی را ببیند.
چه زمانی استفاده کنیم:
- لیست all alerts در داشبورد ادمین
- صفحهی آلارمهای اخیر — کارت rule + ActionTimeline
- نمایش inline در یک Concept/Page card که از این rule notify میگیرد
چه زمانی استفاده نکنیم:
- نوتیفیکیشن زنده/dismissable در صف کاربر →
NotificationItemدرNotificationCenter - ایجاد rule جدید form-style → از
JobWizardیا یک Form سفارشی استفاده کنید — این کارت نمایشگر است نه ادیتور
افزایش ناگهانی منفی
فوری
شرط فعالسازی
هرگاه نرخ منفی بیش از ۲۰٪ شود
آستانه:≥ ۲۰٪
کانالها:ایمیلتلگرامدرونبرنامهای
آخرین فعالسازی: ۲ ساعت پیشتعداد فعالسازی: 14
زمین بازی
زمین بازی
افزایش ناگهانی منفی
فوری
شرط فعالسازی
هرگاه نرخ منفی بیش از ۲۰٪ شود
آستانه:≥ ۲۰٪
کانالها:ایمیلتلگرامدرونبرنامهای
آخرین فعالسازی: ۲ ساعت پیشتعداد فعالسازی: 14
تنظیمات
ظاهر
حالت
محتوا
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
استفاده
import { AlertRuleCard } from '@parto-system-design/ui'
const [active, setActive] = React.useState(true)
<AlertRuleCard
name="افزایش ناگهانی منفی"
trigger="هرگاه نرخ منفی بیش از ۲۰٪ شود"
threshold="≥ ۲۰٪"
severity="urgent"
channels={['email', 'telegram', 'in-app']}
active={active}
onActiveChange={setActive}
lastFired="۲ ساعت پیش"
fireCount={14}
/>channels هر یک از email | sms | telegram | in-app | webhook هستند که با آیکون Lucide مرتبط نمایش داده میشوند.
راهنمای استفاده
بکنید
triggerرا بهزبان طبیعی فارسی بنویسید (نه expression code-like) — کاربر تحلیلگر میخواند نه dev -thresholdرا بهصورت فشرده پاس بدهید (≥ ۲۰٪،> ۱۰۰۰ پست) — کارت جا محدود است -lastFiredرا باformatRelativeLocaleTime(یا فرم similar) به نسبی-زمان تبدیل کنید
نکنید
active=trueاما همه channels خالی نگذارید — rule فعال است ولی به جایی notify نمیکند → state inconsistent - severity را اشتباه نگیرید: severity مربوط به اولویت آلارم است، نه شدت کلاستر/concept هدف
جدول ویژگیها
دسترسیپذیری
- master
Switchاز Radix Switch زیرین میآید کهrole="switch"+aria-checkedرا بهصورت خودکار ست میکند و با Space قابل toggle است؛aria-labelبه آن پاس داده میشود. - آیکونهای Bell/BellOff (وضعیت master)، channel iconها، و jp Lucide ها همگی
aria-hidden="true"هستند — معنا از label و متن کنار آنها منتقل میشود. - channelهای اطلاعرسانی بهصورت گروهی از iconها نمایش داده میشوند، ولی label هر channel (email، telegram…) برای screen reader قابل دسترسی است.
- severity بهصورت رنگ + متن نمایش داده میشود، نه فقط رنگ — کاربر color-blind نیز اولویت را میفهمد.
- ترتیب tab: نام rule → switch master → سایر iconها — switch محوریترین action و اولین stop tab بعد از header است.
کامپوننتهای مرتبط
- نوتیفیکیشن زنده در صف کاربر →
NotificationCenter+NotificationItem - جستجوی ذخیرهشده (نه آلارم) →
SavedQueryCard - نمایش timeline فعالسازیها →
ActionTimeline - severity badge standalone →
SeverityBadge