관리자 미디어 라이브러리 기본 기능 추가

This commit is contained in:
2026-05-01 23:42:03 +09:00
parent 83ac51fd11
commit bc531f81db
15 changed files with 553 additions and 19 deletions

View File

@@ -148,6 +148,7 @@ docker run -d -p 3000:3000 sori.studio:latest
- `public/uploads/`는 Git에 포함하지 않는다.
- NAS 운영에서는 업로드 파일이 컨테이너 재생성으로 사라지지 않도록 별도 볼륨 연결을 확정해야 한다.
- `MAX_FILE_SIZE` 환경 변수로 관리자 이미지 업로드 최대 크기를 제한한다.
- 관리자 미디어 화면은 현재 업로드 파일 시스템을 기준으로 목록, 파일명 변경, 삭제를 처리한다.
## 사용자 액션 필요 항목

View File

@@ -1,5 +1,13 @@
# 의사결정 이력
## 2026-05-01 v0.0.15
### 미디어 라이브러리 1차 범위 결정
글쓰기 화면에서 이미지를 매번 로컬 업로드만 하는 흐름은 장기적으로 불편하므로, 먼저 업로드된 파일을 다시 선택할 수 있는 미디어 선택 창을 붙인다. 관리자 사이드바에는 미디어 메뉴를 추가하고, 업로드된 이미지 목록, 파일명 변경, 삭제를 1차 기능으로 제공한다.
미디어 데이터는 아직 별도 DB 테이블을 만들지 않고 `public/uploads` 아래 실제 파일 시스템을 기준으로 읽는다. 카테고리 분류와 이미지 사용처 추적은 파일만으로 안정적으로 관리하기 어렵기 때문에 이후 미디어 메타데이터 테이블을 만들 때 함께 확장한다.
## 2026-05-01 v0.0.14
### 이미지와 갤러리 블록 구현 범위 결정

View File

@@ -60,6 +60,7 @@
| pages/admin/posts/new.vue | 글 작성 |
| pages/admin/posts/[id].vue | 글 수정 |
| pages/admin/pages/index.vue | 페이지 목록 |
| pages/admin/media/index.vue | 미디어 관리 |
| pages/admin/tags/index.vue | 태그 관리 |
| pages/admin/tags/new.vue | 태그 생성 |
| pages/admin/tags/[id].vue | 태그 수정 |
@@ -91,6 +92,9 @@
| server/routes/admin/api/posts/[id].get.js | 관리자 게시물 상세 API |
| server/routes/admin/api/posts/[id].put.js | 관리자 게시물 수정 API |
| server/routes/admin/api/posts/[id].delete.js | 관리자 게시물 삭제 API |
| server/routes/admin/api/media.get.js | 관리자 미디어 목록 API |
| server/routes/admin/api/media.put.js | 관리자 미디어 파일명 변경 API |
| server/routes/admin/api/media.delete.js | 관리자 미디어 삭제 API |
| server/routes/admin/api/uploads.post.js | 관리자 이미지 업로드 API |
| server/routes/admin/api/tags.get.js | 관리자 태그 목록 API |
| server/routes/admin/api/tags.post.js | 관리자 태그 생성 API |
@@ -102,6 +106,7 @@
| server/utils/admin-auth.js | 관리자 세션 쿠키 인증 유틸리티 |
| server/utils/admin-post-input.js | 관리자 게시물 입력값 검증 스키마 |
| server/utils/admin-tag-input.js | 관리자 태그 입력값 검증 스키마 |
| server/utils/media-library.js | 업로드 미디어 파일 관리 유틸리티 |
| server/repositories/postgres-client.js | PostgreSQL 클라이언트 |
| server/repositories/content-repository.js | 콘텐츠 조회 저장소 |

View File

@@ -188,6 +188,9 @@ components/content/
- `GET /admin/api/posts/:id` - 글 상세
- `PUT /admin/api/posts/:id` - 글 수정
- `DELETE /admin/api/posts/:id` - 글 삭제
- `GET /admin/api/media` - 업로드 미디어 목록
- `PUT /admin/api/media` - 업로드 미디어 파일명 변경
- `DELETE /admin/api/media` - 업로드 미디어 삭제
- `POST /admin/api/uploads` - 관리자 이미지 업로드
- `GET /admin/api/tags` - 태그 목록
- `POST /admin/api/tags` - 태그 생성
@@ -220,7 +223,7 @@ components/content/
- 이미지 블록 표시 옵션은 `regular`, `wide`, `full` 값을 사용하며 `regular`는 width 옵션을 생략한다.
- 갤러리 블록은 `:::gallery` fenced block 안에 이미지 마크다운 행을 여러 개 저장한다.
- 공개 갤러리는 한 줄에 2~3개 이미지 그리드로 표시하고 클릭 시 라이트박스로 크게 확인한다.
- 현재 글쓰기 화면은 새 이미지 업로드를 우선 지원하며, 기존 업로드 미디어 선택은 미디어 라이브러리 구현 시 추가한다.
- 이미지와 갤러리 블록은 기존 업로드 미디어 선택 또는 새 이미지 업로드를 제공한다.
### 관리자 인증
@@ -245,7 +248,9 @@ components/content/
- 관리자 이미지 업로드 API는 `image/jpeg`, `image/png`, `image/webp`, `image/gif`만 허용한다.
- 업로드 파일 크기 제한은 `MAX_FILE_SIZE` 환경 변수를 따른다.
- 로컬 개발 업로드 파일은 `public/uploads/posts/YYYY/MM/` 아래 저장하고 `/uploads/posts/YYYY/MM/filename` URL로 제공한다.
- 향후 미디어 라이브러리는 업로드 이미지 목록, 기존 미디어 선택, 파일명 변경, 개별 삭제, 카테고리 분류를 제공한다.
- 관리자 미디어 화면은 업로드 이미지 목록, 검색, 파일명 변경, 개별 삭제를 제공한다.
- 글쓰기 미디어 선택 창은 업로드 미디어 목록에서 이미지를 선택해 단일 이미지 또는 갤러리에 삽입한다.
- 향후 미디어 라이브러리는 카테고리 분류와 이미지 사용처 추적을 제공한다.
---

View File

@@ -5,7 +5,7 @@
- [ ] 블록 에디터 브라우저 수동 QA: 빈 줄 Enter, `/` 메뉴 필터, 방향키, Enter 선택, 한글 조합 입력 확인
- [ ] 블록 에디터 저장/수정 왕복 QA: 기존 글 수정 시 블록 파싱, 저장 후 다시 열기 확인
- [ ] 이미지/갤러리 블록 브라우저 수동 QA: 업로드, 너비 옵션, 저장 후 공개 렌더링, 갤러리 라이트박스 확인
- [ ] 게시물 작성 시 기존 미디어 선택 또는 새 미디어 업로드 선택 흐름 추가
- [ ] 미디어 선택 창 브라우저 수동 QA: 기존 이미지 선택, 갤러리 추가, 빈 미디어 상태 확인
- [ ] 콜아웃, 토글, 임베드 블록 추가
- [ ] 글 작성 중 자동 저장
@@ -14,7 +14,8 @@
- [ ] 페이지 관리 (CRUD)
- [ ] 사이트 설정
- [ ] 메뉴/네비게이션 관리
- [ ] 미디어 라이브러리: 업로드 이미지 목록, 검색, 선택, 파일명 변경, 개별 삭제, 카테고리 분류
- [ ] 미디어 라이브러리 카테고리 분류
- [ ] 미디어 라이브러리 이미지 사용처 추적
## 3차 관리자 개발

View File

@@ -1,5 +1,16 @@
# 업데이트 이력
## v0.0.15
- 관리자 블록 에디터 `/` 메뉴 항목 제목 색상을 진한 본문색으로 수정.
- 관리자 미디어 목록 API 추가.
- 관리자 미디어 파일명 변경 API 추가.
- 관리자 미디어 삭제 API 추가.
- 관리자 미디어 관리 화면 추가.
- 관리자 사이드바에 미디어 메뉴 추가.
- 글쓰기 이미지/갤러리 블록에서 기존 업로드 미디어 선택 기능 추가.
- 패키지 버전을 0.0.15로 갱신.
## v0.0.14
- 관리자 블록 에디터에 단일 이미지 블록 추가.