Skip to content

confluence-mdx: reverse-sync 재구성 설계와 구현 정리 범위를 정의합니다#913

Merged
jk-kim0 merged 5 commits intomainfrom
jk/docs-reverse-sync-reconstruction-design
Mar 13, 2026
Merged

confluence-mdx: reverse-sync 재구성 설계와 구현 정리 범위를 정의합니다#913
jk-kim0 merged 5 commits intomainfrom
jk/docs-reverse-sync-reconstruction-design

Conversation

@jk-kim0
Copy link
Contributor

@jk-kim0 jk-kim0 commented Mar 12, 2026

요약

reverse-sync를 heuristic 기반 텍스트 패치에서 XHTML fragment 재구성 중심 구조로 전환하기 위한 최종 설계 문서를 정리합니다.

이 문서는 다음 내용을 정의합니다.

  • MDX 변경을 XHTML로 재구성해 Confluence 문서를 업데이트하는 목표
  • paragraph / list / callout / ADF panel 등을 포함한 재구성 아키텍처
  • tests/testcases, tests/reverse-sync 자산을 활용한 테스트 전략
  • 새 구현 이후 제거하거나 축소할 기존 모듈과 테스트 범위

포함 내용

  • reverse-sync 재구성 설계 문서 정리
  • sidecar, reconstruction, verification 방향 정의
  • 테스트 레벨 및 fixture 활용 방안 정의
  • legacy patch 경로의 삭제/정리 대상 명시

기대 효과

  • reverse-sync 구현 방향을 fragment reconstruction 기준으로 통일
  • 테스트 및 회귀 방지 기준 명확화
  • 구현 완료 후 제거할 legacy 코드 범위 사전 정리

@vercel
Copy link

vercel bot commented Mar 12, 2026

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

Project Deployment Actions Updated (UTC)
querypie-docs Ready Ready Preview, Comment Mar 13, 2026 0:22am

Request Review

현재 patch 기반 Reverse Sync의 복잡도 문제를 분석하고,
MDX → XHTML 직접 재구성 방식으로의 전환 설계를 제안합니다.

설계 문서와 v1~v4 반복 검토 평가 문서를 포함합니다.

Co-Authored-By: Atlas <atlas@jk.agent>
@jk-kim0 jk-kim0 force-pushed the jk/docs-reverse-sync-reconstruction-design branch from 33fa095 to 17dda50 Compare March 13, 2026 10:57
설계의 적절성, 목표 달성 가능성, 아키텍처, 위험 요소, 복잡도 대비 효과를 검증하였습니다.
Phase 0-2는 즉시 착수 가능하며, Phase 3 착수 전 list item 불일치 처리 방식 및
anchor offset 기준 명문화를 권고합니다.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jk-kim0 jk-kim0 self-assigned this Mar 13, 2026
@jk-kim0 jk-kim0 changed the title confluence-mdx: reverse-sync 전면 재구성 설계 문서를 추가합니다 confluence-mdx: reverse-sync 재구성 설계와 구현 정리 범위를 정의합니다 Mar 13, 2026
@jk-kim0 jk-kim0 merged commit b40600d into main Mar 13, 2026
7 checks passed
@jk-kim0 jk-kim0 deleted the jk/docs-reverse-sync-reconstruction-design branch March 13, 2026 12:24
jk-kim0 added a commit that referenced this pull request Mar 13, 2026
…ublic API (#914)

## Description
- reverse-sync 재구성 설계(#913)의 Phase 0 구현입니다.
- `xhtml_normalizer.py` 공용 모듈을 추가합니다: `extract_plain_text()`,
`normalize_fragment()`, `extract_fragment_by_xpath()`
- `emitter.py`의 `_ListNode`/`_parse_list_items()`/`_build_list_tree()`를
`ListNode`/`parse_list_tree()` public API로 승격합니다.
- Level 0 helper tests 43개를 추가합니다 (전체 820 pass).

### Phase 0 게이트 충족 항목
- [x] `extract_plain_text`: ac:image/ac:link 제외, ac:emoticon fallback
포함, ac:plain-text-body 제외
- [x] `normalize_fragment`: ignored attributes 제거,
layout/decoration/non-reversible macro 정리, idempotent
- [x] `extract_fragment_by_xpath`: 단일/복합/다단계 xpath, macro-* 패턴
- [x] `parse_list_tree`: nested/mixed/continuation line 지원
- [x] 기존 테스트 820개 전부 green

## Added/updated tests?
- [x] Yes — `test_reverse_sync_xhtml_normalizer.py` (34 tests),
`test_reverse_sync_list_tree.py` (9 tests)

## Additional notes
- Phase 1 (sidecar schema v3) PR이 이 PR 위에 쌓입니다.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
jk-kim0 added a commit that referenced this pull request Mar 14, 2026
… identity helper (#915)

## Description
- reverse-sync 재구성 설계(#913)의 Phase 1 구현입니다.
- `SidecarBlock`에 `reconstruction` 필드를 추가합니다 (kind, old_plain_text,
anchors, items).
- `ROUNDTRIP_SCHEMA_VERSION` "2" → "3" 승격, v2 하위 호환 로드를 유지합니다.
- `build_sidecar()`가 block 타입별 reconstruction metadata를 자동 생성합니다.
- `build_block_identity_index()`, `find_block_by_identity()`: hash +
line_range 기반 disambiguation helper를 추가합니다.

### Phase 1 게이트 충족 항목
- [x] existing sidecar tests green (v2 테스트 11개 수정 후 통과)
- [x] 21개 testcase build + integrity 유지
- [x] schema v3 직렬화/역직렬화 정상
- [x] v2 파일 하위 호환 로드 정상
- [x] duplicate hash disambiguation 동작
- [x] 전체 845 tests pass

## Added/updated tests?
- [x] Yes — `test_reverse_sync_sidecar_v3.py` (25 tests),
`test_reverse_sync_sidecar_v2.py` (v3 호환 수정)

## Additional notes
- 이 PR은 Phase 0 PR (#914) 위에 쌓여 있습니다. Phase 0 머지 후 main으로 rebase 필요합니다.
- reconstruction metadata의 anchors/items는 현재 빈 placeholder입니다. Phase 3에서
실제 anchor 분석이 추가됩니다.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
jk-kim0 added a commit that referenced this pull request Mar 15, 2026
## Description

PR #913 시점의 설계 초안을 2026-03-15 `main` (#917 머지 후) 기준으로 갱신합니다.

**수정 파일:** `docs/plans/2026-03-13-reverse-sync-reconstruction-design.md`

- 문서 헤더에 갱신일, 기준 커밋(`9e0d43b9`), 반영된 선행 PR(#913#915, #917) 메타를 추가합니다
- 이미 `main`에 반영된 Phase 0/1 작업과 아직 남은 재구성 작업을 명확히 분리합니다
- Phase 1 후속(#917) 내용을 반영합니다: `strict v3` 전환, identity helper API
통일(`build_sidecar_identity_index` / `find_sidecar_block_by_identity`),
`reconstruction` metadata 보강(`child_xpaths`, ordered list)
- 현재 런타임 기본 경로(patch_builder → text_transfer)와 최종 목표(fragment
reconstruction) 사이의 gap을 재정의합니다
- 남은 구현 단계(Phase 2–5)와 게이트를 현재 코드베이스 기준으로 재확정합니다

**신규 파일:**
`docs/plans/2026-03-15-reverse-sync-reconstruction-cleanup-scope.md`

- 기존 설계 문서에 포함되어 있던 legacy 코드 삭제 범위를 별도 문서로 분리합니다
- 삭제 시작 조건, 완전 삭제 대상, 부분 축소 대상, 유지 대상을 모듈 단위로 정리합니다

## Added/updated tests?
- [x] No — 문서 전용 변경입니다

## Additional notes
- 코드 변경 없음
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