ops_realtime_models.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package service
  2. import "time"
  3. // PlatformConcurrencyInfo aggregates concurrency usage by platform.
  4. type PlatformConcurrencyInfo struct {
  5. Platform string `json:"platform"`
  6. CurrentInUse int64 `json:"current_in_use"`
  7. MaxCapacity int64 `json:"max_capacity"`
  8. LoadPercentage float64 `json:"load_percentage"`
  9. WaitingInQueue int64 `json:"waiting_in_queue"`
  10. }
  11. // GroupConcurrencyInfo aggregates concurrency usage by group.
  12. //
  13. // Note: one account can belong to multiple groups; group totals are therefore not additive across groups.
  14. type GroupConcurrencyInfo struct {
  15. GroupID int64 `json:"group_id"`
  16. GroupName string `json:"group_name"`
  17. Platform string `json:"platform"`
  18. CurrentInUse int64 `json:"current_in_use"`
  19. MaxCapacity int64 `json:"max_capacity"`
  20. LoadPercentage float64 `json:"load_percentage"`
  21. WaitingInQueue int64 `json:"waiting_in_queue"`
  22. }
  23. // AccountConcurrencyInfo represents real-time concurrency usage for a single account.
  24. type AccountConcurrencyInfo struct {
  25. AccountID int64 `json:"account_id"`
  26. AccountName string `json:"account_name"`
  27. Platform string `json:"platform"`
  28. GroupID int64 `json:"group_id"`
  29. GroupName string `json:"group_name"`
  30. CurrentInUse int64 `json:"current_in_use"`
  31. MaxCapacity int64 `json:"max_capacity"`
  32. LoadPercentage float64 `json:"load_percentage"`
  33. WaitingInQueue int64 `json:"waiting_in_queue"`
  34. }
  35. // UserConcurrencyInfo represents real-time concurrency usage for a single user.
  36. type UserConcurrencyInfo struct {
  37. UserID int64 `json:"user_id"`
  38. UserEmail string `json:"user_email"`
  39. Username string `json:"username"`
  40. CurrentInUse int64 `json:"current_in_use"`
  41. MaxCapacity int64 `json:"max_capacity"`
  42. LoadPercentage float64 `json:"load_percentage"`
  43. WaitingInQueue int64 `json:"waiting_in_queue"`
  44. }
  45. // PlatformAvailability aggregates account availability by platform.
  46. type PlatformAvailability struct {
  47. Platform string `json:"platform"`
  48. TotalAccounts int64 `json:"total_accounts"`
  49. AvailableCount int64 `json:"available_count"`
  50. RateLimitCount int64 `json:"rate_limit_count"`
  51. ErrorCount int64 `json:"error_count"`
  52. }
  53. // GroupAvailability aggregates account availability by group.
  54. type GroupAvailability struct {
  55. GroupID int64 `json:"group_id"`
  56. GroupName string `json:"group_name"`
  57. Platform string `json:"platform"`
  58. TotalAccounts int64 `json:"total_accounts"`
  59. AvailableCount int64 `json:"available_count"`
  60. RateLimitCount int64 `json:"rate_limit_count"`
  61. ErrorCount int64 `json:"error_count"`
  62. }
  63. // AccountAvailability represents current availability for a single account.
  64. type AccountAvailability struct {
  65. AccountID int64 `json:"account_id"`
  66. AccountName string `json:"account_name"`
  67. Platform string `json:"platform"`
  68. GroupID int64 `json:"group_id"`
  69. GroupName string `json:"group_name"`
  70. Status string `json:"status"`
  71. IsAvailable bool `json:"is_available"`
  72. IsRateLimited bool `json:"is_rate_limited"`
  73. IsOverloaded bool `json:"is_overloaded"`
  74. HasError bool `json:"has_error"`
  75. RateLimitResetAt *time.Time `json:"rate_limit_reset_at"`
  76. RateLimitRemainingSec *int64 `json:"rate_limit_remaining_sec"`
  77. OverloadUntil *time.Time `json:"overload_until"`
  78. OverloadRemainingSec *int64 `json:"overload_remaining_sec"`
  79. ErrorMessage string `json:"error_message"`
  80. TempUnschedulableUntil *time.Time `json:"temp_unschedulable_until,omitempty"`
  81. }