fix(stats): top-списки и группировка по типу на list-страницах

Refs EventHub/EventHubFrontAdmin#27

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-13 17:35:51 +03:00
parent 61da5b6d3a
commit 190cca7e6b
4 changed files with 117 additions and 1 deletions
+29
View File
@@ -253,8 +253,37 @@ const ReviewListPage: React.FC = () => {
</Card>
</Col>
))}
{Object.entries(stats.reviews_by_target_type || {}).map(([type, count]) => (
<Col xs={12} sm={6} md={4} key={`type-${type}`}>
<Card>
<Statistic title={`Цель: ${type}`} value={count} />
</Card>
</Col>
))}
</Row>
)}
{stats?.top_targets_by_reviews && stats.top_targets_by_reviews.length > 0 && (
<Card title="Топ целей по отзывам" style={{ marginBottom: 16 }}>
<Table
size="small"
pagination={false}
rowKey={(r) => `${r.target_type}-${r.target_id}`}
dataSource={stats.top_targets_by_reviews}
columns={[
{ title: 'Тип', dataIndex: 'target_type', key: 'target_type' },
{
title: 'ID цели',
dataIndex: 'target_id',
key: 'target_id',
render: (id: string, record) => (
<Link to={`/${record.target_type}s/${id}`}>{id}</Link>
),
},
{ title: 'Отзывов', dataIndex: 'review_count', key: 'review_count' },
]}
/>
</Card>
)}
<Space style={{ marginBottom: 16 }}>
<Button onClick={() => openBulkStatusModal('hidden')} disabled={selectedRowKeys.length === 0}>
Скрыть выбранные