پرتوپرتو

قالب‌های بخش گزارش (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 آماده در یک بولتن

خلاصه اجرایی

نظرات مثبت روند صعودی داشت؛ سهم منتقد سازنده هم در شش استان به‌طور قابل‌توجه رشد کرد.
تعداد پست۴.۸ هزار+۱۲.۴٪
سهم مثبت۷۸٪+۳.۲٪
پلتفرم فعال۹

توزیع احساسات

مثبت۷۸٪خنثی۱۱٪منفی۱۱٪
شادی۲۶٪اعتماد۱۷٪انتظار۹٪خنثی۲۳٪غم۱۱٪ترس۵٪خشم۹٪

توزیع جریان‌ها

حامیان حکومت۳۷٪منتقدان داخلی۲۴٪مخالفان داخلی۱۴٪مخالفان خارجی۹٪قشر خاکستری۱۶٪

منابع

۱.۸ هزار۴۳.۴%
۹۸۰۲۳.۱%
۷۲۰۱۷.۰%
۴۸۰۱۱.۳%
۲۲۰۵.۲%

زمین بازی

زمین بازی

توزیع جریان‌ها

حامیان حکومت۳۷٪منتقدان داخلی۲۴٪مخالفان داخلی۱۴٪مخالفان خارجی۹٪قشر خاکستری۱۶٪
تنظیمات
داده
محتوا
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
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)

Prop

Type

ExecutiveSummarySection

Prop

Type

SentimentBreakdownSection

Prop

Type

FlowDistributionSection

Prop

Type

TopPostsSection

Prop

Type

TimelineSection

Prop

Type

SourceBreakdownSection

Prop

Type

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

  • هر بخش با ReportSection shell 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 بیش از ۴ تا، یک MetricCard grid مستقل بسازید — این template برای headline KPI است

نکنید

  • sectionها را به‌عنوان detail view مستقل استفاده نکنید — این‌ها داخل ReportComposer/BulletinViewer container طراحی‌شده‌اند - topN بیش از ۱۰ روی TopPostsSection نگذارید — هدف «شاخص‌ترین‌ها» است نه فهرست کامل

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

  • container و shellReportComposer + ReportSection + BulletinViewer
  • اگر template خودتان می‌خواهیدReportSection خام بسازید
  • پست‌های full به‌جای compact listPostCard
  • توزیع به‌صورت standalone (نه داخل bulletin)SentimentDistribution + FlowDistribution