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:
@@ -11,12 +11,19 @@ export type StoreFormState = {
|
||||
fieldValues?: {
|
||||
listingTitle?: string;
|
||||
regionClusterCode?: string;
|
||||
industryMajorCode?: string;
|
||||
industryLeafCode?: string;
|
||||
roadAddress?: string;
|
||||
depositAmount?: string;
|
||||
monthlyRentAmount?: string;
|
||||
premiumAmount?: string;
|
||||
remainingLeaseMonths?: string;
|
||||
monthlySalesAmount?: string;
|
||||
monthlyProfitAmount?: string;
|
||||
startupCostAmount?: string;
|
||||
listingDescription?: string;
|
||||
locationHighlight?: string;
|
||||
saleReason?: string;
|
||||
exclusiveAreaSqm?: string;
|
||||
floorLevel?: string;
|
||||
kitchenEquipmentSummary?: string;
|
||||
@@ -29,12 +36,21 @@ export async function createStoreDraftAction(
|
||||
): Promise<StoreFormState> {
|
||||
const listingTitle = (formData.get('listingTitle') as string | null)?.trim() ?? '';
|
||||
const regionClusterCode = (formData.get('regionClusterCode') as string | null) ?? '';
|
||||
const industryMajorCode = (formData.get('industryMajorCode') as string | null) ?? '';
|
||||
const industryLeafCode = (formData.get('industryLeafCode') as string | null) ?? '';
|
||||
const roadAddress = (formData.get('roadAddress') as string | null)?.trim() ?? '';
|
||||
const depositAmount = formData.get('depositAmount') as string | null;
|
||||
const monthlyRentAmount = formData.get('monthlyRentAmount') as string | null;
|
||||
const premiumAmount = formData.get('premiumAmount') as string | null;
|
||||
const remainingLeaseMonths = formData.get('remainingLeaseMonths') as string | null;
|
||||
const monthlySalesAmount = formData.get('monthlySalesAmount') as string | null;
|
||||
const monthlyProfitAmount = formData.get('monthlyProfitAmount') as string | null;
|
||||
const startupCostAmount = formData.get('startupCostAmount') as string | null;
|
||||
const listingDescription =
|
||||
(formData.get('listingDescription') as string | null)?.trim() ?? '';
|
||||
const locationHighlight =
|
||||
(formData.get('locationHighlight') as string | null)?.trim() ?? '';
|
||||
const saleReason = (formData.get('saleReason') as string | null)?.trim() ?? '';
|
||||
const exclusiveAreaSqm = formData.get('exclusiveAreaSqm') as string | null;
|
||||
const floorLevel = formData.get('floorLevel') as string | null;
|
||||
const kitchenEquipmentSummary =
|
||||
@@ -43,12 +59,19 @@ export async function createStoreDraftAction(
|
||||
const fieldValues = {
|
||||
listingTitle,
|
||||
regionClusterCode,
|
||||
industryMajorCode,
|
||||
industryLeafCode,
|
||||
roadAddress,
|
||||
depositAmount: depositAmount ?? undefined,
|
||||
monthlyRentAmount: monthlyRentAmount ?? undefined,
|
||||
premiumAmount: premiumAmount ?? undefined,
|
||||
remainingLeaseMonths: remainingLeaseMonths ?? undefined,
|
||||
monthlySalesAmount: monthlySalesAmount ?? undefined,
|
||||
monthlyProfitAmount: monthlyProfitAmount ?? undefined,
|
||||
startupCostAmount: startupCostAmount ?? undefined,
|
||||
listingDescription,
|
||||
locationHighlight,
|
||||
saleReason,
|
||||
exclusiveAreaSqm: exclusiveAreaSqm ?? undefined,
|
||||
floorLevel: floorLevel ?? undefined,
|
||||
kitchenEquipmentSummary,
|
||||
@@ -59,6 +82,15 @@ export async function createStoreDraftAction(
|
||||
return { error: '로그인이 필요합니다.', fieldValues };
|
||||
}
|
||||
|
||||
const hasSale =
|
||||
premiumAmount ||
|
||||
monthlySalesAmount ||
|
||||
monthlyProfitAmount ||
|
||||
startupCostAmount ||
|
||||
listingDescription ||
|
||||
locationHighlight ||
|
||||
saleReason;
|
||||
|
||||
const input: CreateStoreDraftInput = {
|
||||
ownerUserId: session.user.dbId,
|
||||
listingTitle,
|
||||
@@ -77,6 +109,19 @@ export async function createStoreDraftAction(
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
...(hasSale
|
||||
? {
|
||||
sale: {
|
||||
premiumAmount: premiumAmount ? Number(premiumAmount) : undefined,
|
||||
monthlySalesAmount: monthlySalesAmount ? Number(monthlySalesAmount) : undefined,
|
||||
monthlyProfitAmount: monthlyProfitAmount ? Number(monthlyProfitAmount) : undefined,
|
||||
startupCostAmount: startupCostAmount ? Number(startupCostAmount) : undefined,
|
||||
listingDescription: listingDescription || undefined,
|
||||
locationHighlight: locationHighlight || undefined,
|
||||
saleReason: saleReason || undefined,
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
...(exclusiveAreaSqm || floorLevel || kitchenEquipmentSummary
|
||||
? {
|
||||
facility: {
|
||||
|
||||
Reference in New Issue
Block a user