배경
#660 본 작업 1 + v2(#660 후속)으로 텍스트 위주 시험지 빌더 골격이 완성되었다. 본 단계는 시각적 정합성을 완성한다.
범위
1. Placement 4모드 IR 매핑
Placement enum이 schema·serde 모델에 이미 정의됨. 본 단계에서 빌더가 IR로 매핑.
| Placement |
IR 매핑 |
| `between` (default) |
지문 마지막 paragraph 다음, 선택지 첫 paragraph 앞 |
| `above` |
지문 첫 paragraph 앞 |
| `below` |
선택지 마지막 paragraph 다음 |
| `inline` |
stem_block의 image 위치 그대로 |
2. ParaShape 시험지 표준
현재 모든 문단 default(id=0). 시험지 표준 ParaShape 정의:
- 지문: 들여쓰기 + line spacing 160% (수능 폰트 정합)
- 선택지: left margin (~5mm) + 라벨 폭 일정
- 문제 간 간격: spacing before/after 분리
별도 모듈 `exam_styles.rs` 신설 권장.
3. Picture/BinData IR 빌드
placeholder `[이미지: ]` 텍스트 → 진짜 Picture control + BinData entry. 시각 출력은 #182 의존이므로 본 단계는 IR까지만.
Codex 권고 (#660 마무리 협의 결과)
진입 전 회귀 베이스라인 고정 필수:
- Picture/BinData를 텍스트 경로와 분리 설계
- `char_offsets`, `controls` 카운트 회귀 테스트 먼저 추가
- 텍스트 라운드트립(현재 14/14) 무회귀 보장
의존성
참조
DoD
- 4 placement 모두 IR 매핑 동작 (회귀 테스트)
- exam_styles.rs 정의 + 빌더 적용
- BinData 엔트리 생성 (시각 출력은 #182에서 검증)
- 본 단계 텍스트 라운드트립 무회귀 (14/14 → +N)
배경
#660 본 작업 1 + v2(#660 후속)으로 텍스트 위주 시험지 빌더 골격이 완성되었다. 본 단계는 시각적 정합성을 완성한다.
범위
1. Placement 4모드 IR 매핑
Placementenum이 schema·serde 모델에 이미 정의됨. 본 단계에서 빌더가 IR로 매핑.2. ParaShape 시험지 표준
현재 모든 문단 default(id=0). 시험지 표준 ParaShape 정의:
별도 모듈 `exam_styles.rs` 신설 권장.
3. Picture/BinData IR 빌드
placeholder `[이미지: ]` 텍스트 → 진짜 Picture control + BinData entry. 시각 출력은 #182 의존이므로 본 단계는 IR까지만.
Codex 권고 (#660 마무리 협의 결과)
진입 전 회귀 베이스라인 고정 필수:
의존성
참조
DoD