배경
한컴이 2022년 Apache 2.0으로 공개한 hancom-io/dvc 는 HWPX 문서가 JSON으로 정의된 서식 규칙을 준수하는지 검증하는 C++ DLL이다. Windows 전용이라 CI 자동화·리눅스·macOS·웹에서 쓸 수 없다.
본 이슈는 DVC를 Rust로 포팅하여 rhwp에 rhwp validate CLI로 통합한다. rhwp의 기존 IR을 활용하므로 OWPML 중간 층이 제거되고, HWP 바이너리도 동일 IR 경로로 검증 가능해진다 (DVC 초월).
상세 조사: `mydocs/tech/hwpx_dvc_reference.md`
전제 조건
목표
- DVC 규칙 JSON 스키마와 동일 포맷의 규칙 파일 수용 (기존 DVC 자산 그대로 활용)
- DVC의 errorCode 체계와 호환되는 출력 (필드 이름·구조 동일, 1000~10999 블록 호환)
- rhwp 고유 영역(11000+)에서 구조 정합성 검증 추가:
- 3-way BinData 동기화 (`hp:pic` binaryItemIDRef ↔ content.hpf opf:item id ↔ ZIP entry)
- charPrIDRef ↔ header.xml 정합
- mimetype 규칙 (첫 엔트리, STORED)
- HWP 바이너리 지원 — DVC 초월 영역
- WASM 빌드 — 브라우저·rhwp-studio 실시간 검증
- Linux·macOS·CI 자동화 가능
CLI 예시
```bash
rhwp validate --rules test.json sample.hwpx
rhwp validate --rules test.json sample.hwp # HWP 바이너리도 지원
rhwp validate --rules test.json --format json --output result.json sample.hwpx
rhwp validate --rules test.json --level all --output-all sample.hwpx
rhwp validate --dvc-version 1.0 ... # DVC 버전 호환 태그
```
검증 영역 (DVC 호환)
- 글자모양 (charshape) — JID_CHAR_SHAPE=1000
- 문단모양 (parashape) — JID_PARA_SHAPE=2000
- 표 (table) — JID_TABLE=3000
- 특수문자 (specialcharacter) — JID_SPECIAL_CHARACTER=4000
- 개요·글머리표 (outlineshape, bullet) — JID_OUTLINE_SHAPE=5000, JID_BULLET=6000
- 문단번호 (paranumbullet) — JID_PARA_NUM_BULLET=7000
- 스타일 (style) — JID_STYLE=8000
- 하이퍼링크 (hyperlink) — JID_HYPERLINK=9000
- 매크로 (macro) — JID_MACRO=10000
단계 (초안, 포팅 계획에서 상세화)
- MVP: 글자모양 + 문단모양 두 영역 (5~7일)
- 핵심 7개 영역: 표·스타일·하이퍼링크·매크로 포함 (15~20일 누적)
- HWP 바이너리 지원: rhwp IR 통합 검증 (+5~7일)
- WASM 빌드: 브라우저 통합 (+5일 추정)
- rhwp 고유 영역: 구조 정합성 검증 (11000+) — 본 이슈에 포함할지 별도 분리할지 설계 단계에서 결정
대조 테스트 (필수)
- Windows VM에서 DVC 실행 → 결과 JSON 캡처
- 같은 입력을 `rhwp validate`로 실행 → 결과 JSON 비교
- 필드 단위 일치율 ≥ 99% 유지가 완료 기준의 일부
라이선스
Apache 2.0 하에서 파생물. 각 Rust 파일 헤더에:
```rust
//! Ported from hancom-io/dvc (Apache License 2.0, © 2022 Hancom Inc.)
//! https://github.com/hancom-io/dvc
```
가치
- CI 자동화 가능한 유일한 HWPX 검증 도구 (DVC는 Windows 전용)
- HWP/HWPX 모두 검증 가능한 세계 최초 도구 (DVC 초월)
- 공공기관·학교·출판사의 일괄 검증 현실화
- DVC 규칙 JSON 자산이 Windows 밖으로 이식되는 첫 경로
- rhwp serialize 결과를 자체 검증하는 루프 완성
관련 이슈·자료
배경
한컴이 2022년 Apache 2.0으로 공개한 hancom-io/dvc 는 HWPX 문서가 JSON으로 정의된 서식 규칙을 준수하는지 검증하는 C++ DLL이다. Windows 전용이라 CI 자동화·리눅스·macOS·웹에서 쓸 수 없다.
본 이슈는 DVC를 Rust로 포팅하여 rhwp에
rhwp validateCLI로 통합한다. rhwp의 기존 IR을 활용하므로 OWPML 중간 층이 제거되고, HWP 바이너리도 동일 IR 경로로 검증 가능해진다 (DVC 초월).상세 조사: `mydocs/tech/hwpx_dvc_reference.md`
전제 조건
목표
CLI 예시
```bash
rhwp validate --rules test.json sample.hwpx
rhwp validate --rules test.json sample.hwp # HWP 바이너리도 지원
rhwp validate --rules test.json --format json --output result.json sample.hwpx
rhwp validate --rules test.json --level all --output-all sample.hwpx
rhwp validate --dvc-version 1.0 ... # DVC 버전 호환 태그
```
검증 영역 (DVC 호환)
단계 (초안, 포팅 계획에서 상세화)
대조 테스트 (필수)
라이선스
Apache 2.0 하에서 파생물. 각 Rust 파일 헤더에:
```rust
//! Ported from hancom-io/dvc (Apache License 2.0, © 2022 Hancom Inc.)
//! https://github.com/hancom-io/dvc
```
가치
관련 이슈·자료