fix(patch): 适配 CLIProxyAPI v6.10.0 移除 Handler.usageStats 字段
Browse filesusage.go 改为直接调用 usage.GetRequestStatistics() 全局单例,
不再依赖 Handler 结构体的 usageStats 字段。
.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
patches/cliproxy/internal/api/handlers/management/usage.go
CHANGED
|
@@ -28,8 +28,9 @@ const defaultUsageDetailsLimit = 500
|
|
| 28 |
func (h *Handler) GetUsageStatistics(c *gin.Context) {
|
| 29 |
var snapshot usage.StatisticsSnapshot
|
| 30 |
detailsLimit := parseUsageDetailsLimit(c, defaultUsageDetailsLimit)
|
| 31 |
-
|
| 32 |
-
|
|
|
|
| 33 |
IncludeDetails: detailsLimit != 0,
|
| 34 |
DetailLimit: detailsLimit,
|
| 35 |
})
|
|
@@ -75,8 +76,9 @@ func parseUsageDetailsLimit(c *gin.Context, defaultLimit int) int {
|
|
| 75 |
// ExportUsageStatistics returns a complete usage snapshot for backup/migration.
|
| 76 |
func (h *Handler) ExportUsageStatistics(c *gin.Context) {
|
| 77 |
var snapshot usage.StatisticsSnapshot
|
| 78 |
-
|
| 79 |
-
|
|
|
|
| 80 |
}
|
| 81 |
c.JSON(http.StatusOK, usageExportPayload{
|
| 82 |
Version: 1,
|
|
@@ -87,7 +89,8 @@ func (h *Handler) ExportUsageStatistics(c *gin.Context) {
|
|
| 87 |
|
| 88 |
// ImportUsageStatistics merges a previously exported usage snapshot into memory.
|
| 89 |
func (h *Handler) ImportUsageStatistics(c *gin.Context) {
|
| 90 |
-
|
|
|
|
| 91 |
c.JSON(http.StatusBadRequest, gin.H{"error": "usage statistics unavailable"})
|
| 92 |
return
|
| 93 |
}
|
|
@@ -108,8 +111,8 @@ func (h *Handler) ImportUsageStatistics(c *gin.Context) {
|
|
| 108 |
return
|
| 109 |
}
|
| 110 |
|
| 111 |
-
result :=
|
| 112 |
-
snapshot :=
|
| 113 |
c.JSON(http.StatusOK, gin.H{
|
| 114 |
"added": result.Added,
|
| 115 |
"skipped": result.Skipped,
|
|
|
|
| 28 |
func (h *Handler) GetUsageStatistics(c *gin.Context) {
|
| 29 |
var snapshot usage.StatisticsSnapshot
|
| 30 |
detailsLimit := parseUsageDetailsLimit(c, defaultUsageDetailsLimit)
|
| 31 |
+
stats := usage.GetRequestStatistics()
|
| 32 |
+
if stats != nil {
|
| 33 |
+
snapshot = stats.SnapshotWithOptions(usage.SnapshotOptions{
|
| 34 |
IncludeDetails: detailsLimit != 0,
|
| 35 |
DetailLimit: detailsLimit,
|
| 36 |
})
|
|
|
|
| 76 |
// ExportUsageStatistics returns a complete usage snapshot for backup/migration.
|
| 77 |
func (h *Handler) ExportUsageStatistics(c *gin.Context) {
|
| 78 |
var snapshot usage.StatisticsSnapshot
|
| 79 |
+
stats := usage.GetRequestStatistics()
|
| 80 |
+
if stats != nil {
|
| 81 |
+
snapshot = stats.Snapshot()
|
| 82 |
}
|
| 83 |
c.JSON(http.StatusOK, usageExportPayload{
|
| 84 |
Version: 1,
|
|
|
|
| 89 |
|
| 90 |
// ImportUsageStatistics merges a previously exported usage snapshot into memory.
|
| 91 |
func (h *Handler) ImportUsageStatistics(c *gin.Context) {
|
| 92 |
+
stats := usage.GetRequestStatistics()
|
| 93 |
+
if stats == nil {
|
| 94 |
c.JSON(http.StatusBadRequest, gin.H{"error": "usage statistics unavailable"})
|
| 95 |
return
|
| 96 |
}
|
|
|
|
| 111 |
return
|
| 112 |
}
|
| 113 |
|
| 114 |
+
result := stats.MergeSnapshot(payload.Usage)
|
| 115 |
+
snapshot := stats.Snapshot()
|
| 116 |
c.JSON(http.StatusOK, gin.H{
|
| 117 |
"added": result.Added,
|
| 118 |
"skipped": result.Skipped,
|