Extracted to own spec with mini-brainstorm decisions captured. F5 in dogfood-feedback.md marked 🚀 promoted with link. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
F5 Export Spec (Promoted)
Extracted from: 2026-04-25-dogfood-feedback.md F5
Plan: docs/superpowers/plans/2026-04-26-f5-export.md
Status: 🚀 promoted — implemented 2026-04-26
결정 (mini-brainstorm 결과)
| 결정 항목 | 값 | 근거 |
|---|---|---|
| 포맷 | one-file-per-note + frontmatter + index.jsonl + manifest.json + README | RAG 친화 + Obsidian 호환 |
| 미디어 포함 | 기본 ON, includeMedia 옵션화 | 사용자 선택 가능, dialog 에 평문 경고 |
| 삭제된 노트 | 현 시점 스냅샷만 | soft-delete 컬럼 없음 (slice 외 별 spec 후보) |
| provenance | 평탄 enum (title_source: 'ai'|'user') |
parser 호환성 우선 |
| embedding_text | raw_text 단독 | 가장 미가공, 사용자 별 가공 가능 |
| 파일명 | YYYY-MM-DD-{id8}-{slugified-ai_title}.md (export 시점 동결) |
가독 + 정렬, AI 제목 변경 시 새 파일명 (의도) |
| 트리거 | 트레이 메뉴 "내보내기..." 만 | 슬라이스 외부 dep 없이 |
| version | inkling_export_version: 1 |
첫 출시, 향후 변경 시 manifest 로 식별 |
| 경고 | dialog 에 raw_text 평문 + 비공개 위치 권장 명시 | 슬라이스 §1.1 보안 톤 |
범위 (PR 안에 포함됨)
src/main/services/exportFormat.ts(pure: slugify, composeFilename, composeFrontmatter, composeMarkdown, composeIndexJsonl, composeManifest)src/main/services/ExportService.ts(orchestrator)src/main/repository/NoteRepository.ts수정 —listAll()신규 (asc 순)src/main/services/MediaStore.ts수정 —absolutePath()신규src/main/index.ts수정 — ExportService instantiate + dialog import + 4th tray callbacksrc/main/tray.ts수정 — 4번째 callbackrunExport+ "내보내기..." 메뉴tests/unit/exportFormat.test.ts(26 단위 테스트)tests/unit/ExportService.test.ts(6 단위 테스트)
출력 트리
<targetDir>/
├── notes/
│ └── 2026-04-25-014a3b9c-주간-회고.md
├── media/
│ └── 014a3b9c__1.png
├── index.jsonl
├── manifest.json
└── README.md
후속 (별 spec 또는 후속 항목 후보)
- 증분 export (변경된 노트만)
- watch 모드 (자동 동기화)
- CLI 플래그 (
--export <dir>) - 다중 형식 (CSV, 단일 JSON, OPML)
- 외부 SaaS 동기화 (Confluence, Notion)
- export 시 raw_text 마스킹/익명화 옵션
- Importer (F6-L3 가 자매 항목)
- embedding_text 합성 규칙 옵션화 (title+summary+raw_text 등)
- 파일명 안정성 옵션 (id-only naming 으로 AI 제목 변경 영향 0)