This commit is contained in:
Eric 1549169735@qq.com
2026-09-13 20:08:13 +08:00
parent 7cc06976ab
commit da3f16e6db
65 changed files with 3855 additions and 2153 deletions

View File

@@ -0,0 +1,56 @@
package dashboard
import (
"git.iwork-ai.com/xdc/iqudo-top1/internal/auth"
"git.iwork-ai.com/xdc/iqudo-top1/internal/response"
"github.com/gin-gonic/gin"
)
type dimensionStat struct {
ValueKey string `json:"value_key"`
Name string `json:"name"`
DimKey string `json:"dim_key"`
Runs int64 `json:"runs"`
AverageWeight float64 `json:"average_weight"`
}
type scriptFeedbackStat struct {
ScriptKey string `json:"script_key"`
Name string `json:"name"`
FeedbackType string `json:"feedback_type"`
Count int64 `json:"count"`
}
// Scriptkit returns script package analytics: average dimension weights per
// value and script feedback counts.
func (h *Handler) Scriptkit(c *gin.Context) {
principal, _ := auth.PrincipalFromContext(c)
dimensions := make([]dimensionStat, 0)
err := h.db.Raw(`
SELECT dv.value_key, dv.name, d.dim_key, COUNT(DISTINCT rd.run_id) AS runs, AVG(rd.weight) AS average_weight
FROM run_dimensions rd
JOIN dimension_values dv ON dv.dimension_id = rd.dimension_id AND dv.value_key = rd.value_key AND dv.tenant_id = rd.tenant_id
JOIN package_dimensions d ON d.id = rd.dimension_id AND d.tenant_id = rd.tenant_id
WHERE rd.tenant_id = ? AND rd.weight > 0
GROUP BY dv.value_key, dv.name, d.dim_key
ORDER BY runs DESC, average_weight DESC
LIMIT 100`, principal.TenantID).Scan(&dimensions).Error
if err != nil {
queryFailed(c)
return
}
feedback := make([]scriptFeedbackStat, 0)
err = h.db.Raw(`
SELECT ss.script_key, ss.name, sf.feedback_type, COUNT(*) AS count
FROM script_feedbacks sf
JOIN stage_scripts ss ON ss.id = sf.script_id
WHERE sf.tenant_id = ?
GROUP BY ss.script_key, ss.name, sf.feedback_type
ORDER BY count DESC
LIMIT 100`, principal.TenantID).Scan(&feedback).Error
if err != nil {
queryFailed(c)
return
}
response.OK(c, gin.H{"dimensions": dimensions, "feedback": feedback})
}