[작업내용] :
- matchRoofShapePattern(descriptor)→shapeNum|null 순수 함수 설계
- 매칭 키 flows 집합(1차) + type/ridge guard(모순 거부)
- 폴백 null(4 비반환), confidence 무시 — UX 정책은 C 단계 위임
- 검증: scratchpad .mjs 불변식 하니스 8종
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
[작업내용] :
- PDF 분석→지붕형상 자동 매칭의 선행 단계로 8패턴 카탈로그 설계 정의
- 매칭 키: type+ridge+flows(화면축) 시그니처, flows 집합만으로 8패턴 유일 식별
- 5~8 화면축↔버튼 매핑을 useRoofShapeSetting case 4~8 에서 1:1 전사
- 매칭 함수·PDF 분석 확장은 다음 작업으로 분리(계약만 명시)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- '읽기 페이지 설정'의 평면도/입면도 페이지 번호가 프롬프트 힌트로만 쓰이고
PDF 전체가 Gemini 로 전송되던 문제 해결 — pdf-lib 로 지정 페이지만 잘라 전송
- 분할본이 12MB 이하면 inlineData(base64) 즉시 전송 → Files API 업로드·폴링 제거,
초과 시에만 Files API 로 fallback
- 분할 시 buildPrompt 를 페이지번호 힌트 대신 평면도/입면도 순서 매핑으로 전환
- 유효 페이지 0개 → 422 INVALID_PAGE_RANGE, 분할 실패 → 422 PDF_SPLIT_FAILED
- 설계 문서 추가(docs/superpowers/specs/2026-06-21-pdf-page-split-design.md)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>