fix: 配额系统添加 pro 套餐并支持未知套餐 fallback 到 free #1262
Reference in New Issue
Block a user
Delete Branch "fix/quota-pro-tier-fallback"
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?
问题
用户 subscription_plan="pro" 时,QUOTA_TIERS 只有 free/basic/premium,导致 get_tier("pro") 返回 None,所有配额 limit=0,创建标题等操作被 429 拦截。
修复
packages/domain/quota.py
get_tier()方法对未知套餐 fallback 到 free 而非返回 None,防止未来再有类似问题get_limit()方法同步更新 fallback 逻辑测试更新
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[tests/unit/domain/test_quota.py: 384] 测试断言完整性
test_list_tiers方法中,移除了assert "premium" in tiers的显式检查。虽然通过assert len(tiers) == 4和检查其他三个套餐可以间接推断premium存在,但保留显式检查能更清晰地表达测试意图,防止未来代码变更导致套餐名称拼写错误但数量巧合一致的情况。建议参考tests/unit/test_quota_domain.py中的写法,保留premium的显式断言。[tests/unit/domain/test_quota.py: 389] 测试注释与断言不一致
test_get_limit_nonexistent_plan方法的注释更新为“不存在的套餐 fallback 到 free 配额”,但断言依然是assert reg.get_limit(...) == 0。根据另一个测试文件tests/unit/test_quota.py中的行为(test_check_unknown_plan期望 limit 为 0),实际逻辑应为返回 0 而非 free 配额(free 配额为 2GB)。建议将注释修正为“不存在的套餐返回 0”或确认代码逻辑是否真的发生了变更。✅ 良好实践
QUOTA_TIERS["pro"] = QUOTA_TIERS["premium"]来实现完全一致的配额逻辑,避免了数据重复维护,符合 DRY 原则。TestProTier测试类,专门针对pro套餐进行了存在性、一致性和具体维度的测试,覆盖充分。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-07 07:15:11 | 模型:
🗑️ 预览环境已清理
PR #1262 已关闭或合并,对应的预览环境已被清理。