# 위키 문서 파이프라인 — 포맷 통일 규약 (v2.2.278) > **새 기능이 위키/지식 문서를 만들 때 반드시 이 문서를 따른다.** > 기능마다 포맷이 하나씩 새로 생기던 파편화(wikify ≠ meet ≠ email …)를 끊기 위한 규약. ## 구조 (2층) ``` [생성] buildKnowledgeWikiPrompt(src) ← 지식형 문서의 단일 프롬프트 빌더 │ (P-Reinforce 정본: frontmatter + 🎯/🧠/🧩/📖/🔗/📚 섹션) ▼ [저장] persistWikiDoc(title, content, { store, docType, sources }) │ ① 봉투: frontmatter 없으면 정본 봉투 자동 부착 (ensureFrontmatter) │ ② 위치: 설정 폴더 → 두뇌/<종류별 폴더> → 워크스페이스 (로컬 직접 저장) ▼ brain 검색 · 지식 그래프에 자동 편입 ``` 핵심 모듈: `src/features/datacollect/wikiFormat.ts` (정본 fetch·봉투·공용 빌더) · `wikiSave.ts` (저장). ## 새 기능 추가 시 딱 2가지 ### 1) 지식형 문서 (소스를 지식으로 합성 — wikify류) `KnowledgeSource` 하나 정의해서 공용 빌더 호출. **새 프롬프트 골격을 만들지 말 것.** ```ts import { buildKnowledgeWikiPrompt, getCanonicalFormat } from '../datacollect/wikiFormat'; const canonical = await getCanonicalFormat(); // 브리지 정본 (10분 캐시, 실패시 내장 사본) const prompt = buildKnowledgeWikiPrompt({ kind: 'slack', // 소스 종류 topic: '채널 논의 제목', body: transcript, // 근거 원문 (30,000자 컷은 빌더가) meta: { 채널: '#dev', 기간: '…' }, // [소스 메타] 표시 sourceRef: 'slack:#dev/2026-07-03', // [S1] 출처 + raw_sources extraRules: ['이 소스 종류만의 특수 규칙…'], // 번호는 빌더가 이어붙임 trustHint: '내부 교신이므로 A~B 로', // source_trust_level 평가 힌트 }, canonical); // → callLmSynthesis(prompt, WIKIFY_SYSTEM류) → persistWikiDoc(..., { docType: 'slack' }) ``` 기존 래퍼 예시: `wikifyPrompt.buildWikifyPrompt`(web) · `buildEmailCanonicalWikifyPrompt`(email) — 이 패턴을 복사할 것. ### 2) 보고서형 문서 (자기 본문 구조가 있는 산출물 — meet/benchmark/review류) 본문 구조는 자유. **저장만 반드시 `persistWikiDoc` + `docType`** — 봉투(frontmatter)가 자동 통일된다. ```ts import { persistWikiDoc, describeSave } from '../datacollect/wikiSave'; const saved = await persistWikiDoc(title, report, { docType: 'meeting', sources: [원본파일] }); chunk(view, describeSave(saved, '회의록')); ``` ## 금지 사항 - ❌ 자체 frontmatter 골격을 손으로 작성 (봉투는 `ensureFrontmatter`가 담당) - ❌ 브리지 `/api/wiki/template` 를 직접 fetch (→ `getCanonicalFormat()` 사용, 캐시 공유) - ❌ `bridgeFetch(wiki.save)` 직접 호출 (→ `persistWikiDoc` — 로컬 저장·폴더 규칙·폴백 포함) - ❌ 프롬프트에 섹션 구조 하드코딩 (정본 템플릿은 브리지 wiki_format.mjs 가 단일 소유) ## 현재 등록된 docType `wikify`(web) · `email` · `meeting` · `benchmark` · `youtube` · `review`