feat(mining-admin): add total contribution to dashboard stats
- Add networkTotalContribution field to dashboard API response - Display total hashrate alongside effective hashrate in stats cards - Update price overview to show both effective and total contribution - Change grid from 3 to 4 columns in price overview Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
546c0060da
commit
dee9c511e5
|
|
@ -774,7 +774,8 @@
|
||||||
"Bash(ssh -J ceshi@103.39.231.231 ceshi@192.168.1.111 \"curl -s http://localhost:3021/api/v2/admin/status\")",
|
"Bash(ssh -J ceshi@103.39.231.231 ceshi@192.168.1.111 \"curl -s http://localhost:3021/api/v2/admin/status\")",
|
||||||
"Bash(del \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\domain\\\\usecases\\\\trading\\\\buy_shares.dart\")",
|
"Bash(del \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\domain\\\\usecases\\\\trading\\\\buy_shares.dart\")",
|
||||||
"Bash(del \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\domain\\\\usecases\\\\trading\\\\sell_shares.dart\")",
|
"Bash(del \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\domain\\\\usecases\\\\trading\\\\sell_shares.dart\")",
|
||||||
"Bash(ls -la \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\presentation\\\\pages\"\" 2>/dev/null || dir /b \"c:UsersdongDesktoprwadurianfrontendmining-applibpresentationpages \")"
|
"Bash(ls -la \"c:\\\\Users\\\\dong\\\\Desktop\\\\rwadurian\\\\frontend\\\\mining-app\\\\lib\\\\presentation\\\\pages\"\" 2>/dev/null || dir /b \"c:UsersdongDesktoprwadurianfrontendmining-applibpresentationpages \")",
|
||||||
|
"Bash(cd:*)"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ export class DashboardController {
|
||||||
totalUsers: raw.users?.total || 0,
|
totalUsers: raw.users?.total || 0,
|
||||||
adoptedUsers: raw.users?.adopted || 0,
|
adoptedUsers: raw.users?.adopted || 0,
|
||||||
networkEffectiveContribution: raw.contribution?.effectiveContribution || '0',
|
networkEffectiveContribution: raw.contribution?.effectiveContribution || '0',
|
||||||
|
networkTotalContribution: raw.contribution?.totalContribution || '0',
|
||||||
totalDistributed: raw.mining?.totalMined || '0',
|
totalDistributed: raw.mining?.totalMined || '0',
|
||||||
totalBurned: raw.mining?.latestDailyStat?.totalBurned || '0',
|
totalBurned: raw.mining?.latestDailyStat?.totalBurned || '0',
|
||||||
circulationPool: raw.trading?.circulationPool?.totalShares || '0',
|
circulationPool: raw.trading?.circulationPool?.totalShares || '0',
|
||||||
|
|
|
||||||
|
|
@ -44,15 +44,19 @@ export function PriceOverview() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-6 pt-6 border-t">
|
<div className="mt-6 pt-6 border-t">
|
||||||
<div className="grid grid-cols-3 gap-4 text-center">
|
<div className="grid grid-cols-4 gap-4 text-center">
|
||||||
<div>
|
<div>
|
||||||
<p className="text-xs text-muted-foreground">流通池</p>
|
<p className="text-xs text-muted-foreground">流通池</p>
|
||||||
<p className="text-sm font-medium">{formatCompactNumber(stats?.circulationPool)}</p>
|
<p className="text-sm font-medium">{formatCompactNumber(stats?.circulationPool)}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-xs text-muted-foreground">全网算力</p>
|
<p className="text-xs text-muted-foreground">有效算力</p>
|
||||||
<p className="text-sm font-medium">{formatCompactNumber(stats?.networkEffectiveContribution)}</p>
|
<p className="text-sm font-medium">{formatCompactNumber(stats?.networkEffectiveContribution)}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-xs text-muted-foreground">总算力</p>
|
||||||
|
<p className="text-sm font-medium">{formatCompactNumber(stats?.networkTotalContribution)}</p>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-xs text-muted-foreground">认种用户</p>
|
<p className="text-xs text-muted-foreground">认种用户</p>
|
||||||
<p className="text-sm font-medium">{stats?.adoptedUsers?.toLocaleString() ?? '-'}</p>
|
<p className="text-sm font-medium">{stats?.adoptedUsers?.toLocaleString() ?? '-'}</p>
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ export function StatsCards() {
|
||||||
{
|
{
|
||||||
title: '全网算力',
|
title: '全网算力',
|
||||||
value: formatCompactNumber(stats?.networkEffectiveContribution),
|
value: formatCompactNumber(stats?.networkEffectiveContribution),
|
||||||
|
subValue: `总算力: ${formatCompactNumber(stats?.networkTotalContribution)}`,
|
||||||
icon: Activity,
|
icon: Activity,
|
||||||
iconColor: 'text-blue-500',
|
iconColor: 'text-blue-500',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ export interface DashboardStats {
|
||||||
totalUsers: number;
|
totalUsers: number;
|
||||||
adoptedUsers: number;
|
adoptedUsers: number;
|
||||||
networkEffectiveContribution: string;
|
networkEffectiveContribution: string;
|
||||||
|
networkTotalContribution: string;
|
||||||
totalDistributed: string;
|
totalDistributed: string;
|
||||||
totalBurned: string;
|
totalBurned: string;
|
||||||
circulationPool: string;
|
circulationPool: string;
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,14 @@ import '../../providers/user_providers.dart';
|
||||||
import '../../providers/mining_providers.dart';
|
import '../../providers/mining_providers.dart';
|
||||||
|
|
||||||
/// 分配记录页面(挖矿记录)
|
/// 分配记录页面(挖矿记录)
|
||||||
class MiningRecordsPage extends ConsumerStatefulWidget {
|
class MiningRecordsListPage extends ConsumerStatefulWidget {
|
||||||
const MiningRecordsPage({super.key});
|
const MiningRecordsListPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ConsumerState<MiningRecordsPage> createState() => _MiningRecordsPageState();
|
ConsumerState<MiningRecordsListPage> createState() => _MiningRecordsListPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MiningRecordsPageState extends ConsumerState<MiningRecordsPage> {
|
class _MiningRecordsListPageState extends ConsumerState<MiningRecordsListPage> {
|
||||||
static const Color _orange = Color(0xFFFF6B00);
|
static const Color _orange = Color(0xFFFF6B00);
|
||||||
static const Color _green = Color(0xFF22C55E);
|
static const Color _green = Color(0xFF22C55E);
|
||||||
static const Color _grayText = Color(0xFF6B7280);
|
static const Color _grayText = Color(0xFF6B7280);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue