게시물 백업 번들 방향 정리 v1.5.18
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
# 업데이트 요약
|
||||
|
||||
## v1.5.18
|
||||
|
||||
- 게시물 Import/Export 방향을 URL 유지 방식이 아니라 게시물별 폴더와 로컬 이미지·파일 폴더를 포함하는 백업 번들 구조로 정정했다.
|
||||
|
||||
## v1.5.17
|
||||
|
||||
- 사이트 설정 읽기 모드의 토글이 켜져 있어도 편집 전에는 조작 불가 상태처럼 보이도록 시각 톤을 낮췄다.
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
# 의사결정 이력
|
||||
|
||||
## 2026-06-01 v1.5.18 — 게시물 백업은 URL이 아닌 로컬 자산 번들
|
||||
|
||||
게시물 Export는 다른 도구로 읽는 이동성뿐 아니라, 원본 서버나 `/uploads` URL이 사라져도 복원 가능한 백업이어야 한다. 따라서 Markdown 본문이 기존 URL을 그대로 참조하는 방식은 백업 요구에 맞지 않다. 게시물마다 폴더를 만들고 `제목.md`와 함께 `images/`, `files/`에 내부 자산을 복사하며, Markdown 안의 내부 업로드 URL은 상대 경로로 재작성한다. Import는 이 구조를 역으로 읽어 자산을 미디어 저장소에 다시 올리고 본문 경로를 새 업로드 URL로 매핑한다.
|
||||
|
||||
## 2026-06-01 v1.5.17 — 설정 토글 읽기 상태와 게시물 이동 포맷
|
||||
|
||||
사이트 설정 카드는 `편집`을 누르기 전에는 읽기 전용이다. 토글이 ON인 경우에도 일반 활성 스위치와 같은 검정 톤이면 조작 가능한 컨트롤처럼 보이므로, 읽기 모드 토글은 낮은 대비와 비활성 커서를 사용해 현재 값은 보여 주되 편집 전에는 조작할 수 없음을 드러낸다.
|
||||
|
||||
게시물 Import/Export는 Obsidian 로컬 보관과 재가져오기를 함께 고려해야 하므로, 1차 포맷은 HTML이나 JSON보다 범용성이 높은 Markdown 파일로 둔다. 제목·태그·상태·발행일·대표 이미지·SEO 같은 CMS 메타데이터는 YAML frontmatter에 넣고, 본문은 기존 Markdown을 최대한 그대로 유지한다. 업로드 자산은 우선 URL을 유지하고, 별도 파일까지 가져가야 하는 단계에서 zip 번들을 추가한다.
|
||||
게시물 Import/Export는 Obsidian 로컬 보관과 재가져오기를 함께 고려해야 하므로, 1차 포맷은 HTML이나 JSON보다 범용성이 높은 Markdown 파일로 둔다. 제목·태그·상태·발행일·대표 이미지·SEO 같은 CMS 메타데이터는 YAML frontmatter에 넣고, 본문은 기존 Markdown을 최대한 그대로 유지한다. 자산 백업 기준은 v1.5.18에서 게시물별 로컬 번들 구조로 정정했다.
|
||||
|
||||
## 2026-06-01 v1.5.16 — TOC를 읽기 위치 표시 장치로 확장
|
||||
|
||||
|
||||
@@ -659,7 +659,7 @@ components/content/
|
||||
### 사이트 설정
|
||||
|
||||
- 관리자 사이트 설정 UI는 `/admin/settings`에서 제공한다. Ghost Admin과 유사하게 **전체 화면**으로 표시하며, 좌측 내비와 우측 본문을 **한 덩어리로 중앙 정렬**(`max-w` 래퍼, 본문 카드 영역은 약 760px 상한)하고, 페이지 배경은 밝은 회색·본문 열은 흰색으로 구분한다. 우측 본문을 스크롤하면 현재 보이는 구역에 맞춰 좌측 메뉴 활성 배경을 갱신한다. **우측 상단 고정** 닫기 버튼과 `Escape` 키로 설정 화면을 닫으며, 브라우저 히스토리가 있으면 `뒤로 가기`, 없으면 `/admin`으로 이동한다. 타임존·게시물 Import/Export는 현재 **메뉴·안내 카드만** 제공하고 저장 API는 연결하지 않는다. **스팸 필터**는 가입 금지 닉네임을 저장한다. **블로그 제목·설명** 카드는 기본적으로 사이트 이름·설명을 읽기 전용으로 보여 주고, `편집`을 눌렀을 때만 입력 필드·미리보기·저장/취소가 나타난다. 제목·설명 편집 중 `Escape`는 설정 닫기 대신 편집 취소로 동작한다. **POST 설정**·**어나운스 바**는 읽기 모드에서도 토글 UI를 비활성화 상태로 보여 주며, 켜짐 상태도 조작 가능한 활성 스위치처럼 보이지 않도록 낮은 대비와 `cursor-not-allowed`를 사용한다.
|
||||
- 게시물 Import/Export 1차 포맷은 Obsidian 호환 Markdown 파일을 기준으로 한다. 본문은 기존 Markdown을 그대로 유지하고, 제목·슬러그·상태·발행일·요약·대표 이미지·SEO·태그는 YAML frontmatter에 저장한다. 업로드 자산은 1차에서 현재 `/uploads/...` URL을 유지하고, 후속 단계에서 Markdown 파일과 자산을 함께 묶는 zip export/import를 검토한다.
|
||||
- 게시물 Import/Export 1차 포맷은 Obsidian 호환 백업 번들을 기준으로 한다. Export는 게시물마다 별도 폴더를 만들고, 폴더 안에 `제목.md` 메인 파일과 `images/`, `files/` 같은 자산 폴더를 함께 둔다. 본문은 기존 Markdown을 최대한 유지하되 `/uploads/...`로 연결된 내부 이미지·파일은 번들 안의 로컬 파일로 복사하고, Markdown 참조는 `./images/...` 또는 `./files/...` 같은 상대 경로로 재작성한다. 제목·슬러그·상태·발행일·요약·대표 이미지·SEO·태그는 YAML frontmatter에 저장한다. Import는 같은 구조의 폴더/zip을 읽어 frontmatter를 게시물 메타데이터로 복원하고, 로컬 자산은 미디어 업로드 저장소로 가져온 뒤 본문 경로를 새 `/uploads/...` URL로 다시 매핑한다.
|
||||
- 사이트 설정은 `site_settings` 테이블의 단일 레코드로 관리한다.
|
||||
- 관리자는 사이트 이름, 설명, 사이트 URL, 로고 이미지, 저작권 문구를 수정할 수 있다.
|
||||
- **메인 화면**(`home_cover_image_url`, `home_cover_dark_image_url`, `home_cover_title`, `home_cover_text`): 홈(`/`) 상단 720px 커버 배너. 라이트 이미지는 기본 커버이며, 다크 이미지가 있으면 시스템 다크모드 또는 `html[data-theme='dark']`에서 다크 이미지를 표시한다. 다크 이미지가 없으면 라이트 이미지를 그대로 사용한다. 이미지가 있을 때만 `HomeHero`를 표시하며, 제목·짧은 본문은 이미지 왼쪽 하단 그라데이션 오버레이로 겹친다. 오버레이 본문은 textarea에서 입력한 줄바꿈(`\n`)을 저장·표시하며, `HomeHero` 본문은 `whitespace-pre-line`으로 여러 줄을 렌더링한다. 관리자 UI에서는 커버 파일 업로드·제목·본문을 편집한 뒤 **저장** 한 번에 `PUT /admin/api/settings`로 반영한다. 읽기·편집 미리보기는 실제 `HomeHero` 컴포넌트를 사용해 긴 본문도 공개 화면과 같은 오버레이 폭(`max-w-[32rem]`)과 줄바꿈으로 확인한다. 파일 업로드 API는 디스크에만 올리고 URL을 돌려준다(가로 720px WebP, `/uploads/system/home-cover-YYYYMM-random.webp`).
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## 1차 관리자 개발
|
||||
|
||||
- [ ] 게시물 Import/Export 1차 구현: Obsidian 호환 Markdown frontmatter 포맷으로 내보내기·불러오기, 태그/상태/발행일/대표 이미지/SEO 필드 매핑, 이후 `/uploads` 자산 zip 번들 검토
|
||||
- [ ] 게시물 Import/Export 1차 구현: 게시물별 폴더(`제목/제목.md`)와 `images/`, `files/` 로컬 자산 폴더를 포함한 Obsidian 호환 zip 백업 번들, 태그/상태/발행일/대표 이미지/SEO frontmatter 매핑, export 시 내부 `/uploads` URL을 상대 경로로 재작성, import 시 로컬 자산을 미디어 저장소로 복원하고 본문 경로를 새 `/uploads` URL로 재매핑
|
||||
- [ ] Markdown-first 에디터 3차 개선: 미리보기 인라인 편집 확대(코드 블록·콜아웃·이미지 캡션·새 블록 추가), 옵시디언식 토큰 숨김 Live Preview, 표준 마크다운 파서 도입 검토
|
||||
|
||||
## 2차 관리자 개발
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# 업데이트 이력
|
||||
|
||||
## v1.5.18
|
||||
|
||||
- 게시물 Import/Export: 백업 목적에 맞게 게시물별 폴더와 로컬 자산 폴더를 포함하는 Obsidian 호환 번들 구조로 방향 수정.
|
||||
|
||||
## v1.5.17
|
||||
|
||||
- 관리자 사이트 설정: 읽기 모드의 POST·어나운스 토글을 켜진 상태여도 조작 불가로 보이도록 비활성 톤 강화.
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "sori.studio",
|
||||
"version": "1.5.17",
|
||||
"version": "1.5.18",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "sori.studio",
|
||||
"version": "1.5.17",
|
||||
"version": "1.5.18",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@nuxtjs/tailwindcss": "^6.14.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sori.studio",
|
||||
"version": "1.5.17",
|
||||
"version": "1.5.18",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"imports": {
|
||||
|
||||
Reference in New Issue
Block a user