feat: 블로그·정보 페이지 추가 및 매매정보 도메인 확장
Deploy Startover / deploy (push) Failing after 0s

AdSense 승인을 위한 콘텐츠 인프라와 점포라인형 매매 정보 모델을 도입.

- 업종 분류 확장: 7개 대분류(휴게음식점/일반음식점/주류점/오락스포츠/판매업/서비스업/기타업종) 하위 소분류
- StoreSale 모델 추가: 월매출·월수익·창업비용·매물설명·입지특징·매매사유
- 매장 검색 카드 재설계(대표 사진 + 권리금 + 월수익), 등록/상세 페이지 매매정보 섹션
- 블로그 시스템: 17개 포스트(폐업/창업/지원금/인테리어), /blog, /blog/[slug]
- 정보 페이지: /about, /terms, /privacy, /faq, /contact
- SEO: sitemap.ts, robots.ts, 페이지별 메타데이터, Article·FAQ JSON-LD, OG 태그
- 주소 라벨 도로명 주소 → 주소

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
chpark
2026-04-17 10:52:21 +09:00
parent 2b6de14064
commit df7857a8ef
43 changed files with 7096 additions and 2996 deletions
+21
View File
@@ -541,6 +541,7 @@ model Store {
policyVersion PolicyVersion? @relation(fields: [policyVersionId], references: [id])
lease StoreLease?
sale StoreSale?
facility StoreFacility?
lifecycle StoreLifecycle?
photos StorePhoto[]
@@ -575,6 +576,26 @@ model StoreLease {
@@map("store_leases")
}
/// 매매 정보 (권리금/월매출/월수익/창업비용/매물설명 등) (Store 1:1 확장)
model StoreSale {
id BigInt @id @default(autoincrement()) @map("id")
storeId BigInt @unique @map("store_id")
premiumAmount Decimal? @map("premium_amount") @db.Decimal(14, 2)
monthlySalesAmount Decimal? @map("monthly_sales_amount") @db.Decimal(14, 2)
monthlyProfitAmount Decimal? @map("monthly_profit_amount") @db.Decimal(14, 2)
startupCostAmount Decimal? @map("startup_cost_amount") @db.Decimal(14, 2)
listingDescription String? @map("listing_description")
locationHighlight String? @map("location_highlight")
saleReason String? @map("sale_reason")
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(6)
// Relations
store Store @relation(fields: [storeId], references: [id])
@@map("store_sales")
}
/// F&B 필터링과 인수 판단에 필요한 설비 정보 (Store 1:1 확장)
/// CHECK constraint: exclusiveAreaSqm > 0 (custom SQL migration)
model StoreFacility {