메뉴 관리 기능 추가

This commit is contained in:
2026-05-02 16:45:52 +09:00
parent 27cf05aba6
commit 04b8a7006a
18 changed files with 497 additions and 37 deletions

View File

@@ -166,6 +166,19 @@ components/content/
| copyright_text | String | 저작권 문구 |
| updated_at | DateTime | 수정일 |
### NavigationItems
| 필드 | 타입 | 설명 |
|------|------|------|
| id | UUID | Primary Key |
| label | String | 메뉴 표시 이름 |
| url | String | 내부 경로 또는 외부 URL |
| location | Enum | primary/footer |
| sort_order | Integer | 표시 순서 |
| is_visible | Boolean | 공개 화면 표시 여부 |
| created_at | DateTime | 생성일 |
| updated_at | DateTime | 수정일 |
### PostTags (다대다)
| 필드 | 타입 | 설명 |
@@ -198,6 +211,7 @@ components/content/
- `GET /api/pages/:slug` - 고정 페이지 상세
- `GET /api/tags` - 태그 목록
- `GET /api/site-settings` - 공개 사이트 설정
- `GET /api/navigation` - 공개 네비게이션
### 관리자 API (`/admin/api/`)
@@ -225,6 +239,8 @@ components/content/
- `DELETE /admin/api/tags/:id` - 태그 삭제
- `GET /admin/api/settings` - 사이트 설정 조회
- `PUT /admin/api/settings` - 사이트 설정 수정
- `GET /admin/api/navigation` - 네비게이션 항목 목록
- `PUT /admin/api/navigation` - 네비게이션 항목 일괄 저장
> 글 발행/초안/비공개 전환은 현재 `PUT /admin/api/posts/:id`의 `status` 값으로 처리한다.
> 태그 삭제 시 `post_tags` 연결도 데이터베이스 외래 키 규칙에 따라 함께 삭제된다.
@@ -284,6 +300,14 @@ components/content/
- 공개 헤더와 오른쪽 사이드바는 공개 사이트 설정 API 값을 사용한다.
- DB 연결이 없는 환경에서는 환경 변수와 기본값 기반 설정을 사용한다.
### 메뉴/네비게이션
- 네비게이션은 `navigation_items` 테이블로 관리한다.
- 관리자는 메뉴 라벨, URL, 위치, 순서, 표시 여부를 수정할 수 있다.
- 공개 왼쪽 사이드바의 상단 메뉴는 `primary` 위치 항목을 사용한다.
- 공개 왼쪽 사이드바 하단 메뉴는 `footer` 위치 항목을 사용한다.
- URL은 `/`로 시작하는 내부 경로 또는 `http://`, `https://` 외부 URL을 허용한다.
### 관리자 인증
- 초기 관리자 인증은 `ADMIN_EMAIL`, `ADMIN_PASSWORD` 환경 변수를 사용