import {useSite} from '@/lib/site-context'; import {factualSummary} from '@/seo/meta'; import {essentialRows} from '@/lib/derive'; import {formatKoreanDate} from '@/lib/format'; /** * 핵심 정보 요약 — AEO 의 핵심 블록. * * AI 검색은 페이지 전체를 요약하지 않는다. "답이 될 만한 문장"을 찾아 그대로 인용한다. * 그래서 상단에 단정문을 둔다: "체크인은 16:00입니다." 형태. * 표(dl)로 두는 이유는 label-value 관계가 마크업으로 드러나야 기계가 짝을 짓기 때문이다. * * ★ 여기 나오는 값은 전부 확인된 fact 다. essentialRows() 가 걸러 준다. * ★ 마크업은 목업(/s/stay 의 `
`)에서 그대로 옮겼다. * 좌우 5:7 그리드에 왼쪽이 제목·요약, 오른쪽이 두 칸 표다. 제목은 h2 태그지만 h3 급으로 * 그린다 — 이 블록은 섹션이 아니라 히어로에 딸린 요약이라 같은 크기로 서면 위계가 무너진다. */ export function AnswerBlock() { const payload = useSite(); const rows = essentialRows(payload).slice(0, 6); const summary = payload.narrative.summary ?? factualSummary(payload); if (rows.length === 0 && !summary) return null; return (

한눈에 보는 {payload.place.name}

{/* 단정문 한 덩어리 — 인용되기 좋은 형태. */}

{summary}

{formatKoreanDate(payload.site.updatedAt)} 기준, 사업자가 확인한 정보입니다.

{rows.length > 0 && (
{rows.map((row) => (
{row.label}
{row.value}
))}
)}
); }