Skip to content

task 1284: #1274 후속 교육 통합 문항 흐름 drift 보정#1292

Closed
jangster77 wants to merge 18 commits into
edwardkim:develfrom
jangster77:task_m100_1284
Closed

task 1284: #1274 후속 교육 통합 문항 흐름 drift 보정#1292
jangster77 wants to merge 18 commits into
edwardkim:develfrom
jangster77:task_m100_1284

Conversation

@jangster77

Copy link
Copy Markdown
Collaborator

요약

  • 교육 통합 HWP/PDF 6종 미주 간격·overflow 시각 정합 보정 #1274 / PR task 1274: 교육 통합 미주 간격·overflow 보정 #1277 후속으로, 교육 통합 HWP/PDF 비교에서 남은 문항 marker drift를 PDF bbox와 render tree bbox 기준으로 검출하도록 visual sweep을 고도화했습니다.
  • 3-09월_교육_통합_2024-미주사이20.hwp의 13쪽~23쪽 문항 흐름 차이를 compact 미주 공통 로직으로 보정했습니다.
  • 3-09월_교육_통합_2023.hwp의 기본 7mm 미주 문항 제목 tail, page16 문23~문27 누적 drift와 수식/제목 겹침, page20 문30 하단 이어짐도 같은 공통 로직으로 보정했습니다.
  • 3-10월_교육_통합_2022.hwp의 문20/문28 수식-본문 겹침과 문30 제목+첫 본문 줄 하단 보존을 보정했습니다.
  • 3-10월_교육_통합_2022.hwp 14쪽 문25, 17쪽 문28/문29와 3-11월_실전_통합_2022.hwp 11쪽 문13/문14, 19쪽 문24/문25의 잔여 tail overflow 후보를 공통 height cursor 로직으로 정리했습니다.
  • 잔여 frame/line/sweep 후보는 실제 렌더 문제와 bbox 오탐/허용 tail bleed를 분리하도록 지표를 보강했고, 작은 line-height 기반 tail bleed는 suppressed 후보로 분리했습니다.
  • 3-09월_교육_통합_2024-구분선아래20구분선위20 HWP/HWPX/PDF 샘플을 추가해 구분선 위/아래 20mm 조합 검증 기반을 포함했습니다.

문제집/문항별 수정

  • 3-09월_교육_통합_2024-미주사이20.hwp 1314쪽 문15문20: 12쪽 하단 frame 밖에 남던 pi=662 tail을 다음 쪽으로 넘겨 문항 marker가 PDF보다 74~90px 위로 당겨지던 흐름을 보정했습니다.
  • 3-09월_교육_통합_2024-미주사이20.hwp 1819쪽 문23문28: 18쪽 오른쪽 단에는 문23까지만 남고, 19쪽은 PDF처럼 문24부터 시작합니다.
  • 3-09월_교육_통합_2024-미주사이20.hwp 21쪽 문23/문25/문26: 문23 제목은 왼쪽 단 하단에 남고 본문은 오른쪽 단에서 이어지며, 문25/문26 drift와 문26 tail overflow를 보정했습니다.
  • 3-09월_교육_통합_2024-미주사이20.hwp 22~23쪽 문28/문29/문30: visible text 뒤 TAC 그림-only 문단은 순차 흐름으로 높이를 예약하고, 문29 tail은 오른쪽 단 상단에서 문30으로 이어집니다.
  • 3-09월_교육_통합_2024-미주사이20.hwp 18쪽/21쪽 late question: 직전 미주 tail의 20mm급 gap이 문29/문30/문23 시작을 과하게 밀던 케이스를 제한 조건으로 보정했습니다.
  • 3-09월_교육_통합_2023.hwp 1415쪽 문23, 16쪽 문23문27, 19쪽 문29, 20쪽 문30: 기본 7mm 미주에서도 한컴/PDF처럼 제목 tail과 이어지는 첫 풀이 줄을 하단에 남깁니다. 16쪽은 상단 stale-forward 제목 gap을 억제해 문23~문26 누적 하강을 없애고, 문25→문26과 문26→문27 수식/제목 겹침을 함께 제거했습니다.
  • 3-09월_교육_통합_2022.hwp 17쪽 문27/문28 guard: 빈/TAC 식이 뒤따르는 제목 orphan은 허용하지 않아 frame overflow를 막았습니다.
  • 3-10월_교육_통합_2022.hwp 11쪽 문20, 14쪽 문25, 15쪽 문28, 17쪽 문28/문29: 수식-only tail과 다음 본문 겹침을 막고, 큰 수식/inline 뒤 문항 제목과 tail이 frame 안에 남게 했습니다.
  • 3-10월_교육_통합_2022.hwp 16쪽 문30: 제목과 첫 본문 줄이 한컴/PDF처럼 같은 frame 하단에 남도록 title-bottom backtrack과 vpos base를 함께 조정했습니다.
  • 3-11월_실전_통합_2022.hwp 11쪽 문13/문14, 19쪽 문24/문25: 기본 7mm compact 미주에서 큰 수식 line 뒤 제목 gap과 medium stale forward gap을 줄여 tail이 frame 안에 남게 했습니다.
  • 3-11월_실전_통합_2022.hwp 12쪽/19쪽 frame 후보: sweep의 frame bottom 오탐과 5px tail bleed를 분리했습니다.
  • 3-09월_교육_통합_2024-구분선아래20구분선위20: HWP/HWPX/PDF 샘플을 추가했습니다.

검증

  • cargo fmt --all -- --check
  • cargo build --verbose
  • cargo check --target wasm32-unknown-unknown --lib
  • cargo test --features native-skia skia --lib --verbose 39개 통과
  • cargo test --test issue_1139_inline_picture_duplicate -- --nocapture 67개 통과
  • cargo test --verbose는 사용자 지시에 따라 중단했지만, 중단 전 issue_1139_inline_picture_duplicate 67개와 issue_241 2개를 포함해 해당 구간까지 실패 없이 통과했습니다.
  • python3 -m py_compile scripts/task1274_visual_sweep.py
  • python3 scripts/task1274_visual_sweep.py --target all
    • 2022-09: 23/23/23, frame/question/title/order 모두 []
    • 2023-09: 20/20/20, frame/question/title/order 모두 []
    • 2024-09-below20: 23/23/23, frame/question/title/order 모두 []
    • 2024-09-between20: 24/24/24, frame/question/title/order 모두 []
    • 2022-10: 18/18/18, frame/question/title/order 모두 []
    • 2022-11-practice: 21/21/21, frame/question/title/order 모두 []

Closes #1284

jangster77 added 16 commits June 4, 2026 21:46
page18 문29/문30과 page21 문30 앞 단일 수식 tail에서 20mm 미주 사이 gap이 중복 소비되는 렌더 경로를 보정했다.

기본 7mm 미주 사이 문서 회귀를 피하도록 큰 between-notes gap과 late question 조건에 한정하고, issue_1139_inline_picture_duplicate 회귀 테스트를 보강했다.
미주 compact 흐름의 하단/상단 tail 공통 보정 분기를 추가하고, 2022-10/2022-11/2023-09 남은 tail 후보를 회귀 테스트로 고정했다.

sweep의 작은 line-height 기반 frame tail 오탐은 suppressed 후보로 분리해 전체 6종 flagged=0 상태를 유지한다.
2023-09 16쪽 문23 상단 stale gap 누적을 보정해 문25/문26/문27 수식과 제목 겹침을 제거했다.

문항 제목 직전 tall visual line overlap을 sweep 후보로 잡도록 보강하고, 2024 구분선 위/아래 20mm 샘플과 PDF를 추가했다.

검증: cargo test --test issue_1139_inline_picture_duplicate, python3 scripts/task1274_visual_sweep.py --target 2023-09
@edwardkim edwardkim self-requested a review June 5, 2026 11:29
@edwardkim edwardkim added the enhancement New feature or request label Jun 5, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 5, 2026
edwardkim added a commit that referenced this pull request Jun 5, 2026
edwardkim added a commit that referenced this pull request Jun 5, 2026
@edwardkim

Copy link
Copy Markdown
Owner

검토 및 maintainer integration을 완료했습니다.

처리 내용:

  • PR #1292의 실제 기능 커밋 15개를 최신 local/devel 위에 cherry-pick했습니다.
  • PR branch의 오래된 merge commit 3개는 제외했습니다. 전체 branch merge 시 PR #1295의 Vite 업데이트와 archive 문서가 되돌아가는 diff가 발생했기 때문입니다.
  • devel에 로컬 병합 후 origin/devel로 push했습니다.

검증:

  • cargo fmt --all -- --check: 통과
  • python3 -m py_compile scripts/task1274_visual_sweep.py: 통과
  • cargo build --verbose: 통과
  • cargo check --target wasm32-unknown-unknown --lib: 통과
  • cargo test --test issue_1139_inline_picture_duplicate -- --nocapture: 67 passed
  • cargo test --features native-skia skia --lib --verbose: 39 passed
  • docker compose --env-file .env.docker run --rm wasm: 통과

참고:

  • python3 scripts/task1274_visual_sweep.py --target all은 로컬에 rsvg-convert가 없어 실행하지 못했습니다.
  • PR head 기준 CI / Render Diff / CodeQL은 모두 성공했습니다.
  • 메인테이너가 컨트리뷰터가 주장한 교육 통합 문항 흐름 보정 사항을 SVG/웹 기준으로 직접 시각 판정했고 통과했습니다.

기여 감사합니다.

@edwardkim edwardkim closed this Jun 5, 2026
edwardkim added a commit that referenced this pull request Jun 5, 2026
edwardkim added a commit that referenced this pull request Jun 5, 2026
edwardkim added a commit that referenced this pull request Jun 5, 2026
Martinel2 pushed a commit to Martinel2/rhwp that referenced this pull request Jun 7, 2026
Martinel2 pushed a commit to Martinel2/rhwp that referenced this pull request Jun 7, 2026
Martinel2 pushed a commit to Martinel2/rhwp that referenced this pull request Jun 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants