Refactor: Align system with gateway_users architecture

- Fixed database relationships: LlmRequest now properly uses gateway_user_id instead of user_id
- Updated Models: GatewayUser and LlmRequest relationships corrected
- Removed User->llmRequests relationship (admin users don't have LLM requests)
- Simplified Dashboard: Now shows Gateway User statistics instead of admin users
- Removed obsolete Budgets management pages (budgets handled directly in gateway_users)
- Removed User Budgets admin section (redundant with gateway_users management)
- Fixed view errors: Added null-checks for user_id in keys views
- Updated navigation: Removed Budget and User Budget links
- Updated routes: Cleaned up unused BudgetController and UserManagementController routes
- Simplified StatisticsService: Focus on gateway_users and basic metrics only
This commit is contained in:
Wilfried Trinkl
2025-11-19 21:13:59 +01:00
parent cb495e18e3
commit 602fe582b0
16 changed files with 91 additions and 751 deletions

View File

@@ -52,6 +52,11 @@ class GatewayUser extends Model implements Authenticatable
return $this->hasMany(UsageLog::class, 'gateway_user_id', 'user_id');
}
public function llmRequests()
{
return $this->hasMany(LlmRequest::class, 'gateway_user_id', 'user_id');
}
// Scopes
public function scopeActive($query)
{

View File

@@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class LlmRequest extends Model
{
protected $fillable = [
'user_id',
'gateway_user_id',
'provider',
'model',
'request_payload',
@@ -41,9 +41,9 @@ class LlmRequest extends Model
'http_status' => 'integer',
];
public function user(): BelongsTo
public function gatewayUser(): BelongsTo
{
return $this->belongsTo(User::class);
return $this->belongsTo(GatewayUser::class, 'gateway_user_id', 'user_id');
}
public function isSuccess(): bool

View File

@@ -69,12 +69,4 @@ class User extends Authenticatable
{
return $this->hasMany(UserProviderCredential::class);
}
/**
* Get the user's LLM requests
*/
public function llmRequests()
{
return $this->hasMany(LlmRequest::class);
}
}