174 lines
6.3 KiB
Markdown
174 lines
6.3 KiB
Markdown
# 91迭代配置改动点
|
||
|
||
适用分支:`feat/91-iteration`
|
||
|
||
本文只记录环境配置、后台业务配置和上线数据处理。账号、密钥及各环境真实配置值不得写入本文。
|
||
|
||
## 一、App运行配置
|
||
|
||
文件:`config/app.json`
|
||
|
||
新增根节点:
|
||
|
||
```json
|
||
{
|
||
"shortRecommend": {
|
||
"enabled": true,
|
||
"requestTimeoutMs": 3000,
|
||
"maxBatches": 5,
|
||
"scanMultiplier": 5,
|
||
"keyTTLHours": 72
|
||
},
|
||
"laoSiJiAiMate": {
|
||
"appId": "<按环境填写>",
|
||
"apiKey": "<按环境填写,不得写入Git或文档>",
|
||
"apiUrl": "<按环境填写>"
|
||
}
|
||
}
|
||
```
|
||
|
||
字段说明:
|
||
|
||
| 字段 | 默认值/要求 | 说明 |
|
||
|---|---|---|
|
||
| `shortRecommend.enabled` | 未配置默认 `true` | 是否使用全局短视频环形队列 |
|
||
| `requestTimeoutMs` | 默认 `3000`,范围 `100~10000` | App读取推荐队列超时 |
|
||
| `maxBatches` | 默认 `5`,范围 `1~20` | 过滤失效视频时最多补取批次 |
|
||
| `scanMultiplier` | 默认 `5`,范围 `1~20` | 单批候选扫描倍数 |
|
||
| `keyTTLHours` | 默认 `72`,有效范围 `24~720` | 推荐队列、偏移等Redis键TTL |
|
||
| `laoSiJiAiMate.*` | 三项必须完整 | AI女友V2第三方配置,仅App使用 |
|
||
|
||
`base.totalWatch` 不再作为免费观看次数来源,请从 app 配置移除。非VIP免费观看总次数改为通过后端系统配置 `sys_conf`(`gpCode=common`)中的 `totalWatchCount` 控制。
|
||
|
||
## 二、SKD运行配置
|
||
|
||
文件:`config/skd.json`
|
||
|
||
新增根节点:
|
||
|
||
```json
|
||
{
|
||
"shortRecommend": {
|
||
"enabled": true,
|
||
"cron": "CRON_TZ=Asia/Shanghai 0 5/10 * * * ?",
|
||
"keyTTLHours": 72,
|
||
"maxInitializationWrites": 50000
|
||
}
|
||
}
|
||
```
|
||
|
||
字段说明:
|
||
|
||
| 字段 | 默认值/要求 | 说明 |
|
||
|---|---|---|
|
||
| `enabled` | 未配置默认 `true` | 是否注册推荐队列任务并在启动时补建 |
|
||
| `cron` | 每10分钟健康检查 | 当天队列健康时不会重复生成 |
|
||
| `keyTTLHours` | 默认 `72` | 必须与App保持一致 |
|
||
| `maxInitializationWrites` | 生产未配置默认 `50000`;非生产默认 `0` | 首次推荐分初始化写入保护;显式 `0` 表示关闭限制 |
|
||
|
||
正式发布前必须统计未初始化短视频数。若超过保护阈值,任务会在任何批量写入前终止;应选择提前初始化、提高阈值或经确认后显式关闭限制。
|
||
|
||
## 三、Web运行配置
|
||
|
||
`config/web.json` 没有新增字段。Web需要发布代码以提供管理后台配置接口,但不需要新增运行配置。
|
||
|
||
## 四、后台和数据库业务配置
|
||
|
||
这些数据不会随Jenkins代码发布从测试库迁移到生产库,各环境需要单独配置。
|
||
|
||
### 4.1 亚模块配置(`module_conf`)
|
||
|
||
新增字段:
|
||
|
||
- `onlineAt`、`offlineAt`
|
||
- `excludeLatest`
|
||
- `excludeRecommend`
|
||
- `searchOnlyWhenInactive`
|
||
- `haiJiaoStyle.sortRules[].refreshMode`
|
||
- `haiJiaoStyle.sortRules[].randomCandidateN`
|
||
|
||
历史热门排序 `val=2` 未配置刷新字段时,会兼容为 `RANDOM_TOP_N`、候选数 `30`,不依赖可编辑标题。
|
||
|
||
### 4.2 付费引导(`payment_guide`)
|
||
|
||
按环境配置场景、用户分层、样式、文案、套餐、跳转、启用状态和有效期。
|
||
场景新增 `DISCOUNT_COUNTDOWN`;该场景只配置卡片内容,固定2小时倒计时由前端在每次App冷启动时本地重新创建,后端不使用 `durationSeconds` 计算倒计时。
|
||
新增 `HOME_NEW_USER_FREE_TRIAL`,用于“首页新用户免费 X 次试看”,X 读取 `totalWatchCount`;旧 `HOME_NEW_USER` 保留兼容代码但不再向 App/Web 返回。`HOME_NEW_USER_FREE_TRIAL` 与 `HOME_OLD_USER` 共用系统配置 `paymentGuideHomeEnabled` 作为首页场景总开关。
|
||
`VIP_CONTENT_UPDATE.videoLimit` 未配置或为 `0` 时默认返回4条,最大20条。
|
||
曝光记录集合 `payment_guide_impression` 由程序自动写入,不需初始化。
|
||
|
||
### 4.3 评论区Banner(`scene_banner`)
|
||
|
||
场景固定为 `COMMENT_TOP`,配置图片/GIF、内外链、排序、启用状态和上下架时间。
|
||
没有默认Banner,测试环境数据不会自动进入生产。
|
||
|
||
### 4.4 VIP卡片A/B(`vip_card_experiment`)
|
||
|
||
按环境使用真实套餐ID配置:
|
||
|
||
- A/B流量比例
|
||
- 套餐列表与默认套餐
|
||
- `skinKey`
|
||
- `productBadges`
|
||
- `uiConfig.backgroundImage`
|
||
- `uiConfig.badgeStyles`
|
||
- 实验结束时间
|
||
|
||
默认没有启用实验;未发布实验时会员套餐接口保持原有返回。统计事件集合由程序自动写入。
|
||
|
||
### 4.5 系统配置(`sys_conf`)
|
||
|
||
- 新增 `freeTrialBadgeEnabled=true`:服务启动时自动补充,上线前确认最终开关值。
|
||
- 新增 `totalWatchCount`(int):非VIP用户单日免费观看上限,可编辑/可查看,默认值 `3`。
|
||
- 示例:把 `totalWatchCount` 设置为 `3`,则 `totalWatchCount` 返回 `3`。
|
||
- 新增 `paymentGuideHomeEnabled=true`(bool):首页付费引导共用开关,同时控制 `HOME_NEW_USER_FREE_TRIAL` 和 `HOME_OLD_USER`,可在 Web 系统通用配置中查看和编辑。
|
||
- 复用 `aiGirlFriend=true`:AI女友V2启用条件之一。
|
||
|
||
## 五、历史数据处理
|
||
|
||
`media` 新增 `latestPublishedAt`,历史数据必须回填,否则动漫/漫画最新排序会受缺失值影响:
|
||
|
||
```javascript
|
||
db.media.updateMany(
|
||
{
|
||
status: 1,
|
||
isDelete: false,
|
||
latestPublishedAt: { $exists: false }
|
||
},
|
||
[
|
||
{
|
||
$set: {
|
||
latestPublishedAt: {
|
||
$ifNull: [
|
||
"$contentUpdateTime",
|
||
{
|
||
$ifNull: [
|
||
"$updateTime",
|
||
"$createdAt"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
}
|
||
}
|
||
]
|
||
)
|
||
```
|
||
|
||
执行前后应分别统计缺失数量并抽样核对排序结果。该脚本需单独执行,代码发布不会自动回填。
|
||
|
||
## 六、基础设施与发布范围
|
||
|
||
- 不新增Kafka Topic、MQ、Redis实例、端口或操作系统crontab。
|
||
- 继续使用现有MongoDB和Redis。
|
||
- App/H5接口发布 `BUILD_ITEM=app`。
|
||
- 管理后台接口发布 `BUILD_ITEM=web`。
|
||
- 推荐队列生成任务发布 `BUILD_ITEM=skd`。
|
||
- 服务启动会自动创建新增集合和索引,需确认MongoDB账号具有建索引权限。
|
||
- Redis推荐队列、版本、用户偏移及红点缓存均由程序自动创建,无需手工初始化。
|
||
|
||
## 七、不属于本分支的配置
|
||
|
||
- 测试环境手工调整的 `imv2.baseUrl`、`imv2.dynamicConfigDomain`、`imv2.socketUrl` 是环境修复,不是 `feat/91-iteration` 新增配置。
|
||
- H.265相关配置属于其他开发分支,不计入本迭代配置改动。
|