feat(allocation): implement resource allocation feature

- Add AllocationController with CRUD + bulk endpoints
- Add AllocationValidationService for capacity/estimate validation
- Add AllocationMatrixService for optimized matrix queries
- Add AllocationPolicy for authorization
- Add AllocationResource for API responses
- Add frontend allocationService and matrix UI
- Add E2E tests for allocation matrix (20 tests)
- Add unit tests for validation service and policies
- Fix month format conversion (YYYY-MM to YYYY-MM-01)
This commit is contained in:
2026-02-25 16:28:47 -05:00
parent fedfc21425
commit 3324c4f156
35 changed files with 3337 additions and 67 deletions

View File

@@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\Api\AllocationController;
use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\CapacityController;
use App\Http\Controllers\Api\HolidayController;
@@ -46,6 +47,7 @@ Route::middleware(JwtAuth::class)->group(function () {
Route::get('/capacity/team', [CapacityController::class, 'team']);
Route::get('/capacity/revenue', [CapacityController::class, 'revenue']);
Route::post('/capacity/availability', [CapacityController::class, 'saveAvailability']);
Route::post('/capacity/availability/batch', [CapacityController::class, 'batchUpdateAvailability']);
// Holidays
Route::get('/holidays', [HolidayController::class, 'index']);
@@ -57,4 +59,8 @@ Route::middleware(JwtAuth::class)->group(function () {
Route::post('/ptos', [PtoController::class, 'store']);
Route::delete('/ptos/{id}', [PtoController::class, 'destroy']);
Route::put('/ptos/{id}/approve', [PtoController::class, 'approve']);
// Allocations
Route::apiResource('allocations', AllocationController::class);
Route::post('/allocations/bulk', [AllocationController::class, 'bulkStore']);
});