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

@@ -3,7 +3,7 @@
namespace App\Services;
use App\Models\LlmRequest;
use App\Models\User;
use App\Models\GatewayUser;
use App\Models\UserProviderCredential;
use Illuminate\Support\Facades\DB;
@@ -15,8 +15,9 @@ class StatisticsService
public function getDashboardStats(): array
{
return [
'total_users' => User::count(),
'active_credentials' => UserProviderCredential::where('is_active', true)->count(),
'total_gateway_users' => GatewayUser::count(),
'active_gateway_users' => GatewayUser::where('blocked', false)->count(),
'blocked_gateway_users' => GatewayUser::where('blocked', true)->count(),
'total_requests_today' => LlmRequest::whereDate('created_at', today())->count(),
'total_spend_today' => LlmRequest::whereDate('created_at', today())->sum('total_cost') ?? 0,
'total_tokens_today' => LlmRequest::whereDate('created_at', today())->sum('total_tokens') ?? 0,
@@ -73,11 +74,11 @@ class StatisticsService
}
/**
* Get top users by spend
* Get top gateway users by spend
*/
public function getTopUsers(int $limit = 10)
{
return User::select('users.*')
return GatewayUser::select('gateway_users.*')
->withCount('llmRequests')
->withSum('llmRequests as total_cost', 'total_cost')
->withSum('llmRequests as total_tokens', 'total_tokens')
@@ -91,18 +92,18 @@ class StatisticsService
*/
public function getRecentActivity(int $limit = 20)
{
return LlmRequest::with('user')
return LlmRequest::with('gatewayUser')
->orderByDesc('created_at')
->limit($limit)
->get();
}
/**
* Get user statistics
* Get gateway user statistics
*/
public function getUserStatistics(int $userId, int $days = 30)
public function getGatewayUserStatistics(string $gatewayUserId, int $days = 30)
{
return LlmRequest::where('user_id', $userId)
return LlmRequest::where('gateway_user_id', $gatewayUserId)
->where('created_at', '>=', now()->subDays($days))
->where('status', 'success')
->selectRaw('