user_rpm_cache.go 1.3 KB

12345678910111213141516171819202122232425
  1. package service
  2. import "context"
  3. // UserRPMCache 用户/分组级 RPM 计数器接口。
  4. //
  5. // 与账号级 RPMCache 的区别:
  6. // - RPMCache —— 按外部 AI provider 账号聚合(key: rpm:{accountID}:{min})。
  7. // - UserRPMCache —— 按用户或 (用户, 分组) 聚合,杜绝"同一用户创建多个 API Key 绕过 RPM"的路径。
  8. // key 形如 rpm:ug:{userID}:{groupID}:{min} 或 rpm:u:{userID}:{min}。
  9. type UserRPMCache interface {
  10. // IncrementUserGroupRPM 原子递增 (user, group) 级分钟计数并返回最新值。
  11. // 用于分组 rpm_limit 与 user-group rpm_override 两种命中分支。
  12. IncrementUserGroupRPM(ctx context.Context, userID, groupID int64) (count int, err error)
  13. // IncrementUserRPM 原子递增用户级分钟计数并返回最新值。
  14. // 用于用户全局 rpm_limit 兜底分支(分组未设且无 override 时)。
  15. IncrementUserRPM(ctx context.Context, userID int64) (count int, err error)
  16. // GetUserGroupRPM 获取 (user, group) 当前分钟已用 RPM(只读,不递增)。
  17. GetUserGroupRPM(ctx context.Context, userID, groupID int64) (count int, err error)
  18. // GetUserRPM 获取用户当前分钟已用 RPM(只读,不递增)。
  19. GetUserRPM(ctx context.Context, userID int64) (count int, err error)
  20. }