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 }