Task #637: 한컴 호환 — cover-style 페이지 쪽번호 미표시 메커니즘 분석 (closes #637)#640
Closed
planet6897 wants to merge 5 commits intoedwardkim:develfrom
Closed
Task #637: 한컴 호환 — cover-style 페이지 쪽번호 미표시 메커니즘 분석 (closes #637)#640planet6897 wants to merge 5 commits intoedwardkim:develfrom
planet6897 wants to merge 5 commits intoedwardkim:develfrom
Conversation
aift.hwp 페이지 2, 3 (큰 표만 있는 cover-style) 쪽번호 미표시 메커니즘 분석. Task edwardkim#634 종료 후 분리된 후속 issue. 5가지 가설 (cover-style 휴리스틱 / 셀 내부 PageHide / paragraph header 비트 / 표 attr 비트 / 한컴 자체 휴리스틱) 데이터 기반 검증 + 권고안 결정. 본 task 는 read-only 분석. 결정적 룰 발견 시에만 별도 fix issue 분리.
aift.hwp 페이지 2, 3 (큰 표만 있는 cover-style) 미표시 메커니즘 분석 사전 단계. 데이터 수집: - dump-pages 페이지 1~6 구조 (items, body 사용량, 표 비율) - dump 페이지 1/2/3/6 host paragraph (cc, ps_id, controls) - 문서 전체 PageHide 컨트롤 (정확히 2개: 페이지 4 para 2.34, 페이지 5 para 2.54) - 한컴 PDF 측정 (pypdf): 페이지 1, 6, 7 표시 / 페이지 2, 3, 4, 5 미표시 확정 - 표 attr 매트릭스 (페이지 1: 0x04000006, 2: 0x0600000e, 3: 0x0400000e, 6: 0x0600000e) Stage 0 사전 판정: - H1 (cover-style 휴리스틱): 유력 — 페이지 2/3 만 items=1 + 표 89~98% - H2 (셀 내부 PageHide): 기각 — 문서 전체 PageHide 가 정확히 2개 - H3 (paragraph header 비트): 기각 — 페이지 2 (미표시) host 와 페이지 6 (표시) host 거의 동일 - H4 (표 attr 비트): 기각 — 페이지 6 표 attr = 페이지 2 표 attr (0x0600000e) - H5 (한컴 휴리스틱): H1 변형, Stage 2 교차 검증 후 결정 본 단계는 read-only 분석. 코드 변경 없음.
도구: examples/inspect_637.rs (paragraph header raw + cover-candidate enumeration).
검증 결과:
- H1 cover-style 휴리스틱 → 결정적 룰로 정형화: 페이지가 items=1 인 단일
완전한 Table (PartialTable 아님) 을 포함하고 tac=false 일 때 한컴은
쪽번호 미표시.
- 174 샘플 전수 조사: aift.hwp p2, p3 만 매칭 (전체의 0.06%, 한컴 미표시 일치)
- aift.hwp 의 tac=true items=1 페이지 (p74, p75) 는 한컴 표시 — tac=false
가 결정적 분리자임을 검증
- H2, H3, H4 최종 기각:
* H2: 문서 전체 PageHide 정확히 2개 (페이지 4 para 2.34, 페이지 5 para 2.54)
* H3: 페이지 2 host (미표시) 와 페이지 6 host (표시) 의 raw paragraph
header 가 ps_id 외 byte-for-byte 동일 (cc=9, mask=0x00000800,
break_raw=0x04, raw_header_extra 12B 완전 동일)
* H4: 페이지 6 (표시) 표 attr = 0x0600000e (페이지 2 attr 와 동일)
- H5 (한컴 휴리스틱): H1 의 정확형 등가
회귀 위험: 매우 낮음 (174 샘플 중 2 페이지만 영향, 모두 정합성 개선).
Stage 3 사전 권고: 시나리오 (a) 별도 fix issue 분리 후 본 issue close-as-analysis.
본 단계는 read-only 분석. 코드 변경 없음 (example 추가만).
분석 완료 (Stage 0 → Stage 1 → Stage 3, Stage 2 α 결정으로 생략). 결과: - H1 cover-style 휴리스틱이 결정적 룰로 확정: 페이지 items=1 + 완전한 Table (PartialTable 아님) + tac=false → 한컴 미표시 - 174 샘플 전수 조사: aift p2, p3 만 매칭 (전체의 0.06%) - H2/H3/H4 최종 기각 - 회귀 위험 매우 낮음 (영향 페이지 2건, 모두 정합성 개선) 권고: 시나리오 (a) — 별도 fix issue 분리 후 본 issue close-as-analysis-complete. 코드 변경 0 (examples/inspect_637.rs 분석 도구 추가만). orders/20260506.md 갱신 (edwardkim#637 완료 상태 반영).
GitHub Issue 처리: - edwardkim#637 close-as-analysis-complete (분석 완료 코멘트 포함) - edwardkim#639 등록 (fix issue: cover-style 페이지 자동 쪽번호 미표시) orders 갱신: - edwardkim#637 상태: "완료 (분석 close, fix issue edwardkim#639 분리)" - edwardkim#639 신규 등록 entry 추가 (등록만, 진행 대기) milestone v1.0.0 설정은 planet6897 권한 부족으로 실패 — 메인테이너 수동 설정 필요.
7 tasks
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
examples/inspect_637.rs) 추가만, src/ 변경 없음배경
Task #634 (한컴 호환 — 첫 NewNumber Page 게이팅) 종료 시점에 미해결로 남은
samples/aift.pdf페이지 2 (사업계획서 표지, 35×27 표) 와 페이지 3 (요약문, 14×17 표) 의 한컴 미표시 메커니즘.페이지 2, 3 두 페이지 모두 PageHide page_num=true 컨트롤 없음에도 한컴은 미표시. 별도 메커니즘 존재.
결과
결정적 룰 확정
5가지 가설 판정
H3 결정적 byte-level 검증
01 00 00 00 01 00 00 00 00 00 00 0001 00 00 00 01 00 00 00 00 00 00 00페이지 2 host (미표시) 와 페이지 6 host (표시) 의 paragraph header 가 ps_id (시각 모양 ID) 외 byte-for-byte 동일 → H3 즉시 기각.
174 샘플 전수 조사
다른 173 샘플 모두 0건 매칭. 회귀 위험 매우 낮음.
tac=true 케이스 검증 (룰 보정)
aift.hwp 페이지 74 (pi=910), 75 (pi=911) 가
items=1 + Table + tac=true패턴 매칭. 한컴 PDF 측정 결과 표시 ("- 67 -", "- 68 -"). tac=false 가 결정적 분리자임을 검증.권고안 — 시나리오 (a) 채택
본 issue 는 분석 완료로 close. 결정적 룰 구현은 별도 fix issue 로 분리.
산출물
mydocs/plans/task_m100_637.mdmydocs/working/task_m100_637_stage0.mdmydocs/working/task_m100_637_stage1.mdmydocs/report/task_m100_637_report.mdexamples/inspect_637.rsmydocs/orders/20260506.md메모리 룰 준수
Test plan
🤖 Generated with Claude Code