d038f11444
문서 상세 페이지에서 canonical markdown(md_content) 을 우선 렌더하고
없으면 extracted_text fallback. md_frontmatter 가 있으면 본문 위에 메타
박스. h1~h6 에 GFM heading id + hover 시 # 링크 표시. 이미지 alt 가
있으면 figure + figcaption. KaTeX 수식 ($...$ / $$...$$) 지원.
Backend:
- DocumentDetailResponse 신규 (DocumentResponse + extracted_text + md_*)
- GET /documents/{doc_id} 응답 모델 전환
- 리스트 응답은 DocumentResponse 그대로 (페이로드 비대화 회피)
Frontend:
- lib/utils/docMarkdown.ts — 별도 Marked 인스턴스 (study mathMarkdown.ts
영향 0). marked-katex-extension + marked-gfm-heading-id + custom image
renderer (figure/figcaption + data-md-img marker).
- lib/components/MarkdownDoc.svelte — md_content/extracted_text 우선순위,
frontmatter 박스, mdStatus=failed 안내 배지, heading anchor DOM 후처리.
- /documents/[id] markdown / hwp-markdown / article viewer 3 곳 wiring.
- app.css — .markdown-doc heading-anchor / md-figure / katex 가로 스크롤.
이미지 ImgAuth 후처리(blob URL 교체) wiring 은 Phase 1B.5 에서. 현재는
data-md-img="1" 마킹만 두고 marker 출력 src 그대로.
Plan: ~/.claude/plans/plan-idempotent-sundae.md (Phase 1C)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
717 B
JSON
30 lines
717 B
JSON
{
|
|
"name": "hyungi-document-server-frontend",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"lint:tokens": "bash ./scripts/check-tokens.sh"
|
|
},
|
|
"devDependencies": {
|
|
"@sveltejs/adapter-node": "^5.0.0",
|
|
"@sveltejs/kit": "^2.0.0",
|
|
"@tailwindcss/vite": "^4.0.0",
|
|
"svelte": "^5.0.0",
|
|
"tailwindcss": "^4.0.0",
|
|
"vite": "^8.0.0"
|
|
},
|
|
"dependencies": {
|
|
"dompurify": "^3.3.3",
|
|
"katex": "^0.16.45",
|
|
"lucide-svelte": "^0.400.0",
|
|
"marked": "^15.0.0",
|
|
"marked-gfm-heading-id": "^4.1.4",
|
|
"marked-katex-extension": "^5.1.8",
|
|
"perfect-freehand": "^1.2.3"
|
|
}
|
|
}
|