#715 (page + AnalyticsRange)
├── #716 (stats header)
│ └── depends on #723 for time saved tile
├── #717 (PR volume chart)
├── #721 (review time by stage)
├── #718 (queue signal donut)
├── #722 (AI detection panel + migration)
├── #724 (repo breakdown table)
└── #719 (export + share)
└── #720 (summary banner)
#723 (time saved computation)
├── #716 (stats tile feeds from it)
└── #720 (summary banner uses the value)
Overview
Tracking issue for building the dedicated Analytics page in the maintainer dashboard (
/maintainer/analytics). Currently all analytics are embedded in the monolithicpage.tsxdashboard. This creates a proper analytics route with time-range filtering, new KPI tiles with deltas, new charts, and report export/share functionality.Issue Checklist
Foundational (land first)
/maintainer/analyticspage route + time-range framework (AnalyticsRangetype, tabs, nav item) (hard, foundational)computeTimeSaved, constants,getTimeSavedaction) (medium, foundational for tiles + banner)KPI tiles + header
Charts
Panel row
ai_flag_reason(hard — depends on feat(maintainer/analytics): add /maintainer/analytics page route with time-range framework #715)Repo table + Report output
/report/[token]page) (hard — depends on feat(maintainer/analytics): add /maintainer/analytics page route with time-range framework #715, feat(maintainer/analytics): add stats header with 6 KPI tiles and period-over-period deltas #716, feat(maintainer/analytics): add Breakdown by Repo table (per-repo analytics) #724)Dependency graph
Implementation order
Notes
ai_flag_reasoncolumn onpull_requests) — coordinate with feat(maintainer/contributors): show inline AI-flagged PR warning on low-trust contributor rows #520 to avoid duplicate migrationreport_snapshotstable — new migration neededanalytics-trends.tsx(Recharts) is the reference pattern for all new chart componentsgetMaintainerAnalyticsTrendswill need its signature extended to acceptAnalyticsRange(backwards-compatible default)