diff --git a/pkg/mining/mining.go b/pkg/mining/mining.go index 528639a..4885bb9 100644 --- a/pkg/mining/mining.go +++ b/pkg/mining/mining.go @@ -123,13 +123,15 @@ type Config struct { // PerformanceMetrics represents the performance metrics for a miner. type PerformanceMetrics struct { - Hashrate int `json:"hashrate"` - Shares int `json:"shares"` - Rejected int `json:"rejected"` - Uptime int `json:"uptime"` - LastShare int64 `json:"lastShare"` - Algorithm string `json:"algorithm"` - ExtraData map[string]interface{} `json:"extraData,omitempty"` + Hashrate int `json:"hashrate"` + Shares int `json:"shares"` + Rejected int `json:"rejected"` + Uptime int `json:"uptime"` + LastShare int64 `json:"lastShare"` + Algorithm string `json:"algorithm"` + AvgDifficulty int `json:"avgDifficulty"` // Average difficulty per accepted share (HashesTotal/SharesGood) + DiffCurrent int `json:"diffCurrent"` // Current job difficulty from pool + ExtraData map[string]interface{} `json:"extraData,omitempty"` } // HashratePoint represents a single hashrate measurement at a specific time. diff --git a/pkg/mining/service_test.go b/pkg/mining/service_test.go index c38285b..0dfc92e 100644 --- a/pkg/mining/service_test.go +++ b/pkg/mining/service_test.go @@ -25,6 +25,7 @@ type MockMiner struct { AddHashratePointFunc func(point HashratePoint) ReduceHashrateHistoryFunc func(now time.Time) GetLogsFunc func() []string + WriteStdinFunc func(input string) error } func (m *MockMiner) Install() error { return m.InstallFunc() } @@ -43,6 +44,7 @@ func (m *MockMiner) GetHashrateHistory() []HashratePoint { return m.GetHashrate func (m *MockMiner) AddHashratePoint(point HashratePoint) { m.AddHashratePointFunc(point) } func (m *MockMiner) ReduceHashrateHistory(now time.Time) { m.ReduceHashrateHistoryFunc(now) } func (m *MockMiner) GetLogs() []string { return m.GetLogsFunc() } +func (m *MockMiner) WriteStdin(input string) error { return m.WriteStdinFunc(input) } // MockManager is a mock implementation of the Manager for testing. type MockManager struct { diff --git a/pkg/mining/ttminer_stats.go b/pkg/mining/ttminer_stats.go index c3bcbfd..00b40be 100644 --- a/pkg/mining/ttminer_stats.go +++ b/pkg/mining/ttminer_stats.go @@ -49,11 +49,17 @@ func (m *TTMiner) GetStats() (*PerformanceMetrics, error) { } } + // For TT-Miner, we use the connection difficulty as both current and avg + // since TT-Miner doesn't expose per-share difficulty data + diffCurrent := summary.Connection.Diff + return &PerformanceMetrics{ - Hashrate: int(totalHashrate), - Shares: summary.Results.SharesGood, - Rejected: summary.Results.SharesTotal - summary.Results.SharesGood, - Uptime: summary.Uptime, - Algorithm: summary.Algo, + Hashrate: int(totalHashrate), + Shares: summary.Results.SharesGood, + Rejected: summary.Results.SharesTotal - summary.Results.SharesGood, + Uptime: summary.Uptime, + Algorithm: summary.Algo, + AvgDifficulty: diffCurrent, // Use pool diff as approximation + DiffCurrent: diffCurrent, }, nil } diff --git a/pkg/mining/xmrig_stats.go b/pkg/mining/xmrig_stats.go index 2f58429..57684bf 100644 --- a/pkg/mining/xmrig_stats.go +++ b/pkg/mining/xmrig_stats.go @@ -42,11 +42,19 @@ func (m *XMRigMiner) GetStats() (*PerformanceMetrics, error) { hashrate = int(summary.Hashrate.Total[0]) } + // Calculate average difficulty per accepted share + var avgDifficulty int + if summary.Results.SharesGood > 0 { + avgDifficulty = summary.Results.HashesTotal / summary.Results.SharesGood + } + return &PerformanceMetrics{ - Hashrate: hashrate, - Shares: summary.Results.SharesGood, - Rejected: summary.Results.SharesTotal - summary.Results.SharesGood, - Uptime: summary.Uptime, - Algorithm: summary.Algo, + Hashrate: hashrate, + Shares: summary.Results.SharesGood, + Rejected: summary.Results.SharesTotal - summary.Results.SharesGood, + Uptime: summary.Uptime, + Algorithm: summary.Algo, + AvgDifficulty: avgDifficulty, + DiffCurrent: summary.Results.DiffCurrent, }, nil } diff --git a/ui/src/app/components/stats-panel/stats-panel.component.ts b/ui/src/app/components/stats-panel/stats-panel.component.ts index 206302b..eae9791 100644 --- a/ui/src/app/components/stats-panel/stats-panel.component.ts +++ b/ui/src/app/components/stats-panel/stats-panel.component.ts @@ -60,6 +60,18 @@ import { MinerService } from '../../miner.service';
+