group(function () { // Autenticación Route::post('/logout', [AuthController::class, 'logout']); Route::get('/user', [AuthController::class, 'user']); // Giros (público para selects) Route::get('/giros', [GiroController::class, 'activos']); // Clientes Route::apiResource('clientes', ClienteController::class); // Balanzas (anidadas bajo clientes) Route::get('/clientes/{cliente}/balanzas', [BalanzaController::class, 'index']); Route::post('/clientes/{cliente}/balanzas', [BalanzaController::class, 'store']); Route::get('/balanzas/{balanza}', [BalanzaController::class, 'show']); Route::get('/balanzas/{balanza}/cuentas', [BalanzaController::class, 'cuentas']); Route::put('/balanzas/{balanza}/exclusiones', [BalanzaController::class, 'updateExclusiones']); // Cuentas Route::put('/cuentas/{cuenta}/clasificacion', [CuentaController::class, 'updateClasificacion']); Route::post('/cuentas/{cuenta}/toggle-exclusion', [CuentaController::class, 'toggleExclusion']); Route::get('/anomalias', [CuentaController::class, 'anomalias']); // Reportes Route::get('/clientes/{cliente}/reportes', [ReporteController::class, 'index']); Route::post('/clientes/{cliente}/reportes', [ReporteController::class, 'store']); Route::get('/reportes/{reporte}', [ReporteController::class, 'show']); Route::get('/reportes/{reporte}/pdf', [ReporteController::class, 'pdf']); Route::delete('/reportes/{reporte}', [ReporteController::class, 'destroy']); // Rutas de administración (solo admin) Route::middleware('role:admin')->prefix('admin')->group(function () { // Usuarios Route::apiResource('usuarios', UsuarioController::class); // Giros (CRUD completo) Route::apiResource('giros', GiroController::class); // Umbrales Route::apiResource('umbrales', UmbralController::class); Route::get('/umbrales/metrica/{metrica}/{giro_id?}', [UmbralController::class, 'porMetrica']); // Reglas de mapeo Route::apiResource('reglas-mapeo', ReglaMapeeoController::class); // Registrar usuarios (solo admin) Route::post('/register', [AuthController::class, 'register']); }); });