diff --git a/public/google60b514c02fd6af4e.html b/public/google60b514c02fd6af4e.html deleted file mode 100644 index 968a1e3..0000000 --- a/public/google60b514c02fd6af4e.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: google60b514c02fd6af4e.html \ No newline at end of file diff --git a/public/naver33dfe258205b0af1416aa0ac18c8c0b3.html b/public/naver33dfe258205b0af1416aa0ac18c8c0b3.html deleted file mode 100644 index e37cfc0..0000000 --- a/public/naver33dfe258205b0af1416aa0ac18c8c0b3.html +++ /dev/null @@ -1 +0,0 @@ -naver-site-verification: naver33dfe258205b0af1416aa0ac18c8c0b3.html \ No newline at end of file diff --git a/public/privacy.html b/public/privacy.html deleted file mode 100644 index 5e99ead..0000000 --- a/public/privacy.html +++ /dev/null @@ -1,71 +0,0 @@ - - -
- - -시행일: 2026년 5월 7일 | 최종 수정일: 2026년 5월 7일
- -㈜에이아이오투오(이하 "회사")는 AI 마케팅 자동화 서비스 ADO2(이하 "서비스")를 제공함에 있어 사용자의 개인정보를 중요시하며, 「개인정보 보호법」 등 관련 법령을 성실히 준수합니다.
- -회사는 서비스 제공을 위해 아래와 같은 개인정보를 수집합니다.
-[Google API 서비스 사용자 데이터 정책 준수]
- ㈜에이아이오투오가 운영하는 ADO2 서비스가 Google API로부터 수신한 정보의 사용 및 타 앱으로의 전송은,
- Google API 서비스 사용자 데이터 정책의
- 제한적 사용(Limited Use) 요건을 포함한 모든 정책을 엄격히 준수합니다.
원칙적으로 회원 탈퇴 또는 개인정보 수집·이용 목적이 달성된 후에는 해당 정보를 지체 없이 파기합니다. 단, 관련 법령에 따라 보존이 필요한 경우 해당 기간 동안 보관합니다.
-회사는 사용자의 사전 동의 없이 개인정보를 외부에 제공하지 않습니다. 다만, 법령에 의거한 수사기관 등의 적법한 요청이 있는 경우는 예외로 합니다.
- -사용자는 언제든지 자신의 개인정보에 대한 열람, 수정, 삭제, 처리 정지를 요청할 수 있습니다. 서비스 내 계정 설정에서 직접 처리하거나 아래 문의처로 연락해 주시기 바랍니다.
- -개인정보 보호와 관련된 불만 처리 및 피해 구제에 관한 사항은 아래로 문의해 주시기 바랍니다.
-본 방침은 2026년 5월 7일부터 시행됩니다.
- - \ No newline at end of file diff --git a/public/terms.html b/public/terms.html deleted file mode 100644 index 3875de8..0000000 --- a/public/terms.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - -시행일: 2026년 5월 7일 | 최종 수정일: 2026년 5월 7일
- -본 약관은 ㈜에이아이오투오(이하 "회사")가 제공하는 AI 마케팅 자동화 서비스 ADO2(이하 "서비스")의 이용과 관련하여, 회사와 이용자(이하 "회원") 간의 권리, 의무 및 책임사항을 규정함을 목적으로 합니다.
- -회사는 본 약관의 내용을 서비스 화면에 게시하며, 관련 법령을 위배하지 않는 범위에서 약관을 개정할 수 있습니다. 약관이 변경되는 경우 시행일 7일 전부터 공지합니다.
- -회사는 AI 기반 마케팅 콘텐츠(가사, 이미지, 영상 등) 자동 생성, Google·YouTube 등 외부 플랫폼 연동, SNS 자동 배포 등의 서비스를 제공합니다. 운영상·기술상의 필요에 따라 서비스의 전부 또는 일부를 변경할 수 있습니다.
- -서비스는 Google, YouTube, Naver 등의 제3자 API를 활용하여 마케팅 자동화 기능을 제공합니다. 회원은 각 외부 서비스의 이용약관 및 정책을 준수할 의무가 있으며, 외부 API 제공사의 정책 변경으로 인한 서비스 제한에 대해 회사는 면책됩니다.
- -서비스 내에서 AI가 생성한 콘텐츠에 대한 권리 관계는 관련 법령 및 회사의 별도 정책에 따릅니다. 회원이 직접 입력한 정보(매장 URL, 상호명 등)를 기반으로 생성된 콘텐츠에 대한 책임은 회원에게 있습니다.
- -회사는 천재지변, 외부 플랫폼(Google, YouTube, Naver 등)의 장애, 통신 장애 등 불가항력으로 서비스를 제공할 수 없는 경우 책임이 면제됩니다.
- -본 약관과 관련된 분쟁은 대한민국 법을 준거법으로 하며, 소송은 회사의 소재지를 관할하는 법원에 제소합니다.
- -본 약관은 2026년 5월 7일부터 시행됩니다.
- - \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 279fe8d..30953e8 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -275,8 +275,7 @@ const App: React.FC = () => { setIsAnalysisComplete(true); } catch (err) { console.error('Crawling failed:', err); - const errorMessage = err instanceof Error ? err.message : t('app.analysisError'); - setError(errorMessage); + setError(t('app.analysisError')); setViewMode('landing'); } }; @@ -301,9 +300,7 @@ const App: React.FC = () => { setIsAnalysisComplete(true); } catch (err) { console.error('Autocomplete failed:', err); - const is404 = err instanceof Error && err.message.includes('status: 404'); - const errorMessage = is404 ? t('app.autocompleteError') : (err instanceof Error ? err.message : t('app.autocompleteGeneralError')); - setError(errorMessage); + setError(t('app.autocompleteError')); setViewMode('landing'); } }; diff --git a/src/locales/en.json b/src/locales/en.json index 96ab94f..848bfa7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -550,8 +550,8 @@ "kakaoLoginFailed": "Kakao login failed. Please try again.", "loginUrlFailed": "Failed to get login URL. Please try again.", "invalidUrl": "Invalid URL. Please enter a Naver Map URL.", - "analysisError": "An error occurred during analysis. Please try again.", - "autocompleteError": "Failed to retrieve business information. Please enter the URL directly.", + "analysisError": "No results found. Please check your input and try again.", + "autocompleteError": "No results found. Please check your input and try again.", "autocompleteGeneralError": "An error occurred while retrieving business information. Please try again.", "pageComingSoon": "{{page}} page is coming soon." } diff --git a/src/locales/ko.json b/src/locales/ko.json index 577d754..aee7f29 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -550,8 +550,8 @@ "kakaoLoginFailed": "카카오 로그인에 실패했습니다. 다시 시도해주세요.", "loginUrlFailed": "로그인 URL을 가져오는데 실패했습니다. 다시 시도해주세요.", "invalidUrl": "유효하지 않은 URL입니다. 네이버 지도 URL을 입력해주세요.", - "analysisError": "분석 중 오류가 발생했습니다. 다시 시도해주세요.", - "autocompleteError": "업체 정보 조회에 실패했습니다. URL을 직접 입력해주세요.", + "analysisError": "검색 정보를 찾을 수 없습니다. 입력 정보를 다시 확인해주세요.", + "autocompleteError": "검색 정보를 찾을 수 없습니다. 입력 정보를 다시 확인해주세요.", "autocompleteGeneralError": "업체 정보 조회 중 오류가 발생했습니다. 다시 시도해주세요.", "pageComingSoon": "{{page}} 페이지 준비 중입니다." } diff --git a/src/pages/Dashboard/CompletionContent.tsx b/src/pages/Dashboard/CompletionContent.tsx index 9315678..2322fc2 100755 --- a/src/pages/Dashboard/CompletionContent.tsx +++ b/src/pages/Dashboard/CompletionContent.tsx @@ -364,6 +364,7 @@ const CompletionContent: React.FC{lyricsText}
; + if (!songCompletionData) { + return{t('completion.sampleLyrics')}
; } - const lines = lyricsText.split('\n').filter((l: string) => l.trim()); + if (!songCompletionData.lyrics) { + return{t('completion.noLyricsBGM')}
; + } + const lines = songCompletionData.lyrics.split('\n').filter((l: string) => l.trim()); const size = Math.ceil(lines.length / 3); const sections = [ { tag: '[Verse]', lines: lines.slice(0, size) }, diff --git a/src/pages/Dashboard/GenerationFlow.tsx b/src/pages/Dashboard/GenerationFlow.tsx index 0709821..5eb79c0 100755 --- a/src/pages/Dashboard/GenerationFlow.tsx +++ b/src/pages/Dashboard/GenerationFlow.tsx @@ -130,6 +130,13 @@ const GenerationFlow: React.FC