a2270ee1b2
新手引导视频:运营后台上传 MP4(上限 100MB,魔数校验只认 ISO BMFF), App 端在领券等候浮层前 N 次以引导视频替代广告。新增 guide_video 的 model/schema/repository/router(App 侧 + 后台侧)与播放记录表迁移。 美团券:首页「销量最高 / 智能推荐」两个 tab 改游标分页,配套两条 (city_id, dedup_key, 排序键 DESC) 复合索引,让 Postgres 顺着索引流式 去重,免掉每翻一页重排整城券的开销。美团 CPS client 在 lifespan 预热 并在关闭时释放连接池。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 lines
935 B
Python
26 lines
935 B
Python
"""admin 新手引导视频配置 schemas(开关 / 视频地址 / 前几次 / 每次金币)。"""
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.repositories.guide_video import MAX_PLAYS_LIMIT, REWARD_COIN_LIMIT
|
|
|
|
|
|
class GuideVideoConfigOut(BaseModel):
|
|
enabled: bool
|
|
video_url: str | None = None # 相对地址 /media/guide_video/xxx.mp4;未配片 = None
|
|
max_plays: int
|
|
reward_coin: int
|
|
updated_at: str | None = None
|
|
# 只读统计,后台展示用:已有多少次播放、其中已发币多少次。
|
|
total_plays: int = 0
|
|
granted_plays: int = 0
|
|
|
|
|
|
class GuideVideoConfigUpdate(BaseModel):
|
|
"""部分更新:只改传入(非 None)字段。视频文件走 /video 上传接口。"""
|
|
|
|
enabled: bool | None = None
|
|
max_plays: int | None = Field(default=None, ge=0, le=MAX_PLAYS_LIMIT)
|
|
reward_coin: int | None = Field(default=None, ge=0, le=REWARD_COIN_LIMIT)
|