Skip to content

[hwpx2hwp] hwp5-inventory / hwp5-inventory-diff P0 구현 #949

@edwardkim

Description

@edwardkim

목적

#946에서 설계한 HWPX→HWP contract 추출 도구 체계 중 P0 도구를 실제 구현한다.

이번 구현은 저장기 본 로직을 수정하지 않는다. 먼저 한컴 HWP oracle과 rhwp generated HWP를 같은 HWP5 record/control 언어로 읽고 비교할 수 있게 만든다.

범위

  1. rhwp hwp5-inventory <file.hwp> 구현

    • HWP5 CFB / DocInfo / BodyText record stream inventory 생성
    • record index, level, tag, size, owner, parent_scope, key_payload, payload hash 출력
    • jsonl, csv, md 중 최소 jsonl + md 지원
  2. rhwp hwp5-inventory-diff --oracle <hancom.hwp> --generated <rhwp.hwp> --out <dir> 구현

    • oracle/generated inventory 생성
    • 누락/추가/값 다름/순서 다름/level 차이/size 차이 분류
    • failure_class A-F 힌트 생성
    • inventory_diff.md, contract_violation_hints.md 생성
  3. output/poc/hwpx2hwp/... 표준 산출물 경로 사용

비범위

  • HWPX→HWP 저장기 production 로직 수정
  • HWPX control inventory 구현
  • synthetic/probe 생성기 구현
  • contract corpus / dashboard 구현

검증 기준

cargo run --bin rhwp -- hwp5-inventory samples/hwpx/hancom-hwp/hwpx-h-01.hwp \
  --format jsonl \
  --out output/poc/hwpx2hwp/taskXXXX/stage1/hwpx-h-01/oracle.inventory.jsonl

cargo run --bin rhwp -- hwp5-inventory-diff \
  --oracle samples/hwpx/hancom-hwp/hwpx-h-01.hwp \
  --generated output/poc/hwpx2hwp/task903/web_save_repro/hwpx-h-01-web-save.hwp \
  --hwpx-source samples/hwpx/hwpx-h-01.hwpx \
  --out output/poc/hwpx2hwp/taskXXXX/stage1/hwpx-h-01

생성되어야 하는 산출물:

oracle.inventory.jsonl
oracle.inventory.md
generated.inventory.jsonl
generated.inventory.md
inventory_diff.jsonl
inventory_diff.md
contract_violation_hints.md

참고 문서

  • mydocs/plans/task_m100_946_stage1_tooling.md
  • mydocs/troubleshootings/hwpx2hwp-rule.md
  • mydocs/feedback/hwpx2hwp_tooling_technical_review.md

진행 원칙

P0 도구가 한컴 oracle/generated HWP의 record/control 차이를 설명하기 전까지 HWPX→HWP 저장기 구현으로 넘어가지 않는다.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requesthwpx2hwpsave hwpx to hwp

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions