feat(admin): 「自动评测」页做实 —— 接真评测数据,去 mock (P1)
审计 P1「admin 三页纯 mock」之一。此前 EvalsPage 是写死的质量趋势+编造的 错题本+虚构纠偏轨迹。现接 sundynix_eval 真数据(评测经 JetStream eval 流持久 落库,刚升级)。 - store/eval_query.go:EvalTrend(按天 avg 综合分/忠实度+低分计数)、EvalSummaryFor (ok/warn/poor/corrected 计数+均值)、PoorEvals(错题本,level in poor/warn + 评语+纠偏标记+租户名)。全 WithoutTenant 平台口径;忠实度均值只算 sources>0 (无来源的忠实度恒0会压低失真)。 - GET /admin/evals?days=(RequireAdmin);admin api.ts + EvalsPage 重写: 总览卡片(综合分/合格率/低分占比/纠偏采纳率)+质量&忠实度趋势(纯SVG折线+低分 背景条)+错题本(点行展开评语)。 - 诚实边界:纠偏「前后全文对照」后端未持久化,只存了 Reason/Corrected/各维度分, 故错题本展示评语+「已纠偏」标记,不再编造 before/after。 live:/admin/evals 返 57 次评测 avg=0.88、错题本10条、11天趋势;浏览器渲染 真数据(趋势线07-15真实下探)。go+tsc+41 vitest 全绿。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -570,3 +570,23 @@ func (h *Handler) AdminUsage(c *gin.Context) {
|
||||
}
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
|
||||
// AdminEvals: GET /api/v1/admin/evals?days= —— 自动评测观测(趋势 + 计数 + 错题本)。全平台口径。
|
||||
// 数据来自 sundynix_eval(评测经 JetStream eval 流持久落库);此前该页纯 mock。
|
||||
func (h *Handler) AdminEvals(c *gin.Context) {
|
||||
ctx := store.WithoutTenant(c.Request.Context())
|
||||
now := time.Now()
|
||||
days := 14
|
||||
if d, err := strconv.Atoi(c.Query("days")); err == nil && d > 0 && d <= 90 {
|
||||
days = d
|
||||
}
|
||||
from := now.AddDate(0, 0, -(days - 1)).Format("20060102")
|
||||
to := now.Format("20060102")
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"from": from,
|
||||
"to": to,
|
||||
"trend": h.db.EvalTrend(ctx, from, to),
|
||||
"summary": h.db.EvalSummaryFor(ctx, from, to),
|
||||
"poor": h.db.PoorEvals(ctx, 30),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user