본문으로 건너뛰기

013 — 한글 서식 export 라이브러리 선택

Tier: B · 상태: ADR 0012 Accepted

안건

ADR 0011 Phase 1 S1 착수 pre-req. 한글 서식 export 구현 시 hwp-js · docx-templates · pdfmake 중 선택.

R1 의견

P5 개발자 (docx-templates 추천)

7축 비교 (제출 가능성·한글워드 편집·CF 렌더·번들·폰트·유지보수·비용) 전 영역 우세.

  • hwp-js: OSS 정체 3년, DOM 의존 · CF 불가 · 1.2MB · 6~8 eng-day
  • docx-templates: .docx 표준 · CF Node pure JS · 280KB · 2.5 eng-day · 활성 유지보수
  • pdfmake: 편집 불가 (변호사 재작업) · 폰트 700KB+

4 PR 계획 제시 (render · Server Action · UI · 템플릿 업로드).

P1 변호사 (docx-only 거부 — 중대 반박)

  1. 전자소송 최종 = PDF 변환이나 작성 단계 95%+ 는 hwp
  2. docx → 한글 → hwp 경로: 표 정렬·세로쓰기·루비·줄간격 파손. 10~20분 재작업 + 재판장 "서식 미비" 지적 사례 존재
  3. PDF 편집 불가: "편집 흔적 있는 PDF" 는 법원이 진정성 의심. 변호사는 항상 hwp 원본 보관
  4. docx-only = 파일럿 2주 내 이탈 리스크. 최소 요구 "hwp 또는 hwpx 네이티브 생성". docx+PDF 동시도 마지노선

충돌 핵심

  • P5: 기술 합리성 (docx-templates 최적)
  • P1: 실무 현실 (hwp 없이 사용 불가)

R3 수렴 — 2단 배포 전략

S1 초 (4~5M)

docx-templates 기반 구현 (P5 원안 PR 1~3, 약 8.5 eng-day)

  • Cloud Function renderDocxTemplate + functions/src/docgen/render.ts
  • Server Action generate-docx.ts (weight 1, docGeneration 킬 스위치 재사용)
  • UI DocTemplatePicker + DocxPreviewDialog
  • PR 4 (관리자 템플릿 업로드) 는 선택

명시 경고 UI: "현재 .docx 전용입니다. 한글 서식 네이티브 지원은 S2 (7~10M) 에 추가 예정" — 파일럿에게 솔직 고지

S1 말S2 초 (68M)

한글 네이티브 경로 별도 회의 (tier=B) + 구현. 재조사 대상:

대안환경위험
libhwp (Python)별도 Cloud Run 컨테이너인프라 추가
officejs-hwp브라우저 전용서버 렌더 불가
hwp-js fork직접 유지보수장기 부담
LibreOffice headless 변환docker + soffice성능 · 폰트 embedding
상용 변환 API (한컴 API 등)SaaS비용 · 데이터 주권

선택 기준 (S1 종료 시점 데이터 기반):

  • 파일럿 서식 깨짐 리포트 빈도
  • 변호사 체감 만족도 (월 1회 정기)
  • 서식 복잡도 (표·세로쓰기·이미지 인장)

Minority Report

P1 변호사 (중대 이견)

"S1 에 docx-only 로 배포하면 파일럿 이탈 위험. 한글 네이티브를 S1 에 묶어 병행 릴리스 해야 안전." 처리: 다음 조건으로 위험 완화:

  1. 파일럿에게 사전 고지 — "S2 hwp 추가 확약" + 데이터 제공 요청
  2. S1 개시 1개월 내 파일럿 3명 docx 생성 실측 리포트 수집
  3. 서식 깨짐 2건+ 발생 시 S2 한글 네이티브 scope 확대 (외부 API 포함 재검토)
  4. 파일럿 이탈 실제 발생 시 S2 앞당김 + S3 일정 축소

P5 개발자 (부분 반대)

"hwp-js fork 는 재검토. 2022 마지막 커밋 이후 maintained fork 있는지 S2 회의 전 조사." 처리: S2 회의 안건에 포함.

후속 (파생 안건)

  • tier=B 한글 네이티브 경로 (S1 종료 시점 · libhwp/fork/외부 API 비교) — 본 ADR 의 S2 전제 회의
  • tier=C DocxPreviewDialog 카피 — "hwp 지원 S2 예정" 문구 UI 반영
  • Firestore dailyDocxGenerationStats — 파일럿 텔레메트리 수집 스키마