Skip to content

fix(reverse_sync): heading 내 Badge 컴포넌트 roundtrip 소실을 수정합니다#982

Merged
jk-kim0 merged 4 commits intomainfrom
fix/reverse-sync-heading-badge
Apr 5, 2026
Merged

fix(reverse_sync): heading 내 Badge 컴포넌트 roundtrip 소실을 수정합니다#982
jk-kim0 merged 4 commits intomainfrom
fix/reverse-sync-heading-badge

Conversation

@jk-kim0
Copy link
Copy Markdown
Contributor

@jk-kim0 jk-kim0 commented Apr 5, 2026

Description

heading 변경 시 <Badge color="grey">10.2.2</Badge>가 roundtrip에서 [badge]10.2.2로 깨지는 문제를 수정합니다.

원인

heading은 _CLEAN_BLOCK_TYPES로 분류되어 replace_fragment 전략을 사용합니다. 이 전략은 _emit_replacement_fragment()emit_block()convert_heading_inline() 경로를 거치는데, convert_heading_inline()(mdx_to_storage/inline.py)에서 <Badge><ac:structured-macro ac:name="status"> 변환이 누락되어 있었습니다.

MDX <Badge> 태그가 그대로 XHTML에 삽입 → BeautifulSoup이 소문자 <badge>로 변환 → FC가 인식 불가 → [badge] 형태로 출력.

변경 내용

  • mdx_to_storage/inline.py: convert_heading_inline()_BADGE_INLINE_RE.sub(_replace_badge, ...) 추가 (주 경로)
  • reverse_sync/mdx_to_xhtml_inline.py: _convert_heading()에도 동일한 Badge 변환 추가 (mdx_block_to_inner_xhtml 경로 대응)

Badge 시나리오별 지원

heading은 replace_fragment 전략으로 improved MDX 기준 XHTML 전체 재생성하므로, 아래 시나리오 모두 지원됩니다:

시나리오 결과
Badge 추가 <ac:structured-macro ac:name="status"> 생성
컬러 변경 <ac:parameter ac:name="colour"> 반영
텍스트 변경 <ac:parameter ac:name="title"> 반영
Badge 삭제 structured-macro 제거

검증

949 pytest passed
43 reverse-sync bug tests passed
45/45 verify passed (split/ko-proofread-20260221-administrator-manual-general)

Added/updated tests?

  • Yes
    • heading 내 Badge 변환 단위 테스트 1건
    • Badge 추가/변경(컬러·텍스트)/삭제 roundtrip 테스트 4건 (emit_block → XHTML → FC → MDX)

🤖 Generated with Claude Code

`convert_heading_inline()`과 `_convert_heading()`에서 `<Badge>` →
`<ac:structured-macro ac:name="status">` 변환이 누락되어, heading 변경 시
Badge가 `[badge]` 형태로 깨지는 문제를 수정합니다.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
querypie-docs Ready Ready Preview, Comment Apr 5, 2026 1:17pm

Request Review

@jk-kim0
Copy link
Copy Markdown
Contributor Author

jk-kim0 commented Apr 5, 2026

[debate-review][sha:c0670e8554ba4651300e42b1b22d859b2d6eef48] Consensus reached after 2 rounds.

No actionable issues remain.

jk-kim0 and others added 3 commits April 5, 2026 22:11
emit_block → XHTML → FC → MDX 전체 경로를 검증하는 테스트 4건:
- Badge 추가: status macro 생성 확인
- 컬러 변경: colour 파라미터 반영 확인
- 텍스트 변경: title 파라미터 반영 확인
- Badge 삭제: status macro 부재 확인

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
_emit_heading_xhtml이 _emit_replacement_fragment의 emit_block 단계만
재현한다는 점과, sidecar/lost_info가 Badge heading에서는 개입하지 않는다는
점을 명시합니다.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…설명을 추가합니다

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jk-kim0 jk-kim0 merged commit 3d50273 into main Apr 5, 2026
7 checks passed
@jk-kim0 jk-kim0 deleted the fix/reverse-sync-heading-badge branch April 5, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant