feat: 앱 버전 관리 페이지 구현

- AppVersion 모델, Service, Controller
- 버전 등록 폼 (APK 업로드, 강제 업데이트 설정)
- 버전 목록 테이블 (활성 토글, 다운로드 수, 삭제)
- /app-versions 라우트 추가
- app_releases 스토리지 디스크 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 19:53:09 +09:00
parent 275ad1d5ab
commit 78e67eb928
6 changed files with 360 additions and 0 deletions

View File

@@ -4,6 +4,7 @@
use App\Http\Controllers\ApiLogController;
use App\Http\Controllers\ArchivedRecordController;
use App\Http\Controllers\AuditLogController;
use App\Http\Controllers\AppVersionController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\BoardController;
use App\Http\Controllers\CategoryController;
@@ -319,6 +320,7 @@
Route::prefix('common-codes')->name('common-codes.')->group(function () {
Route::get('/', [CommonCodeController::class, 'index'])->name('index');
Route::post('/', [CommonCodeController::class, 'store'])->name('store');
Route::post('/store-group', [CommonCodeController::class, 'storeGroup'])->name('store-group');
Route::post('/bulk-copy', [CommonCodeController::class, 'bulkCopy'])->name('bulk-copy');
Route::post('/bulk-promote', [CommonCodeController::class, 'bulkPromoteToGlobal'])->name('bulk-promote');
Route::put('/{id}', [CommonCodeController::class, 'update'])->name('update');
@@ -350,6 +352,14 @@
Route::get('/{id}/edit', [DocumentController::class, 'edit'])->whereNumber('id')->name('edit');
});
// 앱 버전 관리
Route::prefix('app-versions')->name('app-versions.')->group(function () {
Route::get('/', [AppVersionController::class, 'index'])->name('index');
Route::post('/', [AppVersionController::class, 'store'])->name('store');
Route::post('/{id}/toggle', [AppVersionController::class, 'toggleActive'])->name('toggle');
Route::delete('/{id}', [AppVersionController::class, 'destroy'])->name('destroy');
});
// AI 설정 관리
Route::prefix('system/ai-config')->name('system.ai-config.')->group(function () {
Route::get('/', [AiConfigController::class, 'index'])->name('index');
@@ -367,6 +377,7 @@
// 카테고리 관리
Route::prefix('categories')->name('categories.')->group(function () {
Route::get('/', [CategoryController::class, 'index'])->name('index');
Route::post('/store-group', [CategoryController::class, 'storeGroup'])->name('store-group');
// 카테고리 동기화
Route::prefix('sync')->name('sync.')->group(function () {