본문으로 건너뛰기

2026-04-23

ADR 0016 — apps/docs 구조 재편 · audience 분리

결정문

apps/docs2 sidebar + 2 navbar 탭 구조 로 분리해 외부 공개(변호사·사무장·Chair·투자자) 와 내부 엔지니어링(개발자·ADR·ideations) 관객 경계를 명시화한다. stale 3문서를 content/ 에서 완전 삭제하고, landing 을 mdx + <RoleCard> × 4 로 재설계한다. broken link 241개를 일괄 수정하고 onBrokenLinks: "throw" 로 승격해 CI/pre-push 차단을 활성화한다.

CLAUDE.md 는 내부 agent·개발자 SSoT, apps/docs 는 외부 공개 SSoT 로 역할을 분리하고, 중복된 주제는 한 쪽만 원본·다른 쪽은 1줄 상호 참조로 유지한다.

배경

Chair 피드백 (2026-04-23): "문서 페이지 정리 안 됨. 어디부터 봐야 할지 모르겠음. 모바일 탭 이용도 안 됨. 전체 정리가 필요."

직전 PR #539 가 landing 에 역할별 테이블을 추가했으나 근본 구조는 그대로. R1 5인 독립 수집 결과:

  • P5 실측 broken link 241개 (72 source pages)onBrokenLinks: "warn" 으로 빌드 green 유지 중
  • P3 stale 3문서 (plan-system · promotion-code · ops-console-plan) 외부 surface 여전 노출
  • P1 overview.md 420줄 변호사·투자자·보안 모두 혼재 → 파일럿 후보 3분 이탈 위험
  • P4 navbar 항목 유형 4종 혼재 (docSidebar × 2 + to + href) — 모바일 햄버거 UX 근본 문제
  • P2 사무장 전용 진입 경로 부재 — features 6건 중 1건만 사무장 관점

상세: ideations/015.

대안 검토

A — 한 사이드바 유지 + 카테고리 prefix 로 구분 (P1 R1 원안)

product / architecture / development / operations 를 "👥 공개 / 🔧 엔지니어링" prefix 로 구분. 기각: 모바일 햄버거 평탄 나열 문제 미해소. 독자가 자기 섹션만 보는 경로 차단 부족.

B — /internal/ 서브도메인 분리 (P4 R1 원안)

docs-pro.neohollo.com / internal.docs-pro.neohollo.com 2 도메인. 기각: DNS·빌드·auth 복잡도 과도. 단일 파일럿 규모에 오버엔지니어링.

C — Notion 이관 (P3 R1 원안)

ADR·ideations 를 Notion 으로 외부 이관. 기각: SSoT 3중화 (CLAUDE.md + apps/docs + Notion) → drift 확대. 운영 비용 ↑.

D — content/ 전체 삭제 후 재작성 (검토 없음)

기존 자산 손실. 기각.

E — 2 sidebar + 2 navbar 탭 · 단일 도메인 (R2 수렴안)

Docusaurus 기본 sidebars.tspublicDocs · engineeringDocs 2개 선언 + navbar 탭 2개로 분리. 같은 도메인 유지로 링크 그래프·배포·검색 인덱스 일관. 채택.

결정 + 근거

3대 원칙

  1. Audience 분리: public (변호사·사무장·Chair·투자자) ↔ engineering (개발자·ADR·ideations) 경계 명시. 모바일 햄버거에서 자기 섹션만 보이게.
  2. stale 완전 제거: ADR 0002 이전 tier·가격 문서는 content/ 에서 삭제. 배너·레거시 라벨은 심리적 모면책 (P3). git history 로 충분.
  3. SSoT 역할 분리: CLAUDE.md = 내부 코드·제약 SSoT. apps/docs = 외부 공개 정책·사용법 SSoT. 중복 제거 + 상호 참조 1줄.

신규 구조

navbar (상단)

[사용자 가이드] [엔지니어링] [업데이트 로그] [GitHub]

publicDocs sidebar (사용자 가이드 탭)

🏠 홈
📦 Pack 1 대여금 회수 (최상단 강조)
├─ 기능 정의서
└─ 화면 설계서
📋 제품
├─ 개요
├─ 로드맵
├─ 사무실 기억
└─ 의뢰인 포털
🎯 운영·Chair
├─ 환경변수
└─ 파일럿 runbook
📖 용어집

engineeringDocs sidebar (엔지니어링 탭)

🏗️ 아키텍처
├─ 개요
├─ 데이터 모델
├─ AI 파이프라인
├─ tenant 격리
└─ (전체 architecture/*)
🛠️ 개발
├─ 온보딩
├─ 테스트
├─ 배포·릴리스
├─ Git·PR 컨벤션
└─ 보안 체크리스트
📐 ADR (Decisions)
└─ 0001~0016
💡 아이디어 회의 (ideations)
└─ 001~015
🔬 감사·audit
├─ 사건 상세 audit
└─ 서류 생성 audit

기본 상태: landing 진입 시 publicDocs 가 활성. engineeringDocs 는 탭 클릭해야 노출.

즉시 실행 (8항목 · PR 분할)

PR항목목표
AADR 0016 + ideations 015 발행결정 근거 기록 (본 PR)
B구조 재편sidebars.ts 2분리 · navbar 재편 · stale 3문서 삭제 · audit 2문서 이관 · H/M/L 치환
Clanding 재설계index.mdx + <RoleCard> × 4 · pitch.md (변호사 30초) 신규
D링크 정비 (별도 큰 PR)broken link 241 → 0 · onBrokenLinks: "throw" · pre-push hook 에 docs 빌드 추가

양보 불가 선

역할근거
P5broken link 241 → 0 + throw + CI 차단drift 누적 방지
P3stale 3문서 외부 surface 완전 제거독자 오판 실제 리스크
P1변호사 진입 경로에 엔지니어링 문서 교차 금지3분 이탈 방지
P4navbar item 유형 4종 혼재 제거모바일 UX 근본

Minority Report

P3 PM (초기 강한 입장, 양보)

"내부 문서 완전 분리 (Notion 이관 또는 password gate). 외부 공개 surface 에 내부 로그 섞이는 것 부적절." 처리: P5 반박 ("Notion 이관은 SSoT 3중화로 drift 확대") 수용. Docusaurus 2 sidebar 로 축소하되, engineering sidebar 는 기본 collapsed + landing 미노출로 절충.

P4 디자이너 (초기 강한 입장, 기각)

"/internal/ 서브도메인 분리. 도메인 자체가 경계를 준다." 처리: DNS·빌드·auth·검색 인덱스 복잡도 과도. 2 sidebar 가 동등 효과 · 1/10 복잡도.

P1 변호사 (초기 보수적, 양보)

"stale 문서는 배너 + 레거시 라벨 로 파일 보존. 삭제는 과도." 처리: P3 "심리적 모면책" 반박 수용. git history 로 충분, content/ 삭제 수용.

P5 개발자 (초기 기술적 제안, 대체)

"CLAUDE.md 를 remark plugin 으로 apps/docs 에 build-time include." 처리: Docusaurus 파서·캐시 충돌 우려. 역할 분리 + 상호 참조로 대체 (구현 복잡도 ↓).

성공 지표

  • Docusaurus 빌드 broken link 241 → 0 (PR D 완료 시점)
  • onBrokenLinks: "throw" 활성 후 3주 내 broken link 재발 0건
  • 파일럿 변호사 first-visit 체류 시간 (Chair 관찰 지표, 정량 측정 어려움)
  • stale 문서 외부 surface 0건
  • 모바일 햄버거 탭 사용 가능 (사용자 피드백 해소)

후속 과제

  • PR B: 구조 재편 (이번 세션)
  • PR C: landing mdx + pitch.md (이번 세션)
  • PR D: broken link 일괄 수정 + throw 전환 (별도 세션, 큰 작업)
  • paralegal quickstart (/quickstart/paralegal 신규 5분 튜토리얼) — 파일럿 유치 전 (3주 내)
  • ADR 번호 결번 (0008 · 0009 · 0013) 정리
  • changelog author 미정의 40+ 수정
  • CLAUDE.md 상단에 "apps/docs 와의 역할 분리" 명시 업데이트