Compare commits

..

7 Commits

Author SHA1 Message Date
guke afc2c7f7a1 Merge branch 'main' into fix-homelist 2026-07-24 14:48:23 +08:00
左辰勇 106374cca0 修复:合并 alembic 两个 head(no-op merge 节点)
merge origin/main 后 coupon_claim_event(main)与 guide_video_user_seq_uq(本分支)
成两个 head,加 no-op merge 节点 d8dd2106e438 收敛为单 head。已在全新库上
alembic upgrade heads 验证整条链可应用。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 11:53:02 +08:00
左辰勇 14fd4e6a44 Merge remote-tracking branch 'origin/main' into fix-homelist 2026-07-24 11:51:27 +08:00
左辰勇 71135c4e3a 修复:引导视频并发刷金币 —— (user_id,seq) 唯一键 + 发币条件更新幂等
start_play 无锁 check-then-insert,并发 /start 会算出同一个 seq、各拿一个
play_token 绕过次数上限刷金币;加 (user_id, seq) 唯一键,撞键即降级为不放视频。
grant_play 改成 status='playing'→'granted' 条件更新(compare-and-set),
播完与关闭抢跑/重试只会命中一条,不再二次铸币。含迁移与测试。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 11:50:34 +08:00
左辰勇 fee43b7398 修复:合并 alembic 两个 head(no-op merge 节点)
本分支的 guide_video_play_table 与 main 的 8e04cc13a211 都挂在
(comparison_user_created_idx, monitoring_audit_rbac, notification_table)
这三条线之上,合并 main 后并列成两个 head,`upgrade head` 会直接报
Multiple head revisions。加一个空的 merge 节点收成单 head,不改表结构。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 22:58:05 +08:00
左辰勇 ca4cecb7a2 Merge remote-tracking branch 'origin/main' into fix-homelist 2026-07-23 22:51:46 +08:00
左辰勇 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>
2026-07-23 22:50:44 +08:00
+4 -2
View File
@@ -129,11 +129,13 @@ def withdraw_health_check(db: AdminDb) -> WxpayHealthCheckOut:
issues.append("免确认授权回调地址未配置")
# 实际是否自动对账 = env 部署总闸(worker 起没起)AND 运营后台 DB 开关(本轮跑不跑)。
# 自动查单属于非阻断运维能力:状态继续返回给调用方,但关闭时不计入微信提现配置 issues,
# 避免把“没有自动扫单”误报成“无法打款”。
worker_running = settings.WITHDRAW_AUTO_RECONCILE_ENABLED
daily_on = bool(app_config.get_value(db, "withdraw_auto_reconcile_enabled"))
auto_reconcile_enabled = worker_running and daily_on
if not worker_running:
issues.append("自动对账 worker 未启动(部署侧 env WITHDRAW_AUTO_RECONCILE_ENABLED=false)")
elif not daily_on:
issues.append("自动对账运营开关已关闭(系统配置页可开)")
return WxpayHealthCheckOut(
ok=not issues,