diff --git a/src/pages/subscription/Subscription.jsx b/src/pages/subscription/Subscription.jsx index 5a02495..a74c55e 100644 --- a/src/pages/subscription/Subscription.jsx +++ b/src/pages/subscription/Subscription.jsx @@ -742,7 +742,10 @@ function ProfileTab() { try { const data = await apiGet('/api/realestate/profile'); if (data && Object.keys(data).length > 0) { - setProfile({ ...DEFAULT_PROFILE, ...data }); + const display = { ...DEFAULT_PROFILE, ...data }; + if (Array.isArray(display.preferred_regions)) display.preferred_regions = display.preferred_regions.join(', '); + if (Array.isArray(display.preferred_types)) display.preferred_types = display.preferred_types.join(', '); + setProfile(display); } } catch (e) { console.error('Profile load error:', e); @@ -775,9 +778,24 @@ function ProfileTab() { payload[k] = null; } }); + // Convert comma-separated strings to arrays + payload.preferred_regions = typeof payload.preferred_regions === 'string' + ? payload.preferred_regions.split(',').map(s => s.trim()).filter(Boolean) + : (payload.preferred_regions || []); + payload.preferred_types = typeof payload.preferred_types === 'string' + ? payload.preferred_types.split(',').map(s => s.trim()).filter(Boolean) + : (payload.preferred_types || []); + // Send empty arrays as null + if (payload.preferred_regions.length === 0) payload.preferred_regions = null; + if (payload.preferred_types.length === 0) payload.preferred_types = null; + const updated = await apiPut('/api/realestate/profile', payload); if (updated && Object.keys(updated).length > 0) { - setProfile({ ...DEFAULT_PROFILE, ...updated }); + // Convert arrays back to comma-separated strings for display + const display = { ...DEFAULT_PROFILE, ...updated }; + if (Array.isArray(display.preferred_regions)) display.preferred_regions = display.preferred_regions.join(', '); + if (Array.isArray(display.preferred_types)) display.preferred_types = display.preferred_types.join(', '); + setProfile(display); } setMessage('저장 완료'); setTimeout(() => setMessage(''), 2000); @@ -789,6 +807,8 @@ function ProfileTab() { } }; + const reqMark = *; + if (loading) return
프로필
자격 조건과 선호 조건을 설정하면 공고 매칭에 활용됩니다.
+자격 조건과 선호 조건을 설정하면 공고 매칭에 활용됩니다. * 필수 입력