← 개발노트
eobom 절별 연관성구 + 장 배경 — QA 보고서
3.3 설정
- `package.json` `build`에 `cp -r data/reference/* .next/standalone/data/reference/` 추가 — 운영 누락 해소, 빌드 후 standalone 150M 복사 검증
- `package.json` scripts: `sync:reference`, `build:reference-db`
- `.gitignore`에 `data/reference/*.sqlite-shm`, `*.sqlite-wal` 추가
4.1 테스트 스위트
- **명령:** `bun run pretest && bun test tests/` (FTS 재생성 포함)
- **결과:** 403 pass / 0 fail (49 files, 1,198 expect) — 기존 회귀 없음
- **신규:** `tests/reference.test.ts` 6 pass — CSV 헤더/`source_ref`/`license`, 678,162 lines, `GEN 1:1=123`, 라이선스 혼합, by-verse 29,383, `ko 1,171/en 1,189`
- **주의:** `node:sqlite`는 bun 미지원이라 `crossrefs.ts` 직접 테스트는 불가 — CSV/JSON 파일 검증으로 대체하고 `node -e`에서 `DatabaseSync` 카운트(123/197)로 교차 검증
4.2 타입·린트·빌드
- `npx tsc --noEmit` 0, `npm run lint` 0
- `next build` 1회 실패 → 수정 후 성공:
4.5 UI·접근성·취향
- `entries/[id]/page.tsx` — `excerpt` 단일 `<p>` → `ScripturePassageCard`로 `verse 번호(mono text-label-xs) + text-body-lg` per-verse 분해, 각 절 내부가 아니라 passage 단위 `PassageAnnotationList` 1회로 grouped 조회해 절별 `details`에 분배 (N+1 → 1 개선)
- `ChapterBackgroundCard` — 첫 성구 기준 1개가 성구 카드들 위에 노출, `overview(gold-soft)` + `historical/theological` 2컬럼 + `literary/cautions` + 출처
- 빈 블록: 연관 0개면 `details` 미렌더(조용함 유지), 과밀 197개도 8개 미리보기 + `외 N개는 CSV에서 확인`
- 접근성: `details/summary` 키보드 포커스, 44px 타깃, prose는 `text-body-lg leading-relaxed`
- CSV 한 줄=한 링크 edge-list ✅
- 사람 읽기 `GEN 1:1`/`GEN 1:1-3` + 기계용 `GEN/1/1` 동시 보유 ✅
- `license`/`source_name` 컬럼 포함 ✅
- verse별 annotation (장 단위만이 아님) ✅
- **선택:** 대용량 `data/reference/` 150M 일반 커밋 시 클론 무거움 — `.gitattributes` LFS 또는 CI에서 `sync:reference` 재생성 중 택1 고려. 현재는 직접 커밋 전제.
- **선택:** `tests/reference.test.ts`를 `node:sqlite` 직접 검증으로 승격 — bun이 `node:sqlite`를 지원하면 `DatabaseSync` 카운트 케이스 추가.
- **선택:** `reread-scripture-list.tsx`에도 동일 grouped 주석 확장 — 1차는 상세만, 2차에 적용.