Files
backend_v2/scripts/diag_hot/main.go
toom1996 a6724265ad update
2026-08-26 19:40:16 +08:00

69 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
// 诊断:复现 FeaturedIDs("images", 30) 的 SQL,验证热门品牌排名数据是否合理。
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
const dsn = "root:root@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local"
func main() {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
// 1) 复现 FeaturedIDs:按图片总数 DESC 取前 30
type Row struct {
BrandID uint32 `gorm:"column:brand_id"`
Images int64 `gorm:"column:images"`
Shows int64 `gorm:"column:shows"`
}
var rows []Row
db.Raw(`
SELECT brand_id, COALESCE(SUM(image_count),0) AS images, COUNT(*) AS shows
FROM brand_runway
WHERE is_deleted = 0
GROUP BY brand_id
ORDER BY images DESC
LIMIT 30
`).Scan(&rows)
fmt.Println("== FeaturedIDs(images, 30) 原始排名 ==")
for i, r := range rows {
var name string
db.Raw(`SELECT name_en FROM brand WHERE id = ?`, r.BrandID).Scan(&name)
fmt.Printf("%2d. brand_id=%-6d images=%-6d shows=%-4d %s\n", i+1, r.BrandID, r.Images, r.Shows, name)
}
// 2) image_count 分布:有多少品牌有图、多少归零
var zeroBrands, hasImgBrands int64
var totalRows, zeroRows int64
db.Raw(`SELECT COUNT(*) FROM (SELECT brand_id, SUM(image_count) s FROM brand_runway WHERE is_deleted=0 GROUP BY brand_id) t WHERE s = 0`).Scan(&zeroBrands)
db.Raw(`SELECT COUNT(*) FROM (SELECT brand_id, SUM(image_count) s FROM brand_runway WHERE is_deleted=0 GROUP BY brand_id) t WHERE s > 0`).Scan(&hasImgBrands)
db.Raw(`SELECT COUNT(*) FROM brand_runway WHERE is_deleted=0`).Scan(&totalRows)
db.Raw(`SELECT COUNT(*) FROM brand_runway WHERE is_deleted=0 AND image_count=0`).Scan(&zeroRows)
fmt.Printf("\n== image_count 分布 ==\n有图品牌=%d 零图品牌=%d | 走秀总行=%d 其中 image_count=0 的行=%d\n", hasImgBrands, zeroBrands, totalRows, zeroRows)
// 3) 对比口径:按走秀数(shows) DESC 前 10
var byShows []Row
db.Raw(`
SELECT brand_id, COALESCE(SUM(image_count),0) AS images, COUNT(*) AS shows
FROM brand_runway
WHERE is_deleted = 0
GROUP BY brand_id
ORDER BY shows DESC
LIMIT 10
`).Scan(&byShows)
fmt.Println("\n== 若按 shows DESC 前 10 ==")
for i, r := range byShows {
var name string
db.Raw(`SELECT name_en FROM brand WHERE id = ?`, r.BrandID).Scan(&name)
fmt.Printf("%2d. brand_id=%-6d images=%-6d shows=%-4d %s\n", i+1, r.BrandID, r.Images, r.Shows, name)
}
}