fix: Picture flip/rotation 누락 회귀 정정 (Task #519 재적용, closes #618)#620
fix: Picture flip/rotation 누락 회귀 정정 (Task #519 재적용, closes #618)#620planet6897 wants to merge 1 commit intoedwardkim:develfrom
Conversation
edwardkim#618) 증상: samples/exam_eng.hwp 4페이지 28번 박스 종이-말림 데코레이션 그림이 horz_flip+vert_flip 속성을 가지고 있으나 SVG 출력에 transform 래퍼가 누락되어 잘못된 위치(우하단)로 렌더되어 본문과 겹쳐 보이지 않음. 원인: Task edwardkim#519 (edwardkim#519, 7ead89d) 의 정정이 local/devel 에는 머지되었으나 stream/devel 로의 승격이 한 번도 일어나지 않음. local/devel..stream/devel 의 첫부모 경로상 Task edwardkim#519 묶음 머지 a7e43f9 가 부재 — `git branch -a --contains 7ead89d` 결과는 local/devel + local/task* 만 표시. 정정: 6 ImageNode 생성 지점에 transform: extract_shape_transform(&pic.shape_attr) 재적용. extract_shape_transform 헬퍼는 utils.rs:109 에 그대로 살아있어 신규 단위 변환 코드 0줄. - src/renderer/layout.rs:2851 (TAC Picture / col_node) - src/renderer/layout/picture_footnote.rs:117,328 (layout_picture / layout_floating_picture) - src/renderer/layout/paragraph_layout.rs:1834,2108,2218 (TAC 인라인 3 사이트) - src/renderer/layout/table_cell_content.rs:644 (셀 내부 Picture; 명시적 ShapeTransform::default() → extract_shape_transform 교체) 검증: - cargo test --lib: 1134 passed (회귀 0) - cargo test --test svg_snapshot: 6/6 passed - cargo clippy --lib -- -D warnings: clean - exam_eng.hwp 8페이지 SVG diff: 페이지 4만 2 lines 변경 (<g transform> 래퍼 1쌍 추가), 다른 7개 페이지 byte-identical - export-svg p4 transform 래퍼 카운트: 0 → 1 (Q28 그림에 horz/vert flip 적용) 회귀 방지 후속 권고: 묶음 머지 a7e43f9 (Task edwardkim#517/edwardkim#518/edwardkim#519/edwardkim#520/edwardkim#521/edwardkim#523/edwardkim#528) 의 다른 task 들도 stream/devel 누락 가능성 점검 필요.
- @planet6897 (Jaeook Ryu) Task #618 회귀 정정 PR 검토 - Task #519 fix (transform: extract_shape_transform) 의 devel 누락 정합 직접 검증 - 본 환경 git merge-base --is-ancestor 7ead89d devel: 부재 - 본 환경 git merge-base --is-ancestor a7e43f9 devel: 부재 - 회귀 origin: PR #527 (CLOSED) 묶음 머지가 본 환경 devel 도달 못 함 - 본 환경 검증: cargo test 1140 passed / clippy 0 / svg_snapshot 6/6 - 정량 측정: BEFORE 0 → AFTER 1 transform 래퍼 (page 4 Q28 박스), PR 본문 명시 100% 일치 - 광범위 sweep: 167 fixture / 1,687 페이지 / 차이 0 - WASM: 4,590,537 bytes (PR #611 baseline +230) - 회귀 방지 후속 영역: Task #517/#518/#523 누락 가능성 + Task #520 (PR #627 별도 영역) - 옵션 A (cherry-pick) 권장 + 옵션 B (후속 task 권유) 결합 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 9.5.1 핀셋 cherry-pick (95b228e, author Jaeook Ryu 보존) - 9.5.2 결정적 재검증 (1140 passed / clippy 0 / WASM 4,590,537 bytes) - 9.5.4 SVG byte 차이 + 정량 측정 (page 4 BEFORE 0 → AFTER 1 transform 래퍼) - 9.5.5 시각 판정 자료 안내 (output/svg/pr620_before vs pr620_after, exam_eng 8 페이지) - 처리 결정 갱신 (검토 중 → 옵션 A 진행 중 시각 판정 게이트 대기) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…on 누락 회귀 정정 — Task #519 재적용 — @planet6897 / Jaeook Ryu 1 commit + 시각 판정 ★ SVG/web 양쪽 통과)
|
검토 + 핀셋 cherry-pick 머지 완료. 감사합니다. 처리 결과
본 환경 직접 진단 검증본 PR 본문의 회귀 진단을 본 환경 (edwardkim/rhwp devel) 에서 직접 재현: $ git merge-base --is-ancestor 7ead89d devel # ❌ Task #519 fix commit 부재
$ git merge-base --is-ancestor a7e43f9 devel # ❌ 묶음 머지 부재회귀 origin: PR #527 (CLOSED, "Layout 리팩터링 Phase 0~2 + 옛한글 PUA + Square wrap fixes") 의 묶음 머지 결정적 재검증
정량 측정 (PR 본문 100% 재현)
page 4 transform 영역 (PR 본문 명시값 100% 일치): 광범위 페이지네이션 회귀 sweep
메인테이너 시각 판정 결과★ SVG + web 양쪽 통과 — 작업지시자 평가:
권위 영역: page 4 — Q28 박스 종이-말림(curl) 데코레이션 그림 ( 본 PR 의 본질본 PR 의 처리 본질에서 가장 우수한 점:
수고하셨습니다. |
회귀 방지 후속 영역 (별도 후속 권유)본 PR 본문에서 권고하신 묶음 머지
→ Task #517 / #518 / #523 영역이 본 환경 devel 에 누락되어 있을 가능성이 있습니다. 가능하시다면 본 PR 과 동일 패턴 (각 task 의 본질 정정만 단일 commit cherry-pick PR) 으로 후속 PR 을 분리 등록해주시면 도움이 될 것 같습니다. 본 환경에서 직접 점검해보니 PR #527 close 시점 이후 5개 task 중 #519 / #520 만 후속 PR (본 PR #620 + PR #627) 으로 재적용 영역이 등록됐고 #517 / #518 / #523 은 미등록 상태로 보입니다. 물론 본 환경 직접 점검 (소스 영역에서 수고하셨습니다. |
- mydocs/pr/archives/pr_620_report.md 신규 (처리 보고서) - mydocs/pr/pr_620_review.md → mydocs/pr/archives/pr_620_review.md 이동 - mydocs/orders/20260507.md 신규 (5/7 사이클 첫 작성, PR #620 첫 항목) - feedback_close_issue_verify_merged 메모리 권위 영역의 권위 케이스 정합 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- @postmelee (Taegyu Lee) 첫 PR 검토 — Issue #598 본문 각주 마커 이동 및 삭제 - 32 파일 +2,751/-34 (본질 src 9 + rhwp-studio TS 4 + tests 1 + 컨트리뷰터 fork plans/working 11) - 본 환경 검증: cargo test 1141 passed / issue_598_footnote_marker_nav 4/4 / clippy 0 - rhwp-studio npm run build 정합 / Docker WASM 4,587,318 bytes (PR #620 baseline -3,219) - 광범위 sweep: 167 fixture / 1,687 페이지 / 차이 0 - cherry-pick 충돌 영역: orders add/add 만 발생, src 영역 0 (합본 patch 방식 적용 시 깨끗) - Issue assignee 정합 (작업지시자 직접 지정), Issue #598 5 영역 모두 본질 정정 - 옵션 A (합본 cherry-pick + 작업지시자 web 환경 직접 각주 동작 테스트) 권장 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- postmelee 영역 정합 (첫 PR → 활발한 컨트리뷰터 13 PR 누적) - 9.5.1 합본 cherry-pick (17434e9, author postmelee 보존, 16 파일 +959/-34) - 9.5.2 결정적 재검증 (1141 passed / issue_598_footnote_marker_nav 4/4 / clippy 0) - 9.5.4 web 시각 판정 자료 안내 (8가지 권위 영역 명시 + 실행 명령) - WASM: 4,587,318 bytes (PR #620 baseline -3,219) - 처리 결정 갱신 (검토 중 → 옵션 A 진행 중 web 시각 판정 게이트 대기) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
이슈 #618 정정.
samples/exam_eng.hwp4페이지 28번 박스 종이-말림(curl) 그림의horz_flip+vert_flip속성이 SVG 출력에 적용되지 않는 회귀를 정정.원인: Task #519 (#519,
7ead89d) 의 정정이local/devel에는 머지되었으나stream/devel로의 승격이 한 번도 일어나지 않음. 묶음 머지a7e43f9가stream/devel첫부모 경로에 부재.$ git merge-base --is-ancestor 7ead89d stream/devel NOT in stream/devel $ git branch -a --contains 7ead89d local/devel, local/task524..574, remotes/origin/local/devel, ... (stream/devel / main 부재)Changes
6 ImageNode 생성 지점에
transform: extract_shape_transform(&pic.shape_attr)재적용.extract_shape_transform헬퍼는utils.rs:109에 그대로 살아있어 신규 단위 변환 코드 0줄.src/renderer/layout.rstransform:추가 (TAC Picture / col_node)src/renderer/layout/picture_footnote.rstransform:추가 + importsrc/renderer/layout/paragraph_layout.rstransform:추가 + importsrc/renderer/layout/table_cell_content.rsShapeTransform::default()→extract_shape_transform(&pic.shape_attr)+ import총 4 files, +10/-4.
검증
cargo test --lib: 1134 passed (회귀 0)cargo test --test svg_snapshot: 6/6 passedcargo clippy --lib -- -D warnings: cleanexam_eng.hwp8페이지 SVG diff: 페이지 4만 2 lines 변경 (<g transform>래퍼 1쌍 추가), 다른 7개 페이지 byte-identicalTest plan
회귀 방지 후속 권고
이번 회귀처럼
local/devel→stream/devel승격 누락 사례 재발 방지를 위해, 동일 묶음 머지a7e43f9 (Task #517/#518/#519/#520/#521/#523/#528)의 다른 task 들도stream/devel누락 가능성 점검 권고 (별도 이슈로 분리 가능).참고
7ead89d(Task 그림(Picture) 회전·뒤집기(flip) 속성이 SVG 렌더링에 적용되지 않음 #519 Stage 2: ImageNode.transform 채우기)a7e43f9(Merge local/devel: Task Layout 리팩터링 Phase 1: 디버그 인프라 + 회귀 검증 도구 #517/Layout 리팩터링 Phase 2: line_break_char_idx 다중화 (ls[2..] break 사용) #518/그림(Picture) 회전·뒤집기(flip) 속성이 SVG 렌더링에 적용되지 않음 #519/exam_science.hwp 문제7: inline 도형(tac=true, wrap=TopAndBottom)이 다음 문단 라인에 그려져 텍스트와 겹침 #520/exam_eng p2 18번 답안지 위치가 박스 하단에 너무 가까움 — 그림(BehindText) 의 vertical extent 가 paragraph height 에 미반영 #521/exam_science 페이지 1 → 2 누적 vpos drift: 문제 6번 <보기>/답안이 다음 페이지로 밀림 #523/옛한글 PUA → KS X 1026-1:2007 자모 변환 (HncPUAConverter 정합) — exam_kor 17p 고어 미렌더 #528)closes #618