66 lines
2.2 KiB
Go
66 lines
2.2 KiB
Go
|
|
package bridge
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
"cursor/internal/appdata"
|
||
|
|
serverconfig "cursor/internal/backend/server/config"
|
||
|
|
"cursor/internal/historymetrics"
|
||
|
|
)
|
||
|
|
|
||
|
|
// HomeMetricsSummary 定义首页展示的历史统计摘要。
|
||
|
|
type HomeMetricsSummary struct {
|
||
|
|
ProviderCallsTotal int `json:"providerCallsTotal"`
|
||
|
|
TurnsTotal int `json:"turnsTotal"`
|
||
|
|
ValidTurnsTotal int `json:"validTurnsTotal"`
|
||
|
|
InvalidTurnsTotal int `json:"invalidTurnsTotal"`
|
||
|
|
RequestTokensTotal int64 `json:"requestTokensTotal"`
|
||
|
|
PromptTokensTotal int64 `json:"promptTokensTotal"`
|
||
|
|
CacheReadTokens int64 `json:"cacheReadTokens"`
|
||
|
|
CacheWriteTokens int64 `json:"cacheWriteTokens"`
|
||
|
|
CacheHitRate *float64 `json:"cacheHitRate"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// MetricsService 定义首页统计相关的 Wails service。
|
||
|
|
type MetricsService struct {
|
||
|
|
configStore *serverconfig.Store
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewMetricsService 创建首页统计 service。
|
||
|
|
func NewMetricsService() *MetricsService {
|
||
|
|
return &MetricsService{
|
||
|
|
configStore: serverconfig.NewStore(appdata.ConfigFilePath(), ""),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetHomeMetricsSummary 返回首页展示的全量历史统计摘要。
|
||
|
|
// 命中率口径(是否计入缓存写入)由后端按用户配置统一计算。
|
||
|
|
func (service *MetricsService) GetHomeMetricsSummary() (HomeMetricsSummary, error) {
|
||
|
|
if err := appdata.EnsureAssistantHome(); err != nil {
|
||
|
|
return HomeMetricsSummary{}, err
|
||
|
|
}
|
||
|
|
|
||
|
|
includeCacheWriteInHitRate := false
|
||
|
|
if service != nil && service.configStore != nil {
|
||
|
|
if cfg, err := service.configStore.Load(context.Background()); err == nil {
|
||
|
|
includeCacheWriteInHitRate = cfg.HomeMetrics.IncludeCacheWriteInHitRate
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
summary, err := historymetrics.LoadUsageSummary(appdata.UsageFilePath(), includeCacheWriteInHitRate)
|
||
|
|
if err != nil {
|
||
|
|
return HomeMetricsSummary{}, err
|
||
|
|
}
|
||
|
|
return HomeMetricsSummary{
|
||
|
|
ProviderCallsTotal: summary.ProviderCallsTotal,
|
||
|
|
TurnsTotal: summary.TurnsTotal,
|
||
|
|
ValidTurnsTotal: summary.ValidTurnsTotal,
|
||
|
|
InvalidTurnsTotal: summary.InvalidTurnsTotal,
|
||
|
|
RequestTokensTotal: summary.RequestTokensTotal,
|
||
|
|
PromptTokensTotal: summary.PromptTokensTotal,
|
||
|
|
CacheReadTokens: summary.CacheReadTokens,
|
||
|
|
CacheWriteTokens: summary.CacheWriteTokens,
|
||
|
|
CacheHitRate: summary.CacheHitRate,
|
||
|
|
}, nil
|
||
|
|
}
|