Skip to content

Task #1134: HWPX 본문·표 셀 문단 id 전역 유니크 처리#1222

Merged
edwardkim merged 2 commits into
edwardkim:develfrom
Mireutale:fix/issue-1134-para-id-only
Jun 1, 2026
Merged

Task #1134: HWPX 본문·표 셀 문단 id 전역 유니크 처리#1222
edwardkim merged 2 commits into
edwardkim:develfrom
Mireutale:fix/issue-1134-para-id-only

Conversation

@Mireutale

@Mireutale Mireutale commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

변경 요약

HWPX 직렬화 시 본문 문단과 표 셀 내부 문단의 <hp:p id>가 같은 번호 공간을 공유하지 않아 전역 중복이 발생할 수 있는 문제(#1134)를 수정했습니다.

  • SerializeContext에 문서 전역 문단 id 카운터(next_para_id())를 추가
  • 본문 문단·각주 sublist·표 셀 문단이 모두 전역 카운터에서 단조 증가 id를 발급받도록 정리 (기존 루프 인덱스 기반 id 제거)
  • 본문 문단과 표 셀 문단 id가 전역으로 유니크한지 검증하는 회귀 테스트 추가
    • 단위 테스트: 셀 문단 전역 유니크 / 카운터 오프셋 연속 / 연속 표 충돌 없음 / 셀당 복수 문단
    • 통합 테스트: basic-table-01.hwpx 라운드트립에서 본문+셀 id 전역 유니크 검증

분리 안내 (PR #1206 후속)

닫힌 PR #1206 검토 의견에 따라, fillBrush 직렬화 변경(serializer/hwpx/header.rs)을 제외하고 문단 id 충돌 수정만 분리하여 재제출합니다. fillBrush는 HWPX 쓰기 모듈 정비 일정에 맞춰 별도로 다루는 것으로 이해했습니다.

변경 파일은 4개입니다: serializer/hwpx/context.rs, serializer/hwpx/section.rs, serializer/hwpx/table.rs, tests/hwpx_roundtrip_integration.rs.

관련 이슈

closes #1134

테스트

  • cargo fmt --all -- --check 통과
  • cargo test 통과 (HWPX serializer의 정보 누락 관련 제안 #1134 단위 11종 + 통합 1종 포함)
  • cargo clippy -- -D warnings 통과
  • 관련 샘플 파일로 SVG 내보내기 확인 — 해당 없음 (HWPX 직렬화 XML id 변경, SVG 출력 경로 무관)
  • 웹(WASM) 렌더링 확인 — 해당 없음 (렌더링 비관여)

스크린샷

직렬화 XML의 <hp:p id> 발급 로직 변경이라 시각적 변경이 없어 스크린샷 비교는 생략합니다.

Mireutale and others added 2 commits June 1, 2026 13:51
…id> in table cells

- cell_para_ids_continue_from_context_counter: ctx 카운터 오프셋 N에서
  셀 문단 id가 N부터 연속 발급되는지 검증 (본문·표 전역 공유 설계)
- two_sequential_tables_have_no_para_id_collision: 같은 ctx로 표 두 개 직렬화
  시 카운터가 초기화되지 않음을 확인 (회귀 방지)
- multi_para_cells_all_get_unique_ids: 셀당 복수 문단(3개)이 있을 때도
  전역 고유성이 보장되는지 확인
@edwardkim edwardkim self-requested a review June 1, 2026 11:40
@edwardkim edwardkim added the enhancement New feature or request label Jun 1, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 1, 2026
@edwardkim edwardkim merged commit 6f9036f into edwardkim:devel Jun 1, 2026
edwardkim added a commit that referenced this pull request Jun 1, 2026
@Mireutale #1206 분리 재제출. 1921 passed, fillBrush 제외 확인.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@edwardkim

Copy link
Copy Markdown
Owner

머지했습니다(devel 6f9036f7). 감사합니다.

첫 기여이심에도 #1206 리뷰 의견을 정확히 반영해 주셨습니다 — fillBrush 직렬화를 분리하고 문단 id 충돌 수정만 깔끔하게 재제출해 주신 덕분에 변경 범위가 명확해져 검토가 한결 수월했습니다. 안내를 진지하게 받아들이고 다시 PR 을 보내주신 점에 특히 감사드립니다.

SerializeContext 의 전역 next_para_id() 카운터로 본문·각주·셀 문단이 id 번호 공간을 공유하도록 한 설계가 깔끔했고, 통합 테스트(para_ids_unique_across_body_and_table, basic-table-01 라운드트립)로 실제 직렬화 결과의 전역 유니크까지 검증한 점이 좋았습니다.

검증:

앞으로의 기여도 기대하겠습니다.

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.

3 participants