008ca9b5bd
#1 feed-reward 防刷(eCPM/时长由客户端上报,原本金额无上界): - rewards.calculate_ad_reward_coin 在唯一计算口把 eCPM 钳到 AD_ECPM_MAX_FEN (¥500 CPM),feed 与 reward_video 回退客户端 eCPM 的路径一并护住;阈值高于 所有真实值,不影响正规发奖。 - ad_feed_reward 单事件时长上限由 24h(8640 份)收紧为 FEED_MAX_DURATION_SECONDS =120s(12 份),挡伪造超长时长刷份数。叠加每日 500 条上限锁住日产出。 #2 prod 启动期强校验密钥(Settings._enforce_prod_secrets): - APP_ENV=prod 时 JWT_SECRET_KEY / ADMIN_JWT_SECRET 为默认值/空/长度<16 即 raise, 挡住 token 被伪造导致账号与后台失陷。INTERNAL_API_SECRET 默认空=端点关闭的安全 默认态,不强制。dev 不触发。 测试:tests/ 140 passed(3 个失败为既有的 compare/coupon 透传层问题,与本改动无关)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>