[AI] feat: dramacmt 文案池扩到 637 条以支撑单剧 200 条

其余四站要求每部在线短剧加铺 50~200 条,原来 179 条的池子装不下:
main.go 的硬校验会直接拒绝 --max 200,而且就算刚好够,每部剧都会抽到
九成文案,几千部剧的评论区长得一模一样。

新增 458 条(催更、剧情编剧、角色与 CP、演技、制作配乐、吐槽批评、
平台体验、追剧场景、讨论打卡、短评、长评),全池 637 条互不重复,
抽 200 条约占三成。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-30 11:33:11 +08:00
co-authored by Claude Opus 5
parent 7ae3264109
commit 96caa5cda0
2 changed files with 228 additions and 13 deletions
+25 -11
View File
@@ -18,8 +18,11 @@
## 机器人用户
- uid 从 **1001** 开始往上发,默认 400 个。该区间原本完全空闲(`uid 1~17` 是库里
已有的 17 个机器人,1000 以下整段不碰)
- uid 从 **1001** 开始往上发,`--users` 控制池子大小。该区间原本完全空闲
(`uid 1~17` 是库里已有的 17 个机器人,1000 以下整段不碰)
- **池子要够大**:同一部剧内用户不重复,所以 `--users` 必须大于 `--max`;
而且池子太小的话同一个昵称头像会在整个评论区刷屏。实测取值:
tangguo 5,000(和 `scripts/vidcmt` 共用),其余四站 3,000
- uid 必须 `<= 111999`(`common/constant.RobotUIDLimit`)——
`commentser.getTrackInfo` 靠这个阈值判定 `isRobot`,后台可按机器人筛选和撤回
- uid 池远低于 `auto_id` 的 uid 计数器(当时是 3111989,只增不减),
@@ -74,8 +77,11 @@ createdAt <= now
- **不写 `like` 集合的记录**。`likeCount` 是展示值,`isLike` 只反映当前请求用户,
不建 like 文档不影响功能,也省掉几万条垃圾数据
文案池在 `content.go`,179 条互不重复。单剧内文案和用户都不重复,
所以 `--max` 不能超过池子容量。
文案池在 `content.go`,**637 条**互不重复。单剧内文案和用户都不重复,
所以 `--max` 不能超过池子容量(`main.go` 里有硬校验)。
容量还要留足余量,不能刚好够:铺 200 条时池子只有 220 条的话,每部剧都会抽到
九成文案,几千部剧的评论区长得一模一样。现在抽 200 条约占池子三成。
## 用法
@@ -88,8 +94,9 @@ go build -o /tmp/dramacmt ./scripts/dramacmt/
# 只给评论数为 0 的剧铺,每部 20~50 条(默认)
/tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo
# 全部在线短剧都补到 20~50 条
/tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo --only-empty=false
# 所有在线短剧都加铺 50~200 条(其余四站 2026-10-30 实际用的参数)
/tmp/dramacmt --dst "$DST_HUANGGUO" --db huangguo --users 3000 \
--min 50 --max 200 --only-empty=false
# 调试:只跑 3 部,固定种子便于复现
/tmp/dramacmt --dst "$DST_TANGGUO" --db tangguo --limit 3 --seed 42
@@ -102,11 +109,18 @@ go build -o /tmp/dramacmt ./scripts/dramacmt/
机器人用户和评论都带标记,撤回是两条命令:
```js
// 撤回评论(软删,保守做法)
db.comment.updateMany({isRobot: true, objType: "drama", userID: {$gte: 1001, $lte: 1400}},
// 撤回评论(软删,保守做法)。uid 上限按当站实际的 --users 取
db.comment.updateMany({isRobot: true, objType: "drama", userID: {$gte: 1001, $lte: 5000}},
{$set: {isDelete: true}})
// countComment 要跟着减,按 objID 分组重算
```
硬删同理,把 `$set` 换成 `deleteMany`。重算 `countComment` 用
`countDocuments({objID, level:1, status:1, isDelete:false})`。
硬删同理,把 `$set` 换成 `deleteMany`。两种都做完后 `countComment` 要重算,
口径和 App 列表第 1 页保持一致(`app/service/commentser.GetTotalComments`):
```js
countDocuments({objID, objType: "drama", level: 1, status: 1,
isDelete: false, isAdvertiser: {$in: [null, false]}})
```
短剧和影视不一样:**第 1 页的总条数直接读 `media.countComment`**,第 2 页之后才
实时查,所以这个字段不重算前端就会出现「显示 N 条但列表是空的」。