survey에서 value가 아직도 budget-4등 구형 키입니다. 또한 expert-presets.ts의 모든 프리셋 priceRange가 "low", "mid-low", "mid", "high", "premium" 구형 키로 되어 있습니다. 이 모두를 새 6단계 키로 업데이트해야 합니다.
이제 전체가 보입니다. survey value는 이미 올바릅니다. 핵심 문제는 expert-presets.ts의 ExpertPreset 타입과 모든 프리셋의 priceRange 값이 구형 키라는 겁니다. 가격 기준으로 새 6단계 키로 전부 업데이트합니다.
BEFORE (1-82줄):
"low" | "mid-low" | "mid" | "high" | "premium""low", 100-200만원대 "mid-low", 200만원대 "mid", 300만원대 "high", 350만원대 "premium"AFTER:
"mid-low" | "mid-a" | "mid-b" | "mid-c" | "mid-d" | "high""mid-low", 100-150만원대="mid-a", 150-200만원대="mid-b", 200-250만원대="mid-c", 250-300만원대="mid-d", 300만원 이상="high"이제 findMatchingPresets에서 fallback도 업데이트합니다.
좋습니다. findMatchingPresets의 budgetRanges와 fallback은 정상입니다. 이제 ai-parts-manager.ts의 구형 타입도 확인해서 업데이트합니다.
수정 요약 (BEFORE → AFTER):
| 파일 | 수정 내용 |
|---|---|
lib/expert-presets.ts | ExpertPreset 타입 priceRange를 6단계 새 키로 변경. 모든 71개 프리셋의 priceRange를 실제 가격 기준(50-100=mid-low, 100-150=mid-a, 150-200=mid-b, 200-250=mid-c, 250-300=mid-d, 300이상=high)으로 재분류 |
lib/ai-parts-manager.ts | AIRecommendationRequest.budget_range 타입과 getBudgetRange() 함수를 6단계 새 키로 업데이트 |
이제 설문에서 mid-a(100-150만원)를 선택하면 expert-presets의 priceRange: "mid-a" 프리셋이 정확히 매칭됩니다. 구형 키(budget-4, low, mid 등) 호환 매핑은 findMatchingPresets와 budgetCeilings에 이미 남아있어 혹시 남은 구형 URL도 처리됩니다.
이제 전체 상황이 파악됩니다. 세 가지 사안을 보고합니다.
budgetCeilings— preset-based-recommender.ts에 없음 확인첨부해주신 파일을 보면 recommendFromPresets 함수 내부에 budgetCeilings 코드가 없습니다. 제가 수정했던 코드가 반영이 안 된 것입니다. 현재 파일을 읽어서 직접 추가합니다.
recommend-result/page.tsx의 getRecommendedPC() 함수(약 380~530줄)에서 performance, gaming, productivity, value, overall 수치와 pros, considerations, bestFor, rating이 purpose별로 전부 하드코딩되어 있습니다. 이 부분은 별도 작업이 필요하므로 일단 보고만 합니다.
survey 149~197줄을 보면 디자인 선호도 6개 옵션이 이미 텍스트 내용대로 정확히 들어가 있습니다.
지금 1번 문제(budgetCeilings 누락)를 수정합니다.
BEFORE (recommendFromPresets 내부, 프리셋 for loop 바로 위):
// 2. 각 프리셋을 실제 부품으로 매칭 시도 (예산 필터는 findMatchingPresets의 priceRange로 이미 처리됨)
for (const preset of matchingPresets) {
const components = matchComponentsFromPreset(preset, firebaseData, size)
if (components) {
const hasCpu = components.cpu !== undefined
const hasRam = components.memory !== undefined
const componentCount = Object.keys(components).length
if (hasCpu && hasRam && componentCount >= 3) {
const componentKeys = Object.keys(components)
const totalPrice = Object.values(components).reduce((sum, c) => sum + (c?.price || 0), 0)
console.log(`[v0] 프리셋 ${preset.id} 매칭 성공! ...`)
...
return componentsAFTER:
// 예산 상한 (총 부품 가격 기준)
const budgetCeilings: Record<string, number> = {
"mid-low": 1000000,
"mid-a": 1500000,
"mid-b": 2000000,
"mid-c": 2500000,
"mid-d": 3000000,
"high": 99999999,
"budget-1": 1000000, "budget-2": 1500000, "budget-3": 2000000,
"budget-4": 2500000, "budget-5": 3000000, "budget-6": 99999999,
"low": 1000000, "mid": 2000000, "mid-high": 3000000, "premium": 99999999,
}
const budgetCeiling = budgetCeilings[budget] ?? 99999999
console.log(`[v0] 예산 상한: ${budgetCeiling.toLocaleString()}원`)
// 2. 각 프리셋을 실제 부품으로 매칭 시도
for (const preset of matchingPresets) {
const components = matchComponentsFromPreset(preset, firebaseData, size)
if (components) {
const hasCpu = components.cpu !== undefined
const hasRam = components.memory !== undefined
const componentCount = Object.keys(components).length
if (hasCpu && hasRam && componentCount >= 3) {
const totalPrice = Object.values(components).reduce((sum, c) => sum + (c?.price || 0), 0)
if (totalPrice > budgetCeiling) {
console.log(`[v0] 예산 초과 (${totalPrice.toLocaleString()}원 > ${budgetCeiling.toLocaleString()}원), 다음 프리셋 시도`)
continue
}
...
return components읽은 내용을 분석합니다.
1번: 실제 프로젝트 파일(lib/preset-based-recommender.ts)에는 budgetCeilings가 이미 들어가 있습니다. 사용자가 업로드한 txt 파일은 이전 버전입니다. 현재 프로젝트 파일은 정상입니다.
2번: recommend-result/page.tsx의 gaming, creative, office, streaming 케이스에서 performance 수치, pros, considerations, bestFor, rating이 전부 하드코딩되어 있습니다. 이건 별도로 알려드렸으니 다음 작업으로 처리합니다.
3번: 설문 디자인 옵션 6개는 이미 들어가 있지만, 텍스트에 있는 느낌/추천 상세 설명이 빠져 있습니다. 지금 추가합니다.
BEFORE (design step description들):
description: "앞면과 옆면 모두 투명 유리 — RGB 조명을 극대화하고 내부가 훤히 보이는 화려한 스타일",AFTER: 각 옵션에 느낌과 추천 문구를 서브텍스트로 추가
세 가지 확인 결과입니다.
recommend-result/page.tsx의 gaming/creative/office/streaming 각 케이스에서 performance 수치, pros, considerations, bestFor, rating이 전부 하드코딩되어 있습니다. 이 부분은 실제 추천 부품 기반으로 동적 계산하도록 별도 수정이 필요합니다. 말씀해주시면 바로 작업합니다.description에 텍스트 파일의 느낌/추천 문구를 추가했습니다 (예: "내 컴퓨터가 방 안의 화려한 주인공이 되었으면 좋겠다").You can send messages while the preview loads