fix(floor-plan): PDF 외곽선 추출 기준을 지붕 투영면 → 1층 외벽 외주(壁芯)로 변경
[작업내용] : - 캔버스 '외벽선'은 벽면인데 프롬프트가 처마(軒の出) 포함 지붕 투영면을 추출해 평면도 치수보다 사방 처마 출폭만큼 길게 표시되던 문제 수정 (2026-05-29 지붕투영면 결정을 사용자 지시로 번복) - BASE_PROMPT: 平面図(1F) 외벽 외주를 치수선(壁芯) 기준으로 추출, 처마·케라바 가산 금지, 屋根伏図는 지붕형상 판별·처마 출폭 확인용(평면도 부재 시 軒の出 감산 fallback), 포치·발코니 제외 - buildPrompt 페이지 힌트 문구도 외벽 외곽선 기준으로 정합 - 실호출 검증(박공지붕_1.pdf): 양 provider(fable-5/gemini-3.1) 정점 단위 동일 10점 폴리곤, 면적 72.0㎡ = 求積図 구획 합계 일치, 처마 가산 소멸 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
22d690655b
commit
584c0a3238
@ -28,15 +28,16 @@ const isRateLimited = (key) => {
|
||||
return false
|
||||
}
|
||||
|
||||
const BASE_PROMPT = `당신은 일본 주택 건축 도면에서 "지붕 투영면(屋根伏図 footprint)" 외곽선을 추출하는 전문가입니다.
|
||||
첨부된 PDF 에서 지붕을 위에서 내려다본 외곽(처마 끝선 포함) 폴리곤 좌표를 추출하여 JSON 으로만 응답하세요.
|
||||
const BASE_PROMPT = `당신은 일본 주택 건축 도면에서 1층 외벽(外壁) 외곽선을 추출하는 전문가입니다.
|
||||
첨부된 PDF 에서 건물을 위에서 내려다본 1층 외벽 외주 폴리곤 좌표를 추출하여 JSON 으로만 응답하세요.
|
||||
|
||||
[도면 종류 식별 — 매우 중요]
|
||||
- 추출 대상: 屋根伏図(지붕평면도)가 있으면 그 지붕 외곽선(처마/軒先·케라바/ケラバ 끝선 포함)을 사용합니다.
|
||||
- 屋根伏図 가 없으면 平面図(1층/1階 평면도)의 외벽 외주에 처마 출폭(軒の出)을 더한 지붕 투영 외곽을 추정합니다.
|
||||
- 추출 대상: 平面図(1층/1階 평면도)의 외벽 외주 폴리곤입니다. 치수선(寸法線)에 적힌 숫자(통상 壁芯 기준)와 일치하도록 좌표를 구성하세요.
|
||||
- ⚠️ 처마(軒の出/軒先)·케라바(ケラバ) 등 지붕 돌출분을 절대 더하지 마세요. 지붕 투영면이 아니라 벽면 외곽을 추출합니다.
|
||||
- 平面図 가 없고 屋根伏図(지붕평면도)만 있으면, 지붕 외곽의 각 변에서 도면에 적힌 처마 출폭(軒の出)을 빼서 외벽 외주를 추정합니다.
|
||||
- 절대 사용 금지: 立面図(입면도)·配置図(배치도)·求積図(면적도)·断面図(단면도). 이 도면들에서는 윤곽을 추출하지 마세요.
|
||||
- 도머(ドーマー)·천창·개구부(開口部) 등 지붕 위 돌출/구멍은 외곽선에 포함하지 마세요(외곽 윤곽이 아닙니다).
|
||||
- 평면도가 여러 층이면 1층(1F) 기준으로 지붕 투영을 판단합니다.
|
||||
- 현관 포치·バルコニー 등 외벽 몸체 바깥의 부속 돌출과 도머(ドーマー)·천창 등 지붕 위 요소는 외곽선에 포함하지 마세요.
|
||||
- 평면도가 여러 층이면 1층(1F) 외벽을 기준으로 합니다.
|
||||
|
||||
[축척·치수 결정 — 우선순위]
|
||||
1. 도면에 적힌 寸法線(치수선)의 실제 mm 숫자를 최우선 근거로 좌표를 환산합니다.
|
||||
@ -52,7 +53,7 @@ const BASE_PROMPT = `당신은 일본 주택 건축 도면에서 "지붕 투영
|
||||
4. 자기교차가 없는 단순 폴리곤이어야 하며, 정점은 3개 이상이어야 합니다.
|
||||
5. L자·凹凸(요철) 평면의 모든 꺾임을 정점으로 보존하고, 직각(直角)에 가까운 코너는 직각으로 간주합니다(비스듬히 근사 금지).
|
||||
6. 분리된 복수 동(棟)이 있으면 가장 큰 주 건물 하나만 반환하고, 별동은 notes 에 기재합니다.
|
||||
7. 지붕 투영을 추출할 수 없으면 outerline 을 빈 배열로 반환하고 notes 에 사유를 적습니다.
|
||||
7. 외벽 외주를 추출할 수 없으면 outerline 을 빈 배열로 반환하고 notes 에 사유를 적습니다.
|
||||
|
||||
[지붕형상 판독 — 屋根伏図 棟·軒先 + 立面図 보조]
|
||||
- 屋根伏図의 棟(용마루) 위치·개수와 軒先(처마)가 흘러내리는 방향으로 지붕 유형을 판별합니다.
|
||||
@ -90,13 +91,13 @@ const buildPrompt = ({ pageMode, facadePages, floorPages, splitInfo } = {}) => {
|
||||
if (splitInfo.floorCount > 0) segs.push(`평면도/지붕평면도 ${splitInfo.floorCount}장`)
|
||||
if (splitInfo.facadeCount > 0) segs.push(`입면도 ${splitInfo.facadeCount}장`)
|
||||
const compo = `첨부 PDF 는 ${segs.join('과 ')}으로 구성됩니다(평면도가 앞).`
|
||||
return `${BASE_PROMPT}\n\n${compo} 외곽선은 평면도/지붕평면도 페이지에서만 추출하세요. 입면도 페이지는 외곽선 추출에 쓰지 말고, 높이·층수와 지붕 棟방향·경사 방향(지붕형상 판별) 참고로만 사용하세요.`
|
||||
return `${BASE_PROMPT}\n\n${compo} 외벽 외곽선은 평면도 페이지에서 추출하세요(지붕평면도 페이지는 지붕형상 판별·처마 출폭 확인용). 입면도 페이지는 외곽선 추출에 쓰지 말고, 높이·층수와 지붕 棟방향·경사 방향(지붕형상 판별) 참고로만 사용하세요.`
|
||||
}
|
||||
if (pageMode === 'specify' && (facadePages || floorPages)) {
|
||||
const hints = []
|
||||
if (floorPages) hints.push(`평면도(平面図)·지붕평면도(屋根伏図) 페이지: ${floorPages}`)
|
||||
if (facadePages) hints.push(`입면도(立面図) 페이지: ${facadePages}`)
|
||||
return `${BASE_PROMPT}\n\n페이지 힌트: ${hints.join(' / ')}. 입면도 페이지는 외곽선 추출에 쓰지 말고 높이·층수와 지붕 棟방향·경사 방향(지붕형상 판별) 참고로만 사용하세요. 지붕 투영 외곽선은 지정된 평면도/지붕평면도 페이지 기준으로 추출하세요.`
|
||||
return `${BASE_PROMPT}\n\n페이지 힌트: ${hints.join(' / ')}. 입면도 페이지는 외곽선 추출에 쓰지 말고 높이·층수와 지붕 棟방향·경사 방향(지붕형상 판별) 참고로만 사용하세요. 외벽 외곽선은 지정된 평면도 페이지 기준으로 추출하세요(지붕평면도 페이지는 지붕형상 판별·처마 출폭 확인용).`
|
||||
}
|
||||
return BASE_PROMPT
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user