قالبهای بخش گزارش (ReportSections)
شش template آماده برای بخشهای بولتن — Executive Summary، Sentiment، Flow، Top Posts، Timeline، Source Breakdown
معرفی
ReportComposer خود primitive container است؛ این مجموعه شش section template آماده است که 90٪ بخشهای یک بولتن افکارسنجی را پوشش میدهند. هر template یک composition نازک از primitive های موجود (sentiment-distribution، flow-distribution، PostList، PartoLineChart، SocialPlatformBadge) داخل ReportSection shell است.
بولتن هفتگی — هفته ۱۴
نمونه ترکیب چند template آماده در یک بولتن
خلاصه اجرایی
توزیع احساسات
توزیع جریانها
منابع
زمین بازی
توزیع جریانها
import {
ReportComposer,
ExecutiveSummarySection,
SentimentBreakdownSection,
FlowDistributionSection,
TopPostsSection,
TimelineSection,
SourceBreakdownSection,
} from '@parto-system-design/ui'
;<ReportComposer title="بولتن هفتگی">
<ExecutiveSummarySection
summary="نظرات مثبت روند صعودی داشت..."
metrics={[
{ label: 'تعداد پست', value: 4820, delta: 12.4 },
{ label: 'سهم مثبت', value: 78, unit: '٪' },
]}
/>
<SentimentBreakdownSection sentiment={sentiment} emotions={emotions} />
<FlowDistributionSection flow={flow} />
<TimelineSection data={dailyVolume} dataKeys={['volume']} summary={{ seriesKey: 'volume', from: 1240, to: 4820 }} />
<TopPostsSection posts={topPosts} topN={5} />
<SourceBreakdownSection
sources={[
{ platform: 'instagram', count: 600 },
{ platform: 'twitter', count: 300 },
{ platform: 'tv', count: 80 },
]}
/>
</ReportComposer>شش Template
ExecutiveSummarySection
عنوان + پاراگراف AI/analyst-written + تا ۴ tile متریک (با delta و unit). برای بالای هر بولتن که خواننده در ۵ ثانیه context بگیرد.
SentimentBreakdownSection
SentimentDistribution + (اختیاری) EmotionDistribution کنار هم در lg+ breakpoint. اگر emotions نگذارید، فقط 3-class.
FlowDistributionSection
FlowDistribution افقی stacked از ۵ گرایش مخاطب.
TopPostsSection
PostList در حالت compact، با topN cap (پیشفرض 5). برای پستهای شاخص هفته.
TimelineSection
PartoLineChart با chartHeight تنظیمپذیر + اختیاری summary tile زیر آن (sparkline + delta percent). axisها locale-aware.
SourceBreakdownSection
Grid از platform badge ها با count + درصد محاسبهشده — مناسب نمایش سهم رسانهها در پوشش یک موضوع.
ویژگی مشترک
هر شش template از ReportSectionShellProps ارث میبرند، یعنی همه prop های slot ای ReportSection را پشتیبانی میکنند: enabled / onEnabledChange / collapsed / onCollapsedChange / draggable / onDragHandlePointerDown / onSettingsClick / headerActions. این اجازه میدهد در composer ادیتور هم استفاده شوند:
<ExecutiveSummarySection
summary="..."
enabled={summaryOn}
onEnabledChange={setSummaryOn}
collapsed={summaryCollapsed}
onCollapsedChange={setSummaryCollapsed}
draggable
onDragHandlePointerDown={handleDragStart}
/>عنوان پیشفرض هر template بهصورت locale-aware: مثلاً ExecutiveSummarySection بدون title پاسدادن «خلاصه اجرایی» (fa) / «الملخص التنفيذي» (ar) / «Executive Summary» (en) رندر میکند. title prop آن را override میکند.
جدول ویژگیها
تمام شش template از ReportSectionShellProps ارث میبرند، یعنی این props مشترکاند:
پراپهای مشترک (همهی templates)
ExecutiveSummarySection
SentimentBreakdownSection
FlowDistributionSection
TopPostsSection
TimelineSection
SourceBreakdownSection
دسترسیپذیری
- هر بخش با
ReportSectionshell wrap میشود که heading<h2>معنادار، landmark structure و کنترلهای keyboard-accessible (Switch enable، Button collapse، drag handle) را تأمین میکند. - چارتهای داخلی (
SentimentDistribution،FlowDistribution،EmotionDistribution،PartoLineChart) خود ARIA labels و توضیحات text-summary مناسب رندر میکنند —<title>و<desc>در SVG. TrendIndicatorدر summary tile باaria-labelمناسب (مثل «دلتا ۱۲٪») جهت screen reader آماده میشود.- در حالت چاپ، header actions (
print:hidden) مخفی میشوند و sectionهاbreak-inside-avoidمیگیرند تا روی صفحه نصف نشوند. - ترتیب tab روی sections از بالا به پایین RTL-aware است؛ drag handle قبل از Switch enable در tab order قرار میگیرد.
راهنمای استفاده
بکنید
- ترتیب پیشنهادی: ExecutiveSummary → Sentiment → Flow → Timeline → Top Posts → Sources. این ترتیب از بالا-به-پایین
scan-ablity بهینه است - برای print، sections را در
BulletinViewerبپوشانید — هر section خودکارbreak-inside-avoidمیگیرد - برای metric tile بیش از ۴ تا، یکMetricCardgrid مستقل بسازید — این template برای headline KPI است
نکنید
- sectionها را بهعنوان detail view مستقل استفاده نکنید — اینها داخل ReportComposer/BulletinViewer container
طراحیشدهاند -
topNبیش از ۱۰ روی TopPostsSection نگذارید — هدف «شاخصترینها» است نه فهرست کامل
کامپوننتهای مرتبط
- container و shell → ReportComposer + ReportSection + BulletinViewer
- اگر template خودتان میخواهید →
ReportSectionخام بسازید - پستهای full بهجای compact list →
PostCard - توزیع بهصورت standalone (نه داخل bulletin) →
SentimentDistribution+FlowDistribution