feat: Phase 6.2 팝업관리 API 구현

- popups 테이블 마이그레이션 생성
- Popup 모델 (BelongsToTenant, SoftDeletes)
- PopupService CRUD 구현
- FormRequest 검증 (Store/Update)
- PopupController 6개 엔드포인트
- Swagger 문서 (PopupApi.php)
- PROJECT_DEVELOPMENT_POLICY.md 정책 준수
This commit is contained in:
2025-12-19 16:14:04 +09:00
parent ac551d2c30
commit 8f1292f7c4
10 changed files with 926 additions and 2 deletions

View File

@@ -1846,4 +1846,64 @@ ### 주요 작업
- 계층 구조 및 필드 관리 테스트
- Validation 로직 개선
---
---
## 2025-12-19 (목) - Phase 6.2 팝업관리 API 구현
### 주요 작업
- Phase 6.2 팝업관리 기능 구현 완료
- PROJECT_DEVELOPMENT_POLICY.md 정책 준수 (string 타입, options JSON 가변 컬럼)
### 추가된 파일
**마이그레이션:**
- `database/migrations/2025_12_19_170001_create_popups_table.php`
**모델:**
- `app/Models/Popups/Popup.php`
- BelongsToTenant, SoftDeletes 적용
- target_type: all(전사), department(부서)
- status: active(사용), inactive(사용안함)
- 스코프: active(), status(), targetType(), forUser()
- 관계: department(), creator(), updater()
**서비스:**
- `app/Services/PopupService.php`
- index(): 관리자용 목록 (페이지네이션)
- getActivePopups(): 사용자용 활성 팝업
- show(): 상세 조회
- store(): 등록
- update(): 수정
- destroy(): 삭제 (Soft Delete)
**FormRequest:**
- `app/Http/Requests/V1/Popup/StorePopupRequest.php`
- `app/Http/Requests/V1/Popup/UpdatePopupRequest.php`
**컨트롤러:**
- `app/Http/Controllers/Api/V1/PopupController.php`
**Swagger:**
- `app/Swagger/v1/PopupApi.php`
### 수정된 파일
- `routes/api.php`: Popup 라우트 추가 (6개 엔드포인트)
### API 엔드포인트 (6개)
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/v1/popups | 팝업 목록 (관리자용) |
| POST | /api/v1/popups | 팝업 등록 |
| GET | /api/v1/popups/active | 활성 팝업 (사용자용) |
| GET | /api/v1/popups/{id} | 팝업 상세 |
| PUT | /api/v1/popups/{id} | 팝업 수정 |
| DELETE | /api/v1/popups/{id} | 팝업 삭제 |
### 정책 준수 사항
- ✅ 기존 테이블 확인 후 신규 생성
- ✅ string 타입 사용 (enum 대신)
- ✅ options JSON 가변 컬럼
- ✅ BelongsToTenant, SoftDeletes 적용
- ✅ Service-First 아키텍처
- ✅ FormRequest 검증
---