This commit is contained in:
toom1996
2026-08-26 19:40:16 +08:00
parent 30c9f21da4
commit a6724265ad
14 changed files with 400 additions and 101 deletions

68
scripts/diag_hot/main.go Normal file
View File

@ -0,0 +1,68 @@
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)
}
}