Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions app/ai-chat/chat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,12 +180,24 @@ export default function AIChatScreen() {
return;
}

// 로그인 확인
const accessToken = tokens?.accessToken;
if (!accessToken) {
const errorMessage: Message = {
id: Date.now().toString(),
text: '여행 계획을 저장하려면 로그인이 필요합니다.',
isUser: false,
timestamp: new Date(),
};
setMessages(prev => [...prev, errorMessage]);
return;
}

try {
setIsLoading(true);
console.log('=== 여행 계획 저장 시작 ===');
console.log('travel_id:', currentTravelId);

const accessToken = tokens?.accessToken;
await saveTravelPlan(currentTravelId, accessToken);

// 저장 완료 표시
Expand All @@ -203,10 +215,10 @@ export default function AIChatScreen() {
};
setMessages(prev => [...prev, savedMessage]);
} catch (error: any) {
console.log('저장 실패:', error);
console.error('저장 실패:', error);
const errorMessage: Message = {
id: Date.now().toString(),
text: '저장에 실패했습니다. 다시 시도해주세요.',
text: `저장에 실패했습니다.\n${error.message || '다시 시도해주세요.'}`,
isUser: false,
timestamp: new Date(),
};
Expand Down
14 changes: 11 additions & 3 deletions services/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,7 @@ export const saveTravelPlan = async (
): Promise<any> => {
console.log('=== 여행 계획 저장 시작 ===');
console.log('travel_id:', travelId);
console.log('accessToken:', accessToken ? 'Present' : 'Missing');

const headers: Record<string, string> = {
'Content-Type': 'application/json',
Expand All @@ -702,8 +703,15 @@ export const saveTravelPlan = async (

if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
console.log('저장 실패:', errorData);
throw new Error(errorData.detail || `저장 실패: ${response.status}`);
console.error('저장 실패:', errorData);
console.error('Status:', response.status);

// 401 Unauthorized 처리
if (response.status === 401) {
throw new Error('인증이 필요합니다. 로그인 후 다시 시도해주세요.');
}

throw new Error(errorData.detail || errorData.message || `저장 실패: ${response.status}`);
}

const result = await response.json();
Expand All @@ -712,7 +720,7 @@ export const saveTravelPlan = async (

// FastAPI가 200으로 응답하더라도 실제 결과 확인
if (result.success === false) {
console.log('Spring Boot 저장 실패:', result);
console.error('Spring Boot 저장 실패:', result);
throw new Error(result.error || result.detail || '저장에 실패했습니다.');
}

Expand Down