[AI] feat: 新增 dramacmt 短剧评论铺量工具

后台已有的评论导入只认视频、要上传 Excel,而且 userID 取自 static.json
的 sysUser —— 那些 uid 在 user 表里不存在,前端渲染出来昵称头像都是空的
(线上已有 5962 条这样的评论)。

本工具自建机器人用户池(uid 1001 起,落在 constant.RobotUIDLimit 以内,
devID 唯一索引是非 sparse 的,给 ROBOT%07d),评论挂在它们身上,
昵称头像可正常显示,后台能按 isRobot 筛选和撤回。

几个容易写错的点记在 README:status 必须直接写 1(App 发评论走的是 2,
而列表只认 1)、type 是 VIDEO 而 objType 才是 drama、tousername 落库键名
是小写、media.countComment 必须同步 $inc 否则前端总数显示 0。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-29 21:13:16 +08:00
co-authored by Claude Opus 5
parent ed51664a09
commit f45144a3f4
4 changed files with 632 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
package main
import "math/rand"
// 机器人用户的昵称按「姓 + 名」随机拼,和库里现有那 17 个机器人用户的风格一致
// (郏哲、溪焱、书锦素这种)。姓 103 个 × 名 120 个,重名概率够低。
var surnames = []string{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈",
"褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
"何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
"陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章",
"云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦",
"昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳",
"酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺",
"倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常",
"乐", "于", "时", "傅", "皮", "齐", "康", "伍", "余", "元",
"卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹", "姚",
"邵", "湛", "汪",
}
var givens = []string{
"哲", "焱", "锦素", "彤", "水生", "嘉聪", "理源", "霖", "钧莎", "香",
"亦旭", "朋翰", "寒健", "沁", "旭", "怡言", "鹏阳", "子轩", "思远", "若曦",
"曼青", "语桐", "宇辰", "泽楷", "家豪", "静怡", "雨萱", "梓涵", "一诺", "欣然",
"书瑶", "明轩", "睿杰", "佳怡", "子墨", "艺涵", "念慈", "向晚", "星河", "听澜",
"知微", "清和", "望舒", "照邻", "渐鸿", "慕白", "青山", "行舟", "无眠", "半夏",
"长风", "衔月", "疏影", "烟岚", "问荆", "怀瑾", "映雪", "拾音", "观鱼", "枕书",
"伯言", "仲卿", "叔夜", "季同", "元朗", "子期", "牧之", "介甫", "东篱", "南山",
"西岭", "北辰", "承安", "守拙", "明诚", "致远", "思齐", "见深", "存厚", "知行",
"宸", "珩", "珏", "琛", "璟", "瑜", "琰", "瑄", "璨", "瑾",
"岚", "屿", "洲", "沅", "湘", "淮", "汀", "泠", "泓", "澈",
"晞", "暄", "昀", "晗", "旸", "曜", "昭", "晟", "晏", "晔",
"桐", "梧", "榕", "楠", "柘", "槿", "樾", "檀", "蓁", "荔",
}
func randomName(rnd *rand.Rand) string {
return surnames[rnd.Intn(len(surnames))] + givens[rnd.Intn(len(givens))]
}
// cities 与各站 web/config/static.json 里的 cities 一致,评论的归属地从这里取。
var cities = []string{
"广州", "惠州", "佛山", "中山", "韶关", "清远", "成都", "泸州", "广元", "安康",
"宝鸡", "赣州", "上海", "重庆", "西安", "杭州", "深圳", "北京", "天津", "安顺",
"贵阳", "武汉", "南京", "石家庄", "沈阳", "哈尔滨", "青岛", "大连", "宁波", "舟山",
"乌鲁木齐", "秦皇岛", "唐山", "包头", "马鞍山", "徐州", "赤峰", "铁岭", "佳木斯",
"厦门", "福州", "三亚", "海口", "苏州", "常州", "长春", "吉林", "烟台", "东莞",
"湛江", "泉州", "漳州", "温州", "金华", "宜宾", "合肥", "郑州", "洛阳",
}