c958546e07
- compute_feed_reward/preview_feed_reward: 逐条 (eCPM,秒) 跨条进位、每满 10s 一份、 每份用所在段 eCPM × LT,封顶 12 份/场;发奖与预览同一口径 - grant_feed_reward 改收 segments(旧 ecpm/duration 单段自动回退,兼容旧客户端) - 新增 POST /api/v1/ad/feed-reward/preview(只读不入账,给比价金币小球实时显示真实即将到账额) - schemas 加 FeedSegmentIn/FeedPreviewIn/FeedPreviewOut;docs/api 补 preview 文档 + 更新 feed-reward - tests: 按条结算/12份封顶/aborted/preview==grant 等 6 个用例 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
36 lines
2.0 KiB
Markdown
36 lines
2.0 KiB
Markdown
# POST /api/v1/ad/feed-reward/preview — 信息流播放中预演将发放的金币(只读)
|
||
|
||
比价 / 领券信息流广告**播放过程中**,查询「若此刻结束、整场将发放多少金币」。给金币小球实时显示**真实即将到账金额**用:与 [feed-reward](./ad-feed-reward.md) **同一计价口径**(同份数封顶 / 同 LT / 同 eCPM 钳),但**只读、不入账、不写库**。
|
||
|
||
客户端每满 10 秒观看(或换条 eCPM 变化)拉一次;两次之间用 `next_unit_coin × 本份进度` 在本地做平滑插值显示。
|
||
|
||
## 鉴权
|
||
|
||
需要 Bearer token。
|
||
|
||
## 请求体
|
||
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---:|---|
|
||
| `segments` | array | 是 | 截至此刻的**逐条广告段**(时序,至少 1 项;含在播那条的部分秒数),每项 `{ecpm: string, seconds: int}` |
|
||
|
||
## 响应
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `coin` | int | 此刻结束将发放的累计金币(已满 10 秒的各份之和) |
|
||
| `unit_count` | int | 已累计满的份数(封顶 12) |
|
||
| `next_unit_coin` | int | 下一份(第 `unit_count+1` 份)的金币值,按当前在播段 eCPM 算;封顶后为 0。供小球在本份未满区间内平滑插值 |
|
||
| `session_full` | bool | 是否已达单场份数上限(12)→ 小球应停涨 |
|
||
| `would_status` | string | 若此刻结束的结算预判:`granted` / `too_short`(凑不满一份) / `daily_capped`(已达每日条数上限,整场将发 0) |
|
||
|
||
## 与 feed-reward 的关系
|
||
|
||
- 同样按 `segments` 跨条进位每满 10 秒一份、每份用所在段 eCPM 计价(详见 [feed-reward 计算口径](./ad-feed-reward.md#计算口径))。
|
||
- preview 的 `coin` 等于「用相同 segments 调 feed-reward 实发的 `coin`」——小球显示值即整场结束实发额(除非中途 `would_status` 提示 `daily_capped`,那种情况整场实发 0)。
|
||
- preview **不消耗每日上限、不写任何表**,可高频调用(限流 600/分)。
|
||
|
||
## 限流
|
||
|
||
600 次 / 分钟(`ad-feed-preview`)。
|