Conversation
…ublic API를 추가합니다 - xhtml_normalizer.py: extract_plain_text, normalize_fragment, extract_fragment_by_xpath 구현 - emitter.py: ListNode, parse_list_tree public API 승격 - Level 0 helper tests 43개 추가 (전체 820 pass) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
리뷰하면서 확인한 핵심 이슈 2개 남깁니다.
참고로 새 테스트 2개 파일은 로컬에서 통과했고, |
- mapping_recorder의 _iter_block_children, _get_text_with_emoticons 등을 public API로 승격하고 backward-compat alias를 추가합니다 - xhtml_normalizer에서 중복 정의를 제거하고 mapping_recorder에서 import합니다 - normalize_fragment에 ignore_ri_filename 파라미터를 추가합니다 - _strip_decorations에 빈 <p> 제거 로직을 추가합니다 - mdx_to_storage_xhtml_verify의 중복 정규화 코드를 normalize_soup()으로 교체합니다 - 새 테스트 2건 추가 (ignore_ri_filename, empty_paragraph_removed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- extract_plain_text에서 ac:link를 skip하지 않고 visible label(ac:link-body) 텍스트를 포함하도록 수정합니다 (기존 mapping_recorder contract와 일치) - ListNode에 start 필드를 추가하여 ordered list marker number를 보존합니다 - _parse_list_items에서 marker number를 파싱하여 start에 저장합니다 - _render_list_nodes에서 첫 항목의 start를 <ol start="N">에 반영합니다 - 관련 테스트 추가/수정 (ac:link with body, start number preservation) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
리뷰 감사합니다. 두 이슈 모두 수정했습니다 ( 1.
|
|
914 PR 리뷰 의견 정리입니다. 이번 변경은 Phase 0 공용 helper 추출이라는 목표 자체는 타당하고, 특히 다만, 914와 916 중 하나를 채택해야 한다면 저는 916 쪽을 우선 추천합니다. 이유는 아래와 같습니다. 결론
914에서 가장 우려되는 점1.
|
- ac:plain-text-body 제외 로직을 제거하여 코드 블록 본문이 plain text에 포함되도록 수정합니다 - 기존 mapping_recorder의 plain text contract와 일치시킵니다 - reconstruction anchor offset 좌표계에서 코드 본문 누락 방지 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
code macro plain-text 이슈 수정했습니다 (
|
| 요소 | 처리 | 기존 mapping_recorder와 일치 |
|---|---|---|
ac:link + ac:link-body |
visible label 포함 | O |
ac:image |
제외 (preservation unit) | O |
ac:emoticon |
fallback 텍스트 포함 | O |
ac:plain-text-body (code body) |
포함 | O |
| ordered list start | ListNode.start 보존 |
N/A (신규) |
전체 테스트 824건 통과 확인.
… 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>
Description
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로 승격합니다.Phase 0 게이트 충족 항목
extract_plain_text: ac:image/ac:link 제외, ac:emoticon fallback 포함, ac:plain-text-body 제외normalize_fragment: ignored attributes 제거, layout/decoration/non-reversible macro 정리, idempotentextract_fragment_by_xpath: 단일/복합/다단계 xpath, macro-* 패턴parse_list_tree: nested/mixed/continuation line 지원Added/updated tests?
test_reverse_sync_xhtml_normalizer.py(34 tests),test_reverse_sync_list_tree.py(9 tests)Additional notes
🤖 Generated with Claude Code