feat(API): Position API 추가 (직급/직책 통합)

- Position 모델 생성 (type: rank | title)
- PositionService: CRUD + reorder 구현
- PositionController: REST API 엔드포인트
- Swagger 문서 작성 (PositionApi.php)
- 마이그레이션: positions 테이블 + common_codes 등록
- routes/api.php에 라우트 등록

Phase L-3 (직급관리), L-4 (직책관리) 백엔드 완료

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-30 11:18:17 +09:00
parent bdb7460bfa
commit 75576323fe
9 changed files with 665 additions and 0 deletions

View File

@@ -73,6 +73,7 @@
use App\Http\Controllers\Api\V1\PermissionController;
use App\Http\Controllers\Api\V1\PlanController;
use App\Http\Controllers\Api\V1\PopupController;
use App\Http\Controllers\Api\V1\PositionController;
use App\Http\Controllers\Api\V1\PostController;
use App\Http\Controllers\Api\V1\PricingController;
use App\Http\Controllers\Api\V1\PurchaseController;
@@ -292,6 +293,16 @@
Route::delete('/{id}/permissions/{permission}', [DepartmentController::class, 'revokePermissions'])->name('v1.departments.permissions.revoke'); // 권한 제거(해당 메뉴 범위까지)
});
// Position API (직급/직책 통합 관리)
Route::prefix('positions')->group(function () {
Route::get('', [PositionController::class, 'index'])->name('v1.positions.index');
Route::post('', [PositionController::class, 'store'])->name('v1.positions.store');
Route::put('/reorder', [PositionController::class, 'reorder'])->name('v1.positions.reorder');
Route::get('/{id}', [PositionController::class, 'show'])->name('v1.positions.show');
Route::put('/{id}', [PositionController::class, 'update'])->name('v1.positions.update');
Route::delete('/{id}', [PositionController::class, 'destroy'])->name('v1.positions.destroy');
});
// Employee API (사원 관리)
Route::prefix('employees')->group(function () {
Route::get('', [EmployeeController::class, 'index'])->name('v1.employees.index');