功能:统一限制策略与白名单管理 #207
Reference in New Issue
Block a user
Delete Branch "codex/limit-policy-whitelist"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
需求背景
将比价、短信与登录、广告、引导与账号、风控免告警等限制统一配置,并支持按手机号或设备设置有有效期的临时白名单。
主要改动
验证
配套前端 PR:WonderableAI/shaguabijia-admin-web#99
🤖 review-pr 深审结论
🟡 需关注(置信度 0.82)—— 核心框架健壮、迁移单 head、50 核心测试过、零回归;但强烈建议先协调 #204/#205 合并顺序(同文件交叉),且 codex 5040 行建议人工复核业务语义。
改动:统一限制策略框架(
limit_policy.py629 行 / 16 规则注册表)+ 白名单管理(模型·迁移·repo·router·schema)+ 接入 8 条调用链 + 2 个 alembic 迁移。核心框架核对(limit_policy.py)
RuleDefinition注册表;resolve全局+override,device>phone 优先级;有效期_aware时区安全;set_global_limitswith_for_update原子更新 + 清理旧稀疏行防双真值源;legacy 平滑兼容;白名单仅unlimited/suppress_alert(不覆盖具体值);设备跨来源防误套;validate_override校验完备(临时白名单必设失效、失效>生效>now、免告警限 alert_only)。迁移:
guide_video_ten_circle_v2 → limit_policy_whitelist → limit_policy_global_bundle,alembic heads实跑 = 单 head ✓。测试(实跑 .venv 合并后)
test_limit_whitelist/admin_config/admin_roles/risk_monitor)⚠️ 并行 PR 交叉冲突(不阻塞但需协调)
sms/__init__.py(旧版无 fallback)与 #204 冲突;ad_reward/ad_feed_reward与 #205 交叉;auth.py与 #204 交叉。三个 open PR 基于不同 main 快照、互不含对方改动。sms/__init__.py既要 #204 fallback 又要 #207 限制接入;ad_reward既要 #205 floor 又要 #207 接入),rebase 后务必复跑测试。info
test_guide_video/test_invite_compare_reward/test_push_center等)——与本 PR 无关,建议另行清理。— 🤖 review-pr 自动深审 @linkeyu
🤖 review-pr 增量复审(
c674→085d)🟢 可合并 · 置信度 0.85(上轮 🟡 的「合并顺序冲突」已解决)—— 作者 merge 了 main(#204/#205),冲突解决正确、测试全过。
新提交:
085d610merge commit(同步 main 含已合并的 #204 sms fallback + #205 rewards floor)。#207 自身 limit 逻辑未变。核对
sms/__init__.py现兼具 #204 的 fallback(send_code→SendResult/ 503 转备 / verify try-both)+ #207 的 limit 接入(在 auth/ratelimit 层);无残留冲突。test_sms_fallback+sms_dispatch+sms_base+limit_whitelist+auth)——sms 容灾与统一限制共存无碍。剩余关注(info)
limit_policy_whitelist与 #208push_binding_isolation同 down_revision(guide_video_ten_circle_v2),两者谁后合并需 rebasedown_revision,否则 alembic 双 head。风险 🟢(合并冲突已清、测试全过;codex 语义复核 + 与 #208 迁移分叉留意)。
— 🤖 review-pr 自动深审 @linkeyu
🤖 review-pr 增量复审(
085d→fab4)🟡 需关注(置信度 0.8)—— 设备跨分类放开本身 OK,但 #208 已合入 main 导致 alembic 双 head,合并前须 rebase 迁移。
新提交:
fab49da「设备白名单支持跨分类配置」——删validate_device_rule_scope(禁止比价/短信登录设备限制混选的校验)+ router 3 处调用 + test +95。核对
validate_device_rule_scope无残留引用;device_source_scope仍被 repo 层(limit_whitelist.py:230)使用、非死代码。test_limit_whitelist24 passed(跨分类 + 既有)。device_source_scope注释原防「设备 ID 跨来源误套」);建议产品确认「同一设备同时配比价+短信白名单」的语义。🟡 alembic 双 head(部署阻塞,须先修)
push_binding_isolation迁移,down_revision=guide_video_ten_circle_v2)。limit_policy_whitelistdown_revision仍指guide_video_ten_circle_v2,与push_binding_isolation同 parent。alembic heads= 两个 head(limit_policy_global_bundle+push_binding_isolation)→alembic upgrade head会报 multiple heads、DB 迁移失败。limit_policy_whitelist的down_revision改为push_binding_isolation(串成单链),或加 alembic merge 迁移。风险 🟡(功能可上,但迁移双 head 必须合并前解决)。
— 🤖 review-pr 自动深审 @linkeyu