From c2f8af20a8ca51d1c99f42a7c5bc9a501a1adfcc Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE Date: Thu, 3 Apr 2025 13:58:50 +0900 Subject: [PATCH 01/25] =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/logo192.png | Bin 5347 -> 0 bytes public/logo512.png | Bin 9664 -> 0 bytes src/App.js | 18 ++---------------- src/global.css | 0 4 files changed, 2 insertions(+), 16 deletions(-) delete mode 100755 public/logo192.png delete mode 100755 public/logo512.png create mode 100644 src/global.css diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100755 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/src/App.js b/src/App.js index 3784575..20a3459 100755 --- a/src/App.js +++ b/src/App.js @@ -1,23 +1,9 @@ -import logo from './logo.svg'; -import './App.css'; +import React from "react"; +import "./App.css"; function App() { return (
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
); } diff --git a/src/global.css b/src/global.css new file mode 100644 index 0000000..e69de29 From 813da9c987611256c537aeaf6b879f053a3a6274 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:03:19 +0900 Subject: [PATCH 02/25] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B0=8F=20=EB=A1=9C=EA=B3=A0=20?= =?UTF-8?q?=EC=82=AC=EC=A7=84=20=EC=B6=94=EA=B0=80=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/LoginPage.js | 44 +++++++++++++++++++++++++++++++++++++++++ src/pages/SignupPage.js | 0 2 files changed, 44 insertions(+) create mode 100644 src/pages/LoginPage.js create mode 100644 src/pages/SignupPage.js diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js new file mode 100644 index 0000000..8eeee7c --- /dev/null +++ b/src/pages/LoginPage.js @@ -0,0 +1,44 @@ +import React from "react"; +import Button from "../components/Button"; +import Logo from "../components/Logo"; + +const LoginPage = () => { + const handleKakaoLogin = () => { + //window.location.href = "나중에 카카오 로그인 키. " + }; + + return ( +
+ +

회원가입하기

+ +
+ ); +}; + +const styles = { + container: { + display : "flex", + flexDirection : "column", + alignItems : "center", + justifyContent: "center", + height: "100vh", + backgroundColor: "#FAE8D4", + }, + title: { + fontSize : "20px", + marginBottom: "20px", + }, + signupButton: { + backgroundColor: "transparent", + border: "1px solid black", + padding: "10px 20px", + borderRadius: "8px", + fontSize: "16px", + marginBottom: "20px", + cursor: "pointer", + }, +}; + +export default LoginPage; \ No newline at end of file diff --git a/src/pages/SignupPage.js b/src/pages/SignupPage.js new file mode 100644 index 0000000..e69de29 From ba1dbaba462500cf42d0558475af794642fe25d5 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:47:41 +0900 Subject: [PATCH 03/25] Feat/signup (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * SignupPage#1 * feat:Signuppage 생성 --- src/App.js | 14 ++++++++---- src/components/Button.js | 27 ++++++++++++++++++++++ src/components/Logo.js | 11 +++++++++ src/pages/LoginPage.js | 3 +++ src/pages/SignupPage.js | 48 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 src/components/Button.js create mode 100644 src/components/Logo.js diff --git a/src/App.js b/src/App.js index 20a3459..88a92e5 100755 --- a/src/App.js +++ b/src/App.js @@ -1,11 +1,17 @@ import React from "react"; -import "./App.css"; +import {BrowserRouter as Router, Routes, Route } from "react-router-dom"; +import LoginPage from "./pages/LoginPage"; +import SignupPage from "./pages/SignupPage"; function App() { return ( -
-
+ + + }/> + } /> + + ); } -export default App; +export default App; \ No newline at end of file diff --git a/src/components/Button.js b/src/components/Button.js new file mode 100644 index 0000000..9b9ae19 --- /dev/null +++ b/src/components/Button.js @@ -0,0 +1,27 @@ +import React from "react"; + +const Button = ({ text, color, onClick, icon }) => { + return ( + + ); +}; + +export default Button; \ No newline at end of file diff --git a/src/components/Logo.js b/src/components/Logo.js new file mode 100644 index 0000000..9b562aa --- /dev/null +++ b/src/components/Logo.js @@ -0,0 +1,11 @@ +import React from "react"; + +const Logo = () => { + return ( +
+ Heart Logo +
+ ); +}; + +export default Logo; \ No newline at end of file diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js index 8eeee7c..b16bba8 100644 --- a/src/pages/LoginPage.js +++ b/src/pages/LoginPage.js @@ -1,10 +1,13 @@ import React from "react"; +import { useNavigate } from "react-router-dom"; import Button from "../components/Button"; import Logo from "../components/Logo"; const LoginPage = () => { + const navigate = useNavigate(); const handleKakaoLogin = () => { //window.location.href = "나중에 카카오 로그인 키. " + navigate("/signup"); }; return ( diff --git a/src/pages/SignupPage.js b/src/pages/SignupPage.js index e69de29..bfd40f1 100644 --- a/src/pages/SignupPage.js +++ b/src/pages/SignupPage.js @@ -0,0 +1,48 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Button from "../components/Button"; +import Logo from "../components/Logo"; + +const SignupPage = () => { + return( +
+ +

회원 정보 입력

+ + + + + + +
+ ); +}; + +const styles = { + container: { + display : "flex", + flexDirection : "column", + alignItems: "center", + justifyContent: "center", + height: "100vh", + backgroundColor: "#F8EAD2", + }, + image: { + width: "100px", + marginBottom: "20px", + }, + title: { + fontSize: "24px", + marginBottom: "20px", + }, + input: { + width: "80%", + padding: "10px", + marginBottom: "10px", + borderRadius: "10px", + border: "1px solid #ccc", + }, +}; + +export default SignupPage; \ No newline at end of file From 9f96ff54e1cf41f22b13079520e0f2648d98fcd8 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:17:50 +0900 Subject: [PATCH 04/25] Feat/voice training page (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * MicButton 추가 * VoiceTrainingPage 완성 * VoicePage 완성 --- src/components/MicButton.js | 24 ++++++++++ src/pages/SignupPage.js | 3 +- src/pages/VoiceTrainingPage.js | 80 ++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/components/MicButton.js create mode 100644 src/pages/VoiceTrainingPage.js diff --git a/src/components/MicButton.js b/src/components/MicButton.js new file mode 100644 index 0000000..d1a8f0d --- /dev/null +++ b/src/components/MicButton.js @@ -0,0 +1,24 @@ +import React from "react"; + +const MicButton = ({onClick}) => { + return ( + + ); +}; + +const styles = { + micButton: { + background: "none", + border: "none", + cursor: "pointer", + marginBottom: "20px", + }, + micIcon: { + width: "60px", + height: "60px", + }, +}; + +export default MicButton; \ No newline at end of file diff --git a/src/pages/SignupPage.js b/src/pages/SignupPage.js index bfd40f1..2991c51 100644 --- a/src/pages/SignupPage.js +++ b/src/pages/SignupPage.js @@ -4,6 +4,7 @@ import Button from "../components/Button"; import Logo from "../components/Logo"; const SignupPage = () => { + const navigate = useNavigate(); return(
@@ -14,7 +15,7 @@ const SignupPage = () => { -
); }; diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js new file mode 100644 index 0000000..517892c --- /dev/null +++ b/src/pages/VoiceTrainingPage.js @@ -0,0 +1,80 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import MicButton from "../components/MicButton"; +import Logo from "../components/Logo"; + +const VoiceTrainingPage = () => { + const navigate = useNavigate(); + + return ( +
+ +

목소리를 학습하겠습니다.

+

(아래의 마이크 버튼을 누르고 텍스트를 읽어주세요.)

+ +
+ Memo +

+ 안촉촉한 초코칩 나라에 살던 안촉촉한 초코칩이 초초초초초초콬초코촠칩.. 아직 미정이에유.. 텍스트 분석하기 좋은 글들을 넣어봅시다. +

+
+ + + + +
+ ); +}; + +const styles = { + container: { + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent : "center", + minHeight : "100vh", + backgroundColor : "#F8EAD2", + }, + title: { + fontSize: "20px", + fontWeight: "bold", + }, + subtitle: { + fontSize: "14px", + color: "#555", + marginBottom: "20px", + }, + memoContainer: { + position: "relative", + width: "250px", + height: "200px", + marginBottom: "20px", + }, + memoImage: { + width : "100%", + height : "100%", + objectFit : "cover", + }, + memoText: { + position: "absolute", + top: "20px", + left: "20px", + right: "20px", + fontSize: "14px", + textAlign : "center", + lineHeight : "1.5", + fontWeight : "bold", + }, + nextButton: { + backgroundColor : "#DABEC9", + border: "none", + padding: "10px 20px", + borderRadius: "8px", + fontSize: "16px", + cursor: "pointer", + }, +}; + +export default VoiceTrainingPage; \ No newline at end of file From 59716a96a2a3c485acc3ba19e0d0cd0cc24a7b02 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Fri, 4 Apr 2025 19:55:01 +0900 Subject: [PATCH 05/25] Feat/keyword page (#4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * KeywordPage 1번 완성 * keyword page 오류수정 * keywordpage 시간설정 추가 --- src/pages/KeywordSelectionPage.js | 238 ++++++++++++++++++++++++++++++ src/pages/VoiceTrainingPage.js | 2 +- 2 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 src/pages/KeywordSelectionPage.js diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js new file mode 100644 index 0000000..48aa886 --- /dev/null +++ b/src/pages/KeywordSelectionPage.js @@ -0,0 +1,238 @@ +import React, { useState } from "react"; +import { useNavigate } from "react-router-dom"; +import TimePicker from "react-time-picker"; +import "react-time-picker/dist/TimePicker.css"; +import "react-clock/dist/Clock.css"; +import Logo from "../components/Logo"; + +const keywords = { + "수면 여부 확인": ["아침", "밤"], + "식사 여부 확인": ["아침", "점심", "저녁"], + "약 복용 여부 확인": ["아침", "점심", "저녁"], + "활동 여부 확인": ["외출", "청소", "교회", "운동", "목욕"], + "심리적 상태 체크": ["O", "X"] +}; + +const timeSettingKeywords = { + "수면 여부 확인": ["아침"], + "식사 여부 확인": ["아침", "점심", "저녁"], + "약 복용 여부 확인": ["아침", "점심", "저녁"] +}; + +const weekdays = ["월", "화", "수", "목", "금", "토", "일"]; + +const TimeSetting = ({ value, onSave }) => { + const [tempTime, setTempTime] = useState(value.time); + const [tempDays, setTempDays] = useState(value.days || []); + + const toggleDay = (day) => { + setTempDays((prev) => + prev.includes(day) ? prev.filter((d) => d !== day) : [...prev, day] + ); + }; + + const handleSave = () => { + onSave({ + time: tempTime, + days: tempDays + }); + }; + + return ( +
+
+ {weekdays.map((day) => ( + + ))} +
+ + +
+ ); +}; + +const KeywordSelectionPage = () => { + const navigate = useNavigate(); + + const [selected, setSelected] = useState( + Object.keys(keywords).reduce((acc, category) => { + acc[category] = {}; + keywords[category].forEach((keyword) => { + acc[category][keyword] = { + selected: false, + time: "08:00", + days: [] + }; + }); + return acc; + }, {}) + ); + + const toggleSelection = (category, keyword) => { + setSelected((prev) => ({ + ...prev, + [category]: { + ...prev[category], + [keyword]: { + ...prev[category][keyword], + selected: !prev[category][keyword].selected + } + } + })); + }; + + const saveTimeAndDays = (category, keyword, newData) => { + setSelected((prev) => ({ + ...prev, + [category]: { + ...prev[category], + [keyword]: { + ...prev[category][keyword], + ...newData + } + } + })); + }; + + return ( +
+ +

확인하고 싶은 키워드를 선택해주세요.

+ {Object.entries(keywords).map(([category, options]) => ( +
+

• {category}

+
+ {options.map((keyword) => ( +
+ + {selected[category][keyword].selected && + timeSettingKeywords[category]?.includes(keyword) && ( + saveTimeAndDays(category, keyword, data)} + /> + )} +
+ ))} +
+
+ ))} + +
+ ); +}; + +const styles = { + container: { + display: "flex", + flexDirection: "column", + alignItems: "center", + backgroundColor: "#F8EAD2", + height: "100vh", + padding: "20px", + overflowY: "auto", + }, + title: { + fontSize: "18px", + fontWeight: "bold", + marginBottom: "20px", + }, + category: { + marginBottom: "15px", + textAlign: "left", + width: "100%", + }, + categoryTitle: { + fontSize: "16px", + fontWeight: "bold", + marginBottom: "5px", + }, + buttonContainer: { + display: "flex", + flexWrap: "wrap", + gap: "10px", + }, + keywordBlock: { + display: "flex", + flexDirection: "column", + alignItems: "center", + gap: "5px", + }, + keywordButton: { + border: "2px solid black", + borderRadius: "20px", + padding: "10px 15px", + cursor: "pointer", + fontSize: "14px", + }, + completeButton: { + backgroundColor: "#DABEC9", + border: "none", + padding: "10px 20px", + borderRadius: "8px", + fontSize: "16px", + cursor: "pointer", + marginTop: "20px", + }, + timeSettingContainer: { + display: "flex", + flexDirection: "column", + alignItems: "center", + gap: "10px", + backgroundColor: "#FFF", + padding: "10px", + borderRadius: "10px", + border: "1px solid #ccc", + marginTop: "5px", + }, + weekdayContainer: { + display: "flex", + gap: "6px", + flexWrap: "wrap", + justifyContent: "center", + }, + dayButton: { + padding: "5px 8px", + borderRadius: "6px", + border: "1px solid #888", + cursor: "pointer", + fontSize: "12px", + }, + saveButton: { + fontSize: "12px", + padding: "5px 10px", + borderRadius: "5px", + backgroundColor: "#DABEC9", + border: "none", + cursor: "pointer" + } +}; + +export default KeywordSelectionPage; diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js index 517892c..5a40422 100644 --- a/src/pages/VoiceTrainingPage.js +++ b/src/pages/VoiceTrainingPage.js @@ -21,7 +21,7 @@ const VoiceTrainingPage = () => { - From 86643b429c2774a92854c89a4148d772f448a0cf Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:46:49 +0900 Subject: [PATCH 06/25] Feat/final page (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * finalPage 제작 * Complete Final Page --- src/pages/FinalPage.js | 107 ++++++++++++++++++++++++++++++ src/pages/KeywordSelectionPage.js | 2 +- 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 src/pages/FinalPage.js diff --git a/src/pages/FinalPage.js b/src/pages/FinalPage.js new file mode 100644 index 0000000..57483c3 --- /dev/null +++ b/src/pages/FinalPage.js @@ -0,0 +1,107 @@ +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Logo from "../components/Logo"; + +const FinalPage = () => { + const navigate = useNavigate(); + const [showConfirm, setShowConfirm] = useState(false); + + const handleLogoutClick = () => { + setShowConfirm(true); + }; + + const handleConfirmYes = () => { + setShowConfirm(false); + navigate('/'); + }; + + const handleConfirmNo = () => { + setShowConfirm(false); + }; + + return ( +
+ +

완료되었습니다.

+ + + + {showConfirm && ( +
+
+

진짜 로그아웃 하시겠습니까?

+
+ + +
+
+
+ )} +
+ ); +}; + +const styles = { + container: { + backgroundColor: '#F4E6CE', + height: '100vh', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + }, + text: { + fontSize: 20, + fontWeight: 'bold', + marginBottom: 40, + }, + mainButton: { + padding: '10px 24px', + border: '1px solid black', + borderRadius: '16px', + backgroundColor: '#F4E6CE', + marginBottom: 20, + cursor: 'default', + }, + logoutButton: { + padding: '10px 24px', + border: '1px solid black', + borderRadius: '16px', + backgroundColor: '#fff', + color: '#000', + cursor: 'pointer', + }, + popupOverlay: { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + backgroundColor: 'rgba(0, 0, 0, 0.4)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + }, + popupBox: { + backgroundColor: '#fff', + padding: 24, + borderRadius: 12, + boxShadow: '0 4px 8px rgba(0,0,0,0.2)', + textAlign: 'center', + }, + popupButtons: { + display: 'flex', + justifyContent: 'space-around', + marginTop: 16, + }, + popupBtn: { + padding: '8px 16px', + borderRadius: 8, + border: '1px solid #000', + backgroundColor: '#F4E6CE', + cursor: 'pointer', + }, +}; + +export default FinalPage; diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index 48aa886..e0e6d72 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -144,7 +144,7 @@ const KeywordSelectionPage = () => { ))} - + ); }; From cf0922bac453970c4d3cbfe94e12c98e95b31a94 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:59:27 +0900 Subject: [PATCH 07/25] =?UTF-8?q?Signup=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95=20(#6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/SignupPage.js | 128 +++++++++++++++++++++++++++++++++++----- 1 file changed, 112 insertions(+), 16 deletions(-) diff --git a/src/pages/SignupPage.js b/src/pages/SignupPage.js index 2991c51..5d43afd 100644 --- a/src/pages/SignupPage.js +++ b/src/pages/SignupPage.js @@ -1,49 +1,145 @@ -import React from "react"; +import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import Button from "../components/Button"; import Logo from "../components/Logo"; const SignupPage = () => { const navigate = useNavigate(); - return( + + const [guardianName, setGuardianName] = useState(""); + const [guardianBirth, setGuardianBirth] = useState(""); + const [patientName, setPatientName] = useState(""); + const [patientBirth, setPatientBirth] = useState(""); + const [showPopup, setShowPopup] = useState(false); // 팝업 상태 + + const handleSubmit = () => { + if (!guardianName || !guardianBirth || !patientName || !patientBirth) { + setShowPopup(true); + return; + } + + navigate("/voice-training"); + }; + + return (

회원 정보 입력

- - - - +
+ + setGuardianName(e.target.value)} + /> +
+ +
+ + setGuardianBirth(e.target.value)} + /> +
- +
+ + )} ); }; const styles = { container: { - display : "flex", - flexDirection : "column", + display: "flex", + flexDirection: "column", alignItems: "center", justifyContent: "center", height: "100vh", backgroundColor: "#F8EAD2", - }, - image: { - width: "100px", - marginBottom: "20px", + padding: "0 20px", }, title: { fontSize: "24px", marginBottom: "20px", }, + inputGroup: { + width: "100%", + maxWidth: "400px", + marginBottom: "15px", + }, + label: { + display: "block", + marginBottom: "5px", + fontWeight: "bold", + }, input: { - width: "80%", + width: "100%", padding: "10px", - marginBottom: "10px", borderRadius: "10px", border: "1px solid #ccc", + boxSizing: "border-box", + }, + popupOverlay: { + position: "fixed", + top: 0, + left: 0, + width: "100vw", + height: "100vh", + backgroundColor: "rgba(0, 0, 0, 0.3)", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: 999, + }, + popup: { + backgroundColor: "#fff", + padding: "30px 40px", + borderRadius: "12px", + boxShadow: "0 4px 12px rgba(0, 0, 0, 0.2)", + textAlign: "center", + }, + popupButton: { + padding: "8px 16px", + borderRadius: "8px", + border: "none", + backgroundColor: "#DABEC9", + cursor: "pointer", }, }; -export default SignupPage; \ No newline at end of file +export default SignupPage; From 42fc622cdc1ded7311d65d2b3dba1a6ace52af41 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 5 Apr 2025 17:18:48 +0900 Subject: [PATCH 08/25] =?UTF-8?q?axios=20api,=20voice=20reocrder=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20(#7)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 7 +++++++ src/constants/api.js | 2 ++ src/constants/recordScript.js | 8 ++++++++ 3 files changed, 17 insertions(+) create mode 100644 src/constants/api.js create mode 100644 src/constants/recordScript.js diff --git a/src/App.js b/src/App.js index 88a92e5..9f3def5 100755 --- a/src/App.js +++ b/src/App.js @@ -2,6 +2,10 @@ import React from "react"; import {BrowserRouter as Router, Routes, Route } from "react-router-dom"; import LoginPage from "./pages/LoginPage"; import SignupPage from "./pages/SignupPage"; +import VoiceTrainingPage from "./pages/VoiceTrainingPage"; +import KeywordSelectionPage from "./pages/KeywordSelectionPage"; +import FinalPage from "./pages/FinalPage"; + function App() { return ( @@ -9,6 +13,9 @@ function App() { }/> } /> + } /> + } /> + } /> ); diff --git a/src/constants/api.js b/src/constants/api.js new file mode 100644 index 0000000..1820992 --- /dev/null +++ b/src/constants/api.js @@ -0,0 +1,2 @@ +export const LOCAL_SPRING_API_URL = "http://localhost:8080/api/spring"; +export const LOCAL_FASTAPI_API_URL = "http://localhost:8000/api/fastapi"; \ No newline at end of file diff --git a/src/constants/recordScript.js b/src/constants/recordScript.js new file mode 100644 index 0000000..3d8d2c7 --- /dev/null +++ b/src/constants/recordScript.js @@ -0,0 +1,8 @@ +// 사용자 로그인 시에 목소리 녹음 대본 + + +const recordScript = ` + 부모님께서는 우리가 세상에서 가장 소중한 존재입니다. 그들의 사랑과 희생에 감사하며, 작은 일부터 시작해 효도하는 마음을 잊지 말고 살아가길 바랍니다. 언제나 부모님께 감사한 마음을 표현하세요. +`; + +export default recordScript; \ No newline at end of file From 1638bb5d1fa9070e18e4ba0811dd51987dcfb834 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sun, 6 Apr 2025 11:13:36 +0900 Subject: [PATCH 09/25] Feat/chain with back (#8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * kakao login 연결 * kakao Login * Header.js 추가 * 헤더 추가 * keyword selection format * 재수정 --- .idea/.gitignore | 8 + .idea/humanicare.iml | 9 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + package-lock.json | 301 ++++++++++++++++++- package.json | 7 +- public/images/heart.png | Bin 0 -> 11022 bytes public/images/kakao_login.svg | 12 + public/images/memo_background.png | Bin 0 -> 227546 bytes public/images/mic_icon.png | Bin 0 -> 8206 bytes src/App.js | 4 + src/axios/TokenInterceptor.js | 84 ++++++ src/components/Header.js | 9 + src/components/oauth/KakaoRedirectPage.js | 60 ++++ src/pages/KeywordSelectionPage.js | 57 +++- src/pages/LoginPage.js | 4 +- 18 files changed, 562 insertions(+), 19 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/humanicare.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 public/images/heart.png create mode 100644 public/images/kakao_login.svg create mode 100644 public/images/memo_background.png create mode 100644 public/images/mic_icon.png create mode 100644 src/axios/TokenInterceptor.js create mode 100644 src/components/Header.js create mode 100644 src/components/oauth/KakaoRedirectPage.js diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c3f502a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml +# 에디터 기반 HTTP 클라이언트 요청 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/humanicare.iml b/.idea/humanicare.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/humanicare.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..07115cd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..594f21c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 42a86c8..1e73e38 100755 --- a/package-lock.json +++ b/package-lock.json @@ -12,9 +12,12 @@ "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@testing-library/user-event": "^13.5.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "axios": "^1.8.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.17.0", "react-scripts": "5.0.1", + "react-time-picker": "^7.0.0", "web-vitals": "^2.1.4" } }, @@ -3090,6 +3093,15 @@ } } }, + "node_modules/@remix-run/router": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", + "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -4310,6 +4322,15 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@wojtekmaj/date-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz", + "integrity": "sha512-+i7+JmNiE/3c9FKxzWFi2IjRJ+KzZl1QPu6QNrsgaa2MuBgXvUy4gA1TVzf/JMdIIloB76xSKikTWuyYAIVLww==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/date-utils?sponsor=1" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -4897,6 +4918,32 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -5635,6 +5682,15 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6572,6 +6628,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-element-overflow": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/detect-element-overflow/-/detect-element-overflow-1.4.2.tgz", + "integrity": "sha512-4m6cVOtvm/GJLjo7WFkPfwXoEIIbM7GQwIh4WEa4g7IsNi1YzwUsGL5ApNLrrHL29bHeNeQ+/iZhw+YHqgE2Fw==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/detect-element-overflow?sponsor=1" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -8575,6 +8640,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-user-locale": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-2.3.2.tgz", + "integrity": "sha512-O2GWvQkhnbDoWFUJfaBlDIKUEdND8ATpBXD6KXcbhxlfktyD/d8w6mkzM/IlQEqGZAMz/PW6j6Hv53BiigKLUQ==", + "license": "MIT", + "dependencies": { + "mem": "^8.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -11262,6 +11339,15 @@ "semver": "bin/semver.js" } }, + "node_modules/make-event-props": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -11271,6 +11357,18 @@ "tmpl": "1.0.5" } }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -11295,6 +11393,31 @@ "node": ">= 0.6" } }, + "node_modules/mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/memfs": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", @@ -11885,6 +12008,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -13629,6 +13761,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", @@ -13757,10 +13895,13 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, "engines": { "node": ">=0.10.0" } @@ -13788,6 +13929,30 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "license": "MIT" }, + "node_modules/react-clock": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-clock/-/react-clock-5.1.0.tgz", + "integrity": "sha512-DKmr29VOK6M8wpbzGUZZa9PwGnG9uC6QXtDLwGwcc2r3vdS/HxNhf5xMMjudXLk7m096mNJQf7AgfjiDpzAYYw==", + "license": "MIT", + "dependencies": { + "@wojtekmaj/date-utils": "^1.5.0", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-clock?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -13894,15 +14059,16 @@ } }, "node_modules/react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^18.3.1" } }, "node_modules/react-error-overlay": { @@ -13911,6 +14077,32 @@ "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", "license": "MIT" }, + "node_modules/react-fit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-fit/-/react-fit-2.0.1.tgz", + "integrity": "sha512-Eip6ALs/+6Jv82Si0I9UnfysdwVlAhkkZRycgmMdnj7jwUg69SVFp84ICxwB8zszkfvJJ2MGAAo9KAYM8ZUykQ==", + "license": "MIT", + "dependencies": { + "detect-element-overflow": "^1.4.0", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-fit?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -13926,6 +14118,38 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.17.0.tgz", + "integrity": "sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.10.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.17.0.tgz", + "integrity": "sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.10.0", + "react-router": "6.17.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -13999,6 +14223,34 @@ } } }, + "node_modules/react-time-picker": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/react-time-picker/-/react-time-picker-7.0.0.tgz", + "integrity": "sha512-k6mUjkI+OsY73mg0yjMxqkLXv/UXR1LN7AARNqfyGZOwqHqo1JrjL3lLHTHWQ86HmPTBL/dZACbIX/fV1NLmWg==", + "license": "MIT", + "dependencies": { + "@wojtekmaj/date-utils": "^1.1.3", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1", + "make-event-props": "^1.6.0", + "react-clock": "^5.0.0", + "react-fit": "^2.0.0", + "update-input-width": "^1.4.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-time-picker?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14602,10 +14854,13 @@ } }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "license": "MIT" + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } }, "node_modules/schema-utils": { "version": "4.3.0", @@ -16508,6 +16763,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-input-width": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/update-input-width/-/update-input-width-1.4.2.tgz", + "integrity": "sha512-/p0XLhrQQQ4bMWD7bL9duYObwYCO1qGr8R19xcMmoMSmXuQ7/1//veUnCObQ7/iW6E2pGS6rFkS4TfH4ur7e/g==", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/update-input-width?sponsor=1" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -16632,6 +16896,15 @@ "makeerror": "1.0.12" } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", diff --git a/package.json b/package.json index ba83d74..9317187 100755 --- a/package.json +++ b/package.json @@ -7,9 +7,12 @@ "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@testing-library/user-event": "^13.5.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "axios": "^1.8.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.17.0", "react-scripts": "5.0.1", + "react-time-picker": "^7.0.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/public/images/heart.png b/public/images/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3a95801c1361aebf01be1d4cf8fb75de8320af GIT binary patch literal 11022 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 + + + + + + + + + + + diff --git a/public/images/memo_background.png b/public/images/memo_background.png new file mode 100644 index 0000000000000000000000000000000000000000..13dc55510e119e933a135b31ff196dadb3f6fcad GIT binary patch literal 227546 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%0A6*c7;| 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

q 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 literal 0 HcmV?d00001 diff --git a/public/images/mic_icon.png b/public/images/mic_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eba5a2e81e2c43a90f9415cbba57a1eea78bb3a0 GIT binary patch literal 8206 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 literal 0 HcmV?d00001 diff --git a/src/App.js b/src/App.js index 9f3def5..3187003 100755 --- a/src/App.js +++ b/src/App.js @@ -1,4 +1,5 @@ import React from "react"; +import KakaoRedirectPage from "./components/oauth/KakaoRedirectPage"; import {BrowserRouter as Router, Routes, Route } from "react-router-dom"; import LoginPage from "./pages/LoginPage"; import SignupPage from "./pages/SignupPage"; @@ -16,6 +17,9 @@ function App() { } /> } /> } /> + + {/* 카카오 로그인 리다이렉트 경로 추가 */} + } /> ); diff --git a/src/axios/TokenInterceptor.js b/src/axios/TokenInterceptor.js new file mode 100644 index 0000000..b5f28d1 --- /dev/null +++ b/src/axios/TokenInterceptor.js @@ -0,0 +1,84 @@ +import axios from 'axios'; +import {LOCAL_SPRING_API_URL} from "../constants/api"; + +const instance = axios.create(); + +instance.defaults.withCredentials = true; + +// 요청 인터셉터 : API call 하기 전에 실행 +instance.interceptors.request.use(function (config) { + + // 로컬 스토리지에서 accessToken을 가져온다 + const accessToken = localStorage.getItem('accessToken'); + console.log(accessToken); + + // accessToken이 있으면 요청 헤더에 추가한다. + if (accessToken) + config.headers['Authorization'] = `Bearer ${accessToken}`; + return config; + +}, function (error) { + // 요청 오류 처리 + return Promise.reject(error); +}); + +// 응답 인터셉터 : 응답을 받고 then, catch 처리하기 전에 실행 +// 토큰 재인증, 자동 로그아웃 등 처리 +instance.interceptors.response.use(async function (response) { + + // 응답 데이터 있는 작업 수행 + // 2xx 범위에 있는 상태 코드인 경우 + return response; +}, async function (error) { + + // 응답 오류가 있는 작업 수행 + // 2xx 범위 밖에 있는 상태 코드인 경우 + + const {config, response} = error; + if (!response) { + console.error('Network or server error', error); + return Promise.reject(error); + } + + // 백엔드단의 JWT Filter에서 걸리는 에러 처리 + const {status, data} = response; + console.log(response); + if (status === 401) { + if (data.message === "토큰이 없습니다") { + await Logout(); + } + if (data.message === "유효하지 않은 토큰") { + try { + const tokenReissueResult = await instance.post(`${LOCAL_SPRING_API_URL}/reissue`); + if (tokenReissueResult.status === 200) { + // 재발급 성공시 로컬스토리지에 토큰 저장 + const accessToken = tokenReissueResult.headers['authorization'] || tokenReissueResult.headers['Authorization']; + localStorage.setItem('accessToken', accessToken); + // 토큰 재발급 성공, API 재요청 + console.log("토큰 재발급 성공"); + return instance(config) + } else { + await Logout(); + } + } catch (e) { + await Logout(); + } + } + } + + return Promise.reject(error); +}); + + +const Logout = async () => { + try { + // 로그아웃 API 호출 + await axios.post(`${LOCAL_SPRING_API_URL}/logout`); + localStorage.removeItem('accessToken'); + window.location.href = '/'; // 로그인 페이지 이동 + } catch (error) { + console.error('로그아웃 오류 발생:', error); + } +}; + +export default instance; \ No newline at end of file diff --git a/src/components/Header.js b/src/components/Header.js new file mode 100644 index 0000000..d65a0c0 --- /dev/null +++ b/src/components/Header.js @@ -0,0 +1,9 @@ +// components/Header.js + +export const getAccessToken = () => { + const token = localStorage.getItem("accessToken"); + if (!token) { + console.warn("accessToken이 없습니다."); + } + return token; +}; diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js new file mode 100644 index 0000000..c2cbb35 --- /dev/null +++ b/src/components/oauth/KakaoRedirectPage.js @@ -0,0 +1,60 @@ +import React, { useEffect } from "react"; +import { useLocation, useNavigate } from "react-router-dom"; +import instance from "../../axios/TokenInterceptor"; // instance를 계속 사용하려면 +import { LOCAL_SPRING_API_URL } from "../../constants/api"; + +// 카카오 OAuth 인증 후 리디렉션 처리 페이지 +const KakaoRedirectPage = () => { + const location = useLocation(); // 현재 URL 정보 + const navigate = useNavigate(); // 페이지 이동을 위한 navigate 함수 + + useEffect(() => { + // 카카오 로그인 인증 코드 처리 함수 + const handleOAuthKakao = async (code) => { + try { + // 카카오 인증 코드로 서버에 로그인 요청 (여기서 instance 사용) + const response = await instance.get( + `${ LOCAL_SPRING_API_URL}/oauth/login/kakao?code=${code}` + ); + + if (response.data.isSuccess) { + // 로그인 성공 시, Authorization 헤더에서 액세스 토큰 가져오기 + const accessToken = response.headers["Authorization"] || response.headers["authorization"]; + localStorage.setItem("accessToken", accessToken); // 토큰을 로컬스토리지에 저장 + + // 사용자의 역할(role)에 따라 페이지 이동 + const role = response.data.result; + if (role === "GUEST") { + navigate("/voice-training"); // 게스트 페이지로 이동 + } else if (role === "USER") { + navigate("/voice-training"); // 사용자 메인 페이지로 이동 + } + } else { + // 로그인 실패 처리 + console.error("OAuth2 로그인 오류"); + console.log(response.data.code); + console.log(response.data.message); + } + } catch (error) { + // 요청 실패 시 처리 + console.error("로그인 실패", error); + } + }; + + // URL에서 카카오 인증 코드 추출 + const searchParams = new URLSearchParams(location.search); + const code = searchParams.get("code"); // URL에서 'code' 파라미터 추출 + + // 인증 코드가 존재하면 로그인 처리 + if (code) { + handleOAuthKakao(code); + } + }, [location, navigate]); // 의존성 배열에 'location'과 'navigate' 추가 + + return ( +
+
+ ); +}; + +export default KakaoRedirectPage; diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index e0e6d72..251fbd9 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -2,8 +2,11 @@ import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import TimePicker from "react-time-picker"; import "react-time-picker/dist/TimePicker.css"; +import { LOCAL_SPRING_API_URL } from "../constants/api"; import "react-clock/dist/Clock.css"; import Logo from "../components/Logo"; +import axios from "axios"; +import { getAccessToken } from "../components/Header"; // 토큰 불러오기 const keywords = { "수면 여부 확인": ["아침", "밤"], @@ -109,6 +112,58 @@ const KeywordSelectionPage = () => { })); }; + const handleComplete = async () => { + const token = getAccessToken(); + if (!token) { + alert("로그인이 필요합니다."); + return; + } + + // 요일 변환 맵 + const dayMap = { + "월": "MONDAY", + "화": "TUESDAY", + "수": "WEDNESDAY", + "목": "THURSDAY", + "금": "FRIDAY", + "토": "SATURDAY", + "일": "SUNDAY" + }; + + // selected 가공 + const payload = []; + + for (const category in selected) { + for (const keyword in selected[category]) { + const item = selected[category][keyword]; + if (item.selected && item.days.length > 0) { + payload.push({ + scheduleTitle: `${category} - ${keyword}`, + startTime: item.time + ":00", + days: item.days.map(day => dayMap[day]) + }); + } + } + } + + try { + const response = await axios.post( + `${ LOCAL_SPRING_API_URL }/basic-schedules`, // 실제 API 주소로 교체 + payload, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + console.log("서버 응답:", response.data); + navigate("/final"); + } catch (error) { + console.error("데이터 전송 실패:", error); + alert("데이터 전송 중 오류가 발생했습니다."); + } + }; + return (
@@ -144,7 +199,7 @@ const KeywordSelectionPage = () => {
))} - + ); }; diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js index b16bba8..644963c 100644 --- a/src/pages/LoginPage.js +++ b/src/pages/LoginPage.js @@ -2,12 +2,12 @@ import React from "react"; import { useNavigate } from "react-router-dom"; import Button from "../components/Button"; import Logo from "../components/Logo"; +import { LOCAL_SPRING_API_URL } from "../../constants/api"; const LoginPage = () => { const navigate = useNavigate(); const handleKakaoLogin = () => { - //window.location.href = "나중에 카카오 로그인 키. " - navigate("/signup"); + window.location.href = `${LOCAL_SPRING_API_URL}/oauth/kakao`; }; return ( From 8485e2986248cb413c1993e4c6039263ebfbe9eb Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:48:34 +0900 Subject: [PATCH 10/25] Feat/chain with back (#9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * kakao login 연결 * kakao Login * Header.js 추가 * 헤더 추가 * keyword selection format * 재수정 * keyword/login * keyword 버그 수정 * logout 기능 추가 * ROLE역할 나누기 * Connect BE --- src/axios/TokenInterceptor.js | 12 +- src/components/oauth/KakaoRedirectPage.js | 45 ++--- src/pages/FinalPage.js | 7 +- src/pages/KeywordSelectionPage.js | 218 +++++++++++++--------- src/pages/LoginPage.js | 2 +- 5 files changed, 157 insertions(+), 127 deletions(-) diff --git a/src/axios/TokenInterceptor.js b/src/axios/TokenInterceptor.js index b5f28d1..3bfee88 100644 --- a/src/axios/TokenInterceptor.js +++ b/src/axios/TokenInterceptor.js @@ -70,12 +70,16 @@ instance.interceptors.response.use(async function (response) { }); -const Logout = async () => { +export const Logout = async () => { try { - // 로그아웃 API 호출 - await axios.post(`${LOCAL_SPRING_API_URL}/logout`); + const token = localStorage.getItem('accessToken'); + await axios.post(`${LOCAL_SPRING_API_URL}/logout`, null, { + headers: { + Authorization: `Bearer ${token}` + } + }); localStorage.removeItem('accessToken'); - window.location.href = '/'; // 로그인 페이지 이동 + window.location.href = '/'; // 로그인 페이지로 이동 } catch (error) { console.error('로그아웃 오류 발생:', error); } diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js index c2cbb35..dbd76c8 100644 --- a/src/components/oauth/KakaoRedirectPage.js +++ b/src/components/oauth/KakaoRedirectPage.js @@ -1,60 +1,51 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useRef } from "react"; import { useLocation, useNavigate } from "react-router-dom"; -import instance from "../../axios/TokenInterceptor"; // instance를 계속 사용하려면 +import instance from "../../axios/TokenInterceptor"; import { LOCAL_SPRING_API_URL } from "../../constants/api"; -// 카카오 OAuth 인증 후 리디렉션 처리 페이지 const KakaoRedirectPage = () => { - const location = useLocation(); // 현재 URL 정보 - const navigate = useNavigate(); // 페이지 이동을 위한 navigate 함수 + const location = useLocation(); + const navigate = useNavigate(); + const isCalled = useRef(false); // 한 번만 실행되도록 플래그 useEffect(() => { - // 카카오 로그인 인증 코드 처리 함수 const handleOAuthKakao = async (code) => { try { - // 카카오 인증 코드로 서버에 로그인 요청 (여기서 instance 사용) const response = await instance.get( - `${ LOCAL_SPRING_API_URL}/oauth/login/kakao?code=${code}` + `${LOCAL_SPRING_API_URL}/oauth/login/kakao?code=${code}` ); if (response.data.isSuccess) { - // 로그인 성공 시, Authorization 헤더에서 액세스 토큰 가져오기 - const accessToken = response.headers["Authorization"] || response.headers["authorization"]; - localStorage.setItem("accessToken", accessToken); // 토큰을 로컬스토리지에 저장 + const accessToken = + response.headers["Authorization"] || response.headers["authorization"]; + localStorage.setItem("accessToken", accessToken); - // 사용자의 역할(role)에 따라 페이지 이동 const role = response.data.result; - if (role === "GUEST") { - navigate("/voice-training"); // 게스트 페이지로 이동 - } else if (role === "USER") { - navigate("/voice-training"); // 사용자 메인 페이지로 이동 + if (role === "ROLE_FIRST") { + navigate("/voice-training"); + } else { + navigate("/keywords"); } } else { - // 로그인 실패 처리 console.error("OAuth2 로그인 오류"); console.log(response.data.code); console.log(response.data.message); } } catch (error) { - // 요청 실패 시 처리 console.error("로그인 실패", error); } }; - // URL에서 카카오 인증 코드 추출 const searchParams = new URLSearchParams(location.search); - const code = searchParams.get("code"); // URL에서 'code' 파라미터 추출 + const code = searchParams.get("code"); - // 인증 코드가 존재하면 로그인 처리 - if (code) { + if (code && !isCalled.current) { + isCalled.current = true; // ✅ 한 번만 호출되도록 설정 handleOAuthKakao(code); } - }, [location, navigate]); // 의존성 배열에 'location'과 'navigate' 추가 + }, [location, navigate]); - return ( -
-
- ); + return
; }; export default KakaoRedirectPage; diff --git a/src/pages/FinalPage.js b/src/pages/FinalPage.js index 57483c3..a8975c6 100644 --- a/src/pages/FinalPage.js +++ b/src/pages/FinalPage.js @@ -1,6 +1,8 @@ +// FinalPage.jsx import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import Logo from "../components/Logo"; +import { Logout } from "../axios/TokenInterceptor"; // 실제 axios 파일 경로에 맞게 수정 const FinalPage = () => { const navigate = useNavigate(); @@ -10,9 +12,9 @@ const FinalPage = () => { setShowConfirm(true); }; - const handleConfirmYes = () => { + const handleConfirmYes = async () => { setShowConfirm(false); - navigate('/'); + await Logout(); // 로그아웃 처리 및 이동 }; const handleConfirmNo = () => { @@ -41,6 +43,7 @@ const FinalPage = () => { ); }; + const styles = { container: { backgroundColor: '#F4E6CE', diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index 251fbd9..4ce71cc 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -1,12 +1,12 @@ -import React, { useState } from "react"; -import { useNavigate } from "react-router-dom"; +import React, { useState, useEffect } from "react"; +import { useNavigate, useParams } from "react-router-dom"; import TimePicker from "react-time-picker"; import "react-time-picker/dist/TimePicker.css"; -import { LOCAL_SPRING_API_URL } from "../constants/api"; import "react-clock/dist/Clock.css"; import Logo from "../components/Logo"; import axios from "axios"; -import { getAccessToken } from "../components/Header"; // 토큰 불러오기 +import { LOCAL_SPRING_API_URL } from "../constants/api"; +import { getAccessToken } from "../components/Header"; const keywords = { "수면 여부 확인": ["아침", "밤"], @@ -16,29 +16,34 @@ const keywords = { "심리적 상태 체크": ["O", "X"] }; -const timeSettingKeywords = { - "수면 여부 확인": ["아침"], - "식사 여부 확인": ["아침", "점심", "저녁"], - "약 복용 여부 확인": ["아침", "점심", "저녁"] -}; +const timeSettingKeywords = new Set([ + "수면 여부 확인", "식사 여부 확인", "약 복용 여부 확인", "활동 여부 확인" +]); const weekdays = ["월", "화", "수", "목", "금", "토", "일"]; +const dayMap = { + "월": "MONDAY", "화": "TUESDAY", "수": "WEDNESDAY", + "목": "THURSDAY", "금": "FRIDAY", "토": "SATURDAY", "일": "SUNDAY" +}; +const reverseDayMap = Object.fromEntries( + Object.entries(dayMap).map(([k, v]) => [v, k]) +); const TimeSetting = ({ value, onSave }) => { - const [tempTime, setTempTime] = useState(value.time); - const [tempDays, setTempDays] = useState(value.days || []); + const [time, setTime] = useState(value.time); + const [days, setDays] = useState(value.days || []); const toggleDay = (day) => { - setTempDays((prev) => - prev.includes(day) ? prev.filter((d) => d !== day) : [...prev, day] - ); + const newDays = days.includes(day) + ? days.filter(d => d !== day) + : [...days, day]; + setDays(newDays); + onSave({ time, days: newDays }); }; - const handleSave = () => { - onSave({ - time: tempTime, - days: tempDays - }); + const handleTimeChange = (newTime) => { + setTime(newTime); + onSave({ time: newTime, days }); }; return ( @@ -50,7 +55,7 @@ const TimeSetting = ({ value, onSave }) => { onClick={() => toggleDay(day)} style={{ ...styles.dayButton, - backgroundColor: tempDays.includes(day) ? "#DABEC9" : "#EEE" + backgroundColor: days.includes(day) ? "#DABEC9" : "#EEE" }} > {day} @@ -58,36 +63,102 @@ const TimeSetting = ({ value, onSave }) => { ))} - ); }; +const KeywordOption = ({ category, keyword, data, onToggle, onSave }) => ( +
+ + {data.selected && timeSettingKeywords.has(category) && ( + + )} +
+); + const KeywordSelectionPage = () => { const navigate = useNavigate(); + const { id } = useParams(); const [selected, setSelected] = useState( - Object.keys(keywords).reduce((acc, category) => { - acc[category] = {}; - keywords[category].forEach((keyword) => { - acc[category][keyword] = { - selected: false, - time: "08:00", - days: [] - }; - }); - return acc; - }, {}) + Object.fromEntries( + Object.entries(keywords).map(([category, list]) => [ + category, + Object.fromEntries( + list.map((keyword) => [ + keyword, + { selected: false, time: "08:00", days: [] } + ]) + ) + ]) + ) ); + useEffect(() => { + const fetchData = async () => { + const token = getAccessToken(); + if (!token) return; + + try { + const response = await axios.get( + `${LOCAL_SPRING_API_URL}/all-basic-schedules`, + { + headers: { Authorization: `Bearer ${token}` }, + } + ); + console.log("확인하기"); + const schedules = response.data.result; + console.log("JSON 파싱 직전"); + console.log(schedules); + + const updatedSelected = JSON.parse(JSON.stringify(selected)); + + schedules.forEach(item => { + const [categoryPrefix, keyword] = item.scheduleTitle.split("_"); + const category = Object.keys(keywords).find( + c => c.replace(/\s/g, "") === categoryPrefix + ); + if (!category || !keywords[category].includes(keyword)) return; + + const time = item.startTime.slice(0, 5); + const days = item.days.map(d => reverseDayMap[d]).filter(Boolean); + + updatedSelected[category][keyword] = { + selected: true, + time, + days + }; + }); + + setSelected(updatedSelected); + } catch (error) { + console.error("기존 키워드 데이터를 불러오는 중 오류 발생:", error); + } + }; + + fetchData(); + }, [id]); + const toggleSelection = (category, keyword) => { - setSelected((prev) => ({ + setSelected(prev => ({ ...prev, [category]: { ...prev[category], @@ -100,14 +171,11 @@ const KeywordSelectionPage = () => { }; const saveTimeAndDays = (category, keyword, newData) => { - setSelected((prev) => ({ + setSelected(prev => ({ ...prev, [category]: { ...prev[category], - [keyword]: { - ...prev[category][keyword], - ...newData - } + [keyword]: { ...prev[category][keyword], ...newData } } })); }; @@ -118,37 +186,23 @@ const KeywordSelectionPage = () => { alert("로그인이 필요합니다."); return; } - - // 요일 변환 맵 - const dayMap = { - "월": "MONDAY", - "화": "TUESDAY", - "수": "WEDNESDAY", - "목": "THURSDAY", - "금": "FRIDAY", - "토": "SATURDAY", - "일": "SUNDAY" - }; - - // selected 가공 + const payload = []; - - for (const category in selected) { - for (const keyword in selected[category]) { - const item = selected[category][keyword]; - if (item.selected && item.days.length > 0) { + for (const [category, options] of Object.entries(selected)) { + for (const [keyword, { selected, time, days }] of Object.entries(options)) { + if (selected && days.length > 0) { payload.push({ - scheduleTitle: `${category} - ${keyword}`, - startTime: item.time + ":00", - days: item.days.map(day => dayMap[day]) + scheduleTitle: `${category.replace(/\s/g, "")}_${keyword}`, + startTime: time + ":00", + days: days.map(d => dayMap[d]) }); } } } - + try { const response = await axios.post( - `${ LOCAL_SPRING_API_URL }/basic-schedules`, // 실제 API 주소로 교체 + `${LOCAL_SPRING_API_URL}/basic-schedules`, payload, { headers: { @@ -173,28 +227,14 @@ const KeywordSelectionPage = () => {

• {category}

{options.map((keyword) => ( -
- - {selected[category][keyword].selected && - timeSettingKeywords[category]?.includes(keyword) && ( - saveTimeAndDays(category, keyword, data)} - /> - )} -
+ toggleSelection(category, keyword)} + onSave={(data) => saveTimeAndDays(category, keyword, data)} + /> ))}
@@ -279,14 +319,6 @@ const styles = { border: "1px solid #888", cursor: "pointer", fontSize: "12px", - }, - saveButton: { - fontSize: "12px", - padding: "5px 10px", - borderRadius: "5px", - backgroundColor: "#DABEC9", - border: "none", - cursor: "pointer" } }; diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js index 644963c..53d7793 100644 --- a/src/pages/LoginPage.js +++ b/src/pages/LoginPage.js @@ -2,7 +2,7 @@ import React from "react"; import { useNavigate } from "react-router-dom"; import Button from "../components/Button"; import Logo from "../components/Logo"; -import { LOCAL_SPRING_API_URL } from "../../constants/api"; +import { LOCAL_SPRING_API_URL } from "../constants/api"; const LoginPage = () => { const navigate = useNavigate(); From 27f612d0aa79386e2dc53cae1a5265346c12d406 Mon Sep 17 00:00:00 2001 From: seokjin1023 <150601054+seokjin1023@users.noreply.github.com> Date: Sat, 3 May 2025 17:52:23 +0900 Subject: [PATCH 11/25] Feat/dockerconnect (#10) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: dockerconnect * fix: dockerfile conf domain 적용하도록 수정 --- .dockerignore | 4 ++++ .github/workflows/deploy.yml | 22 ++++++++++++++++++++++ Dockerfile | 14 ++++++++++++++ default.conf | 9 +++++++++ 4 files changed, 49 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/deploy.yml create mode 100644 Dockerfile create mode 100644 default.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e600336 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +node_modules +build +.git +.github diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..0e7d4ce --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,22 @@ +name: Build and Push React Docker Image + +on: + push: + branches: [main, dev, feat/dockerconnect] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push Docker image + run: | + docker build -t ${{ secrets.DOCKER_USERNAME }}/react:latest . + docker push ${{ secrets.DOCKER_USERNAME }}/react:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bc39de7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# 빌드 단계 +FROM node:22-alpine AS build +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +# 배포 단계 +FROM nginx:alpine +COPY --from=build /app/build /usr/share/nginx/html +COPY default.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..c8e38a6 --- /dev/null +++ b/default.conf @@ -0,0 +1,9 @@ +server { + listen 80; + server_name www.humanicare.store humanicare.store; + root /usr/share/nginx/html; + index index.html; + location / { + try_files $uri $uri/ =404; + } +} From e01d20c12d9c689a528901de32780adc066a4391 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 3 May 2025 21:17:45 +0900 Subject: [PATCH 12/25] Feat/report page (#11) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * HomePage 추가 * ReportPage 추가 --- src/pages/HomePage.js | 56 ++++++++++++++++++++++++ src/pages/ReportsPage.js | 80 ++++++++++++++++++++++++++++++++++ src/pages/VoiceTrainingPage.js | 44 ++++++++++--------- 3 files changed, 160 insertions(+), 20 deletions(-) create mode 100644 src/pages/HomePage.js create mode 100644 src/pages/ReportsPage.js diff --git a/src/pages/HomePage.js b/src/pages/HomePage.js new file mode 100644 index 0000000..bf92db7 --- /dev/null +++ b/src/pages/HomePage.js @@ -0,0 +1,56 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Logo from "../components/Logo"; // 올바른 경로 + +const HomePage = () => { + const navigate = useNavigate(); + + return ( +
+
+ +
+
+ + +
+
+ ); +}; + +const styles = { + container: { + backgroundColor: "#F8EAD2", + height: "100vh", + display: "flex", + flexDirection: "column", + justifyContent: "center", // 수직 가운데 + alignItems: "center", // 수평 가운데 + padding: "20px", + }, + logoWrapper: { + marginBottom: "40px", + }, + buttonContainer: { + display: "flex", + gap: "30px", + flexDirection: "row", + justifyContent: "center", + }, + button: { + width: "140px", + height: "100px", + fontSize: "16px", + border: "1px solid #555", + borderRadius: "20px", + backgroundColor: "#FFF", + cursor: "pointer", + boxShadow: "2px 2px 5px rgba(0,0,0,0.2)", + }, +}; + +export default HomePage; \ No newline at end of file diff --git a/src/pages/ReportsPage.js b/src/pages/ReportsPage.js new file mode 100644 index 0000000..2f1f916 --- /dev/null +++ b/src/pages/ReportsPage.js @@ -0,0 +1,80 @@ +import React from "react"; +import Logo from "../components/Logo"; + +const ReportsPage = () => { + return ( +
+
+ +

몇월 몇주차 리포트입니다.

+
+ +
+

+ 리포트 내용 +

+
+ +
+

감정 분석 결과 이미지가 여기에 표시됩니다.

+
+
+ ); +}; + +const styles = { + container: { + backgroundColor: "#F8EAD2", + minHeight: "100vh", + padding: "30px", + display: "flex", + flexDirection: "column", + alignItems: "center", + }, + header: { + width: "100%", + maxWidth: "500px", + display: "flex", + justifyContent: "space-between", + alignItems: "center", + marginBottom: "20px", + }, + title: { + fontSize: "18px", + fontWeight: "bold", + color: "#1C2C5B", + }, + reportBox: { + width: "100%", + maxWidth: "500px", + backgroundColor: "#F8EAD2", + border: "1px solid #888", + borderRadius: "12px", + padding: "20px", + marginBottom: "30px", + maxHeight: "250px", + overflowY: "auto", + boxSizing: "border-box", + }, + reportText: { + fontSize: "15px", + color: "#444", + }, + imagePlaceholder: { + width: "100%", + maxWidth: "500px", + height: "300px", + backgroundColor: "#FFF", + border: "1px solid #ccc", + borderRadius: "10px", + display: "flex", + justifyContent: "center", + alignItems: "center", + }, + placeholderText: { + color: "#999", + fontStyle: "italic", + }, +}; + +export default ReportsPage; \ No newline at end of file diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js index 5a40422..3eefa4f 100644 --- a/src/pages/VoiceTrainingPage.js +++ b/src/pages/VoiceTrainingPage.js @@ -14,9 +14,13 @@ const VoiceTrainingPage = () => {
Memo -

- 안촉촉한 초코칩 나라에 살던 안촉촉한 초코칩이 초초초초초초콬초코촠칩.. 아직 미정이에유.. 텍스트 분석하기 좋은 글들을 넣어봅시다. -

+
+

오늘 하루는 어땠나요? 기분이 괜찮으신가요?

+

밖에 나가서 산책도 하셨어요?

+

식사는 잘 챙기셨는지 궁금합니다.

+

약은 꼭 챙겨드셔야 해요. 잊지 마세요.

+

목소리를 들으니 안심이 됩니다.

+
@@ -48,25 +52,25 @@ const styles = { }, memoContainer: { position: "relative", - width: "250px", - height: "200px", + width: "300px", // 너비 약간 키움 + padding: "20px", // 내부 여백 + backgroundImage: "url('/images/memo_background.png')", + backgroundSize: "cover", + backgroundRepeat: "no-repeat", marginBottom: "20px", - }, - memoImage: { - width : "100%", - height : "100%", - objectFit : "cover", - }, - memoText: { - position: "absolute", - top: "20px", - left: "20px", - right: "20px", + borderRadius: "10px", + }, + + memoImage: { + display: "none", // 안 써도 됨 (backgroundImage로 대체했기 때문) + }, + + memoText: { fontSize: "14px", - textAlign : "center", - lineHeight : "1.5", - fontWeight : "bold", - }, + lineHeight: "1.6", + fontWeight: "bold", + textAlign: "left", + }, nextButton: { backgroundColor : "#DABEC9", border: "none", From b72fc3448c6501b0401b0ec4e95b3006720c6e27 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 3 May 2025 21:26:06 +0900 Subject: [PATCH 13/25] =?UTF-8?q?kakao=20redirect=20page=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 5 +++++ src/components/oauth/KakaoRedirectPage.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 3187003..9b02a3a 100755 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,9 @@ import SignupPage from "./pages/SignupPage"; import VoiceTrainingPage from "./pages/VoiceTrainingPage"; import KeywordSelectionPage from "./pages/KeywordSelectionPage"; import FinalPage from "./pages/FinalPage"; +import HomePage from "./pages/HomePage"; +import ReportsPage from "./pages/ReportsPage"; + function App() { @@ -17,6 +20,8 @@ function App() { } /> } /> } /> + } /> + } /> {/* 카카오 로그인 리다이렉트 경로 추가 */} } /> diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js index dbd76c8..90aa021 100644 --- a/src/components/oauth/KakaoRedirectPage.js +++ b/src/components/oauth/KakaoRedirectPage.js @@ -24,7 +24,7 @@ const KakaoRedirectPage = () => { if (role === "ROLE_FIRST") { navigate("/voice-training"); } else { - navigate("/keywords"); + navigate("/home"); } } else { console.error("OAuth2 로그인 오류"); From 50029c1007220f0713556e4b5cb8a00fa939cf71 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 3 May 2025 21:55:18 +0900 Subject: [PATCH 14/25] Feat/update (#13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 --- src/axios/TokenInterceptor.js | 6 +-- src/components/oauth/KakaoRedirectPage.js | 4 +- src/constants/api.js | 5 ++- src/global.css | 54 +++++++++++++++++++++++ src/index.js | 1 + src/pages/KeywordSelectionPage.js | 6 +-- src/pages/LoginPage.js | 4 +- 7 files changed, 69 insertions(+), 11 deletions(-) diff --git a/src/axios/TokenInterceptor.js b/src/axios/TokenInterceptor.js index 3bfee88..65e38bb 100644 --- a/src/axios/TokenInterceptor.js +++ b/src/axios/TokenInterceptor.js @@ -1,5 +1,5 @@ import axios from 'axios'; -import {LOCAL_SPRING_API_URL} from "../constants/api"; +import { SPRING_API_URL } from "../constants/api"; const instance = axios.create(); @@ -49,7 +49,7 @@ instance.interceptors.response.use(async function (response) { } if (data.message === "유효하지 않은 토큰") { try { - const tokenReissueResult = await instance.post(`${LOCAL_SPRING_API_URL}/reissue`); + const tokenReissueResult = await instance.post(`${ SPRING_API_URL}/reissue`); if (tokenReissueResult.status === 200) { // 재발급 성공시 로컬스토리지에 토큰 저장 const accessToken = tokenReissueResult.headers['authorization'] || tokenReissueResult.headers['Authorization']; @@ -73,7 +73,7 @@ instance.interceptors.response.use(async function (response) { export const Logout = async () => { try { const token = localStorage.getItem('accessToken'); - await axios.post(`${LOCAL_SPRING_API_URL}/logout`, null, { + await axios.post(`${ SPRING_API_URL}/logout`, null, { headers: { Authorization: `Bearer ${token}` } diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js index 90aa021..831a64d 100644 --- a/src/components/oauth/KakaoRedirectPage.js +++ b/src/components/oauth/KakaoRedirectPage.js @@ -1,7 +1,7 @@ import React, { useEffect, useRef } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import instance from "../../axios/TokenInterceptor"; -import { LOCAL_SPRING_API_URL } from "../../constants/api"; +import { SPRING_API_URL } from "../constants/api"; const KakaoRedirectPage = () => { const location = useLocation(); @@ -12,7 +12,7 @@ const KakaoRedirectPage = () => { const handleOAuthKakao = async (code) => { try { const response = await instance.get( - `${LOCAL_SPRING_API_URL}/oauth/login/kakao?code=${code}` + `${ SPRING_API_URL}/oauth/login/kakao?code=${code}` ); if (response.data.isSuccess) { diff --git a/src/constants/api.js b/src/constants/api.js index 1820992..7e3dff9 100644 --- a/src/constants/api.js +++ b/src/constants/api.js @@ -1,2 +1,5 @@ export const LOCAL_SPRING_API_URL = "http://localhost:8080/api/spring"; -export const LOCAL_FASTAPI_API_URL = "http://localhost:8000/api/fastapi"; \ No newline at end of file +export const LOCAL_FASTAPI_API_URL = "http://localhost:8000/api/fastapi"; + +export const SPRING_API_URL = "https://www.humanicare.store/api/spring"; +export const FASTAPI_API_URL = "https://www.humanicare.store/api/fastapi"; \ No newline at end of file diff --git a/src/global.css b/src/global.css index e69de29..c3e4b88 100644 --- a/src/global.css +++ b/src/global.css @@ -0,0 +1,54 @@ +/* 기본 설정 */ +* { + box-sizing: border-box; + } + + body { + margin: 0; + padding: 0; + background-color: var(--bg-color); + font-family: "Noto Sans KR", sans-serif; + } + + /* CSS 변수 정의 */ + :root { + --bg-color: #f8ead2; + --accent-color: #dabec9; + --font-dark: #1c2c5b; + --font-light: #999; + --btn-radius: 12px; + } + + /* 버튼 스타일 */ + .button-basic { + padding: 12px 24px; + border: 1px solid #333; + background-color: white; + border-radius: var(--btn-radius); + font-size: 16px; + cursor: pointer; + } + + .button-accent { + background-color: var(--accent-color); + color: white; + border: none; + } + + /* 센터 정렬 */ + .flex-center { + display: flex; + justify-content: center; + align-items: center; + } + + /* 카드/박스 */ + .card { + background-color: white; + border: 1px solid #ccc; + border-radius: var(--btn-radius); + padding: 20px; + box-shadow: 2px 2px 6px rgba(0,0,0,0.1); + } + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index d563c0f..5aa89e3 100755 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; +import './global.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index 4ce71cc..39cd16e 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -5,7 +5,7 @@ import "react-time-picker/dist/TimePicker.css"; import "react-clock/dist/Clock.css"; import Logo from "../components/Logo"; import axios from "axios"; -import { LOCAL_SPRING_API_URL } from "../constants/api"; +import { SPRING_API_URL } from "../constants/api"; import { getAccessToken } from "../components/Header"; const keywords = { @@ -119,7 +119,7 @@ const KeywordSelectionPage = () => { try { const response = await axios.get( - `${LOCAL_SPRING_API_URL}/all-basic-schedules`, + `${SPRING_API_URL}/all-basic-schedules`, { headers: { Authorization: `Bearer ${token}` }, } @@ -202,7 +202,7 @@ const KeywordSelectionPage = () => { try { const response = await axios.post( - `${LOCAL_SPRING_API_URL}/basic-schedules`, + `${ SPRING_API_URL}/basic-schedules`, payload, { headers: { diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js index 53d7793..b67d018 100644 --- a/src/pages/LoginPage.js +++ b/src/pages/LoginPage.js @@ -2,12 +2,12 @@ import React from "react"; import { useNavigate } from "react-router-dom"; import Button from "../components/Button"; import Logo from "../components/Logo"; -import { LOCAL_SPRING_API_URL } from "../constants/api"; +import { SPRING_API_URL } from "../constants/api"; const LoginPage = () => { const navigate = useNavigate(); const handleKakaoLogin = () => { - window.location.href = `${LOCAL_SPRING_API_URL}/oauth/kakao`; + window.location.href = `${ SPRING_API_URL}/oauth/kakao`; }; return ( From e2db7f7fca0f6efffdd6d8e53fff5d0ddde1a8cd Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sat, 3 May 2025 22:05:00 +0900 Subject: [PATCH 15/25] Feat/update (#14) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 * kakao redirect page 오류 수정 --- src/components/oauth/KakaoRedirectPage.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js index 831a64d..860407e 100644 --- a/src/components/oauth/KakaoRedirectPage.js +++ b/src/components/oauth/KakaoRedirectPage.js @@ -1,7 +1,8 @@ import React, { useEffect, useRef } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import instance from "../../axios/TokenInterceptor"; -import { SPRING_API_URL } from "../constants/api"; +import { SPRING_API_URL } from "../../constants/api"; + const KakaoRedirectPage = () => { const location = useLocation(); From 975e727d6de885a6bf46e0a98eb332c0e1510018 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sun, 4 May 2025 12:22:33 +0900 Subject: [PATCH 16/25] Feat/update (#15) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 * kakao redirect page 오류 수정 * LoginPage 카카오 로그인 이미지 수정 --- src/pages/KeywordSelectionPage.js | 12 +++++++- src/pages/LoginPage.js | 48 +++++++++++++++++-------------- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index 39cd16e..c248de6 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -129,7 +129,17 @@ const KeywordSelectionPage = () => { console.log("JSON 파싱 직전"); console.log(schedules); - const updatedSelected = JSON.parse(JSON.stringify(selected)); + const updatedSelected = Object.fromEntries( + Object.entries(keywords).map(([category, list]) => [ + category, + Object.fromEntries( + list.map((keyword) => [ + keyword, + { selected: false, time: "08:00", days: [] } + ]) + ) + ]) + ); schedules.forEach(item => { const [categoryPrefix, keyword] = item.scheduleTitle.split("_"); diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js index b67d018..ae28ac6 100644 --- a/src/pages/LoginPage.js +++ b/src/pages/LoginPage.js @@ -1,45 +1,49 @@ import React from "react"; -import { useNavigate } from "react-router-dom"; -import Button from "../components/Button"; -import Logo from "../components/Logo"; import { SPRING_API_URL } from "../constants/api"; +import Logo from "../components/Logo"; const LoginPage = () => { - const navigate = useNavigate(); const handleKakaoLogin = () => { - window.location.href = `${ SPRING_API_URL}/oauth/kakao`; + window.location.href = `${SPRING_API_URL}/oauth/kakao`; }; return ( -
+
-

회원가입하기

- -
); }; const styles = { container: { - display : "flex", - flexDirection : "column", - alignItems : "center", + display: "flex", + flexDirection: "column", + alignItems: "center", justifyContent: "center", height: "100vh", backgroundColor: "#FAE8D4", + padding: "0 20px", + textAlign: "center", }, - title: { - fontSize : "20px", - marginBottom: "20px", + message: { + fontSize: "18px", + color: "#333", + margin: "30px 0 40px", + lineHeight: "1.5", + fontWeight: "500", }, - signupButton: { - backgroundColor: "transparent", - border: "1px solid black", - padding: "10px 20px", - borderRadius: "8px", - fontSize: "16px", - marginBottom: "20px", + kakaoButton: { + width: "250px", cursor: "pointer", }, }; From 6796fd48fba52b8b742df813db169d6d3367c507 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Sun, 4 May 2025 12:54:15 +0900 Subject: [PATCH 17/25] Feat/update (#16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 * kakao redirect page 오류 수정 * LoginPage 카카오 로그인 이미지 수정 * voice 녹음 기능 추가 --- src/pages/FinalPage.js | 2 - src/pages/VoiceTrainingPage.js | 134 +++++++++++++++++++++++++++++---- 2 files changed, 120 insertions(+), 16 deletions(-) diff --git a/src/pages/FinalPage.js b/src/pages/FinalPage.js index a8975c6..5d75a1e 100644 --- a/src/pages/FinalPage.js +++ b/src/pages/FinalPage.js @@ -1,11 +1,9 @@ // FinalPage.jsx import React, { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; import Logo from "../components/Logo"; import { Logout } from "../axios/TokenInterceptor"; // 실제 axios 파일 경로에 맞게 수정 const FinalPage = () => { - const navigate = useNavigate(); const [showConfirm, setShowConfirm] = useState(false); const handleLogoutClick = () => { diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js index 3eefa4f..d3a4153 100644 --- a/src/pages/VoiceTrainingPage.js +++ b/src/pages/VoiceTrainingPage.js @@ -1,10 +1,71 @@ -import React from "react"; +import React, { useState, useRef } from "react"; import { useNavigate } from "react-router-dom"; -import MicButton from "../components/MicButton"; +import MicRecorder from "mic-recorder-to-mp3"; import Logo from "../components/Logo"; +import { FASTAPI_API_URL } from "../constants/api"; + +const recorder = new MicRecorder({ bitRate: 128 }); const VoiceTrainingPage = () => { const navigate = useNavigate(); + const [isRecording, setIsRecording] = useState(false); + const [blobURL, setBlobURL] = useState(""); + const [audioFile, setAudioFile] = useState(null); + const audioRef = useRef(null); + + const handleMicClick = async () => { + if (!isRecording) { + try { + await navigator.mediaDevices.getUserMedia({ audio: true }); + await recorder.start(); + setIsRecording(true); + } catch (err) { + alert("마이크 권한이 필요합니다."); + } + } else { + try { + const [buffer, blob] = await recorder.stop().getMp3(); + const file = new File(buffer, "voice.mp3", { + type: blob.type, + lastModified: Date.now(), + }); + setAudioFile(file); + setBlobURL(URL.createObjectURL(blob)); + setIsRecording(false); + } catch (e) { + console.error("녹음 종료 실패:", e); + setIsRecording(false); + } + } + }; + + const handleUpload = async () => { + if (!audioFile) { + alert("녹음된 음성이 없습니다."); + return; + } + + const formData = new FormData(); + formData.append("file", audioFile); + + try { + const res = await fetch(`${FASTAPI_API_URL}/upload`, { + method: "POST", + body: formData, + }); + const data = await res.json(); + console.log("업로드 성공:", data); + alert("업로드 완료!"); + } catch (error) { + console.error("업로드 실패:", error); + alert("업로드 실패"); + } + }; + + const handleReset = () => { + setBlobURL(""); + setAudioFile(null); + }; return (
@@ -13,7 +74,6 @@ const VoiceTrainingPage = () => {

(아래의 마이크 버튼을 누르고 텍스트를 읽어주세요.)

- Memo

오늘 하루는 어땠나요? 기분이 괜찮으신가요?

밖에 나가서 산책도 하셨어요?

@@ -23,7 +83,20 @@ const VoiceTrainingPage = () => {
- + + + {blobURL && ( +
+
+ )} ); }; @@ -14,6 +60,9 @@ const styles = { border: "none", cursor: "pointer", marginBottom: "20px", + display: "flex", + flexDirection: "column", + alignItems: "center" }, micIcon: { width: "60px", From 212b06be658008a6d56ba57accd661e64f204c88 Mon Sep 17 00:00:00 2001 From: seokjin1023 <150601054+seokjin1023@users.noreply.github.com> Date: Sun, 4 May 2025 18:17:17 +0900 Subject: [PATCH 19/25] =?UTF-8?q?fix:=20conf=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=A0=95=EC=A0=81=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B3=A0=EB=A0=A4=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.conf b/default.conf index c8e38a6..9662df9 100644 --- a/default.conf +++ b/default.conf @@ -1,9 +1,9 @@ server { listen 80; - server_name www.humanicare.store humanicare.store; + server_name www.humanicare.store; root /usr/share/nginx/html; index index.html; location / { - try_files $uri $uri/ =404; + try_files $uri /index.html; } } From 995e3e1c94b2d4d8aa32546f0c8dfeb1cd878b6a Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Tue, 6 May 2025 13:11:01 +0900 Subject: [PATCH 20/25] Feat/update (#19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 * kakao redirect page 오류 수정 * LoginPage 카카오 로그인 이미지 수정 * voice 녹음 기능 추가 * readme 수정 * redirection 에러 수정 --- src/components/oauth/KakaoRedirectPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/oauth/KakaoRedirectPage.js b/src/components/oauth/KakaoRedirectPage.js index 860407e..78ec41d 100644 --- a/src/components/oauth/KakaoRedirectPage.js +++ b/src/components/oauth/KakaoRedirectPage.js @@ -22,7 +22,7 @@ const KakaoRedirectPage = () => { localStorage.setItem("accessToken", accessToken); const role = response.data.result; - if (role === "ROLE_FIRST") { + if (role === "FIRST") { navigate("/voice-training"); } else { navigate("/home"); From 3aaa6f6cccc592026df49ed84a5bef421c76d0c7 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE <103622094+lshwa@users.noreply.github.com> Date: Wed, 14 May 2025 15:47:58 +0900 Subject: [PATCH 21/25] Feat/update (#20) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * global.css 추가 * localhost 에서 배포한 spring으로 변경 * kakao redirect page 오류 수정 * LoginPage 카카오 로그인 이미지 수정 * voice 녹음 기능 추가 * readme 수정 * redirection 에러 수정 * keyword 호칭 입력칸 생성 --- src/pages/KeywordSelectionPage.js | 63 ++++++++++++++++++++++++++++--- src/pages/VoiceTrainingPage.js | 4 +- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index c248de6..769320b 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -12,8 +12,7 @@ const keywords = { "수면 여부 확인": ["아침", "밤"], "식사 여부 확인": ["아침", "점심", "저녁"], "약 복용 여부 확인": ["아침", "점심", "저녁"], - "활동 여부 확인": ["외출", "청소", "교회", "운동", "목욕"], - "심리적 상태 체크": ["O", "X"] + "활동 여부 확인": ["외출", "청소", "교회", "운동", "목욕"] }; const timeSettingKeywords = new Set([ @@ -111,6 +110,8 @@ const KeywordSelectionPage = () => { ]) ) ); + + const [guardianTitle, setGuardianTitle] = useState(""); useEffect(() => { const fetchData = async () => { @@ -210,6 +211,14 @@ const KeywordSelectionPage = () => { } } + if (guardianTitle.trim() !== "") { + payload.push({ + scheduleTitle : "GuardianTitle_" + guardianTitle.trim(), + startTime: "00:00:00", + days: [] + }); + } + try { const response = await axios.post( `${ SPRING_API_URL}/basic-schedules`, @@ -230,8 +239,21 @@ const KeywordSelectionPage = () => { return (
- -

확인하고 싶은 키워드를 선택해주세요.

+ +

확인하고 싶은 키워드를 선택해주세요.

+ +
+
+
+ + setGuardianTitle(e.target.value)} + /> +
+ {Object.entries(keywords).map(([category, options]) => (

• {category}

@@ -249,6 +271,8 @@ const KeywordSelectionPage = () => {
))} +
+
); @@ -269,6 +293,23 @@ const styles = { fontWeight: "bold", marginBottom: "20px", }, + inputGroup: { + width: "100%", + maxWidth: "400px", + marginBottom: "15px", + }, + label: { + display: "block", + marginBottom : "5px", + fontWeight: "bold", + }, + input: { + width: "100%", + padding: "10px", + borderRadius: "10px", + border: "1px solid #ccc", + boxSizing: "border-box", + }, category: { marginBottom: "15px", textAlign: "left", @@ -329,7 +370,19 @@ const styles = { border: "1px solid #888", cursor: "pointer", fontSize: "12px", - } + }, + contentWrapper: { + display: "flex", + justifyContent: "flex-start", + width: "100%", + maxWidth: "800px", + }, + leftColumn: { + display: "flex", + flexDirection: "column", + alignItems: "flex-start", + width: "100%", + }, }; export default KeywordSelectionPage; diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js index d3a4153..1d6335f 100644 --- a/src/pages/VoiceTrainingPage.js +++ b/src/pages/VoiceTrainingPage.js @@ -49,7 +49,7 @@ const VoiceTrainingPage = () => { formData.append("file", audioFile); try { - const res = await fetch(`${FASTAPI_API_URL}/upload`, { + const res = await fetch(`${FASTAPI_API_URL}/voices`, { method: "POST", body: formData, }); @@ -85,7 +85,7 @@ const VoiceTrainingPage = () => { {blobURL && ( From 885642e4f9c84aa4998c1e00f704f9d3d65d471a Mon Sep 17 00:00:00 2001 From: sjpark1023 Date: Tue, 27 May 2025 12:41:01 +0900 Subject: [PATCH 22/25] =?UTF-8?q?fix:=20voicetrainingPage=EC=97=90?= =?UTF-8?q?=EC=84=9C=20token=EB=8F=84=20=EA=B0=99=EC=9D=B4=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/VoiceTrainingPage.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pages/VoiceTrainingPage.js b/src/pages/VoiceTrainingPage.js index 1d6335f..5ca0dcc 100644 --- a/src/pages/VoiceTrainingPage.js +++ b/src/pages/VoiceTrainingPage.js @@ -3,6 +3,7 @@ import { useNavigate } from "react-router-dom"; import MicRecorder from "mic-recorder-to-mp3"; import Logo from "../components/Logo"; import { FASTAPI_API_URL } from "../constants/api"; +import {getAccessToken} from "../components/Header"; const recorder = new MicRecorder({ bitRate: 128 }); @@ -45,12 +46,18 @@ const VoiceTrainingPage = () => { return; } + const token = getAccessToken(); + if (!token) return; + const formData = new FormData(); formData.append("file", audioFile); try { const res = await fetch(`${FASTAPI_API_URL}/voices`, { method: "POST", + headers: { + Authorization: `Bearer ${token}` + }, body: formData, }); const data = await res.json(); From 5c74327e9afb404b342223e124ffdb9319da9bd8 Mon Sep 17 00:00:00 2001 From: sjpark1023 Date: Tue, 27 May 2025 13:01:20 +0900 Subject: [PATCH 23/25] =?UTF-8?q?fix:=20API=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=98=AC=EB=B0=94=EB=A5=B4=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/api.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/constants/api.js b/src/constants/api.js index 7e3dff9..e252cb9 100644 --- a/src/constants/api.js +++ b/src/constants/api.js @@ -1,5 +1,5 @@ export const LOCAL_SPRING_API_URL = "http://localhost:8080/api/spring"; export const LOCAL_FASTAPI_API_URL = "http://localhost:8000/api/fastapi"; -export const SPRING_API_URL = "https://www.humanicare.store/api/spring"; -export const FASTAPI_API_URL = "https://www.humanicare.store/api/fastapi"; \ No newline at end of file +export const SPRING_API_URL = "https://springboot:8080/api/spring"; +export const FASTAPI_API_URL = "https://fastapi:8000/api/fastapi"; \ No newline at end of file From e9255be67adc165555f2ad38077e7da9cb6ce467 Mon Sep 17 00:00:00 2001 From: sjpark1023 Date: Tue, 27 May 2025 13:08:20 +0900 Subject: [PATCH 24/25] =?UTF-8?q?fix:=20API=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EB=90=98=EB=8F=8C=EB=A6=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/api.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/constants/api.js b/src/constants/api.js index e252cb9..7e3dff9 100644 --- a/src/constants/api.js +++ b/src/constants/api.js @@ -1,5 +1,5 @@ export const LOCAL_SPRING_API_URL = "http://localhost:8080/api/spring"; export const LOCAL_FASTAPI_API_URL = "http://localhost:8000/api/fastapi"; -export const SPRING_API_URL = "https://springboot:8080/api/spring"; -export const FASTAPI_API_URL = "https://fastapi:8000/api/fastapi"; \ No newline at end of file +export const SPRING_API_URL = "https://www.humanicare.store/api/spring"; +export const FASTAPI_API_URL = "https://www.humanicare.store/api/fastapi"; \ No newline at end of file From a6b3746ff1cad78f0b7af2dc1ae98832a31aae57 Mon Sep 17 00:00:00 2001 From: SEUNGHWA LEE Date: Sun, 1 Jun 2025 14:18:48 +0900 Subject: [PATCH 25/25] =?UTF-8?q?=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/KeywordSelectionPage.js | 73 +++++++++++++++++++------------ 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/src/pages/KeywordSelectionPage.js b/src/pages/KeywordSelectionPage.js index 769320b..374df95 100644 --- a/src/pages/KeywordSelectionPage.js +++ b/src/pages/KeywordSelectionPage.js @@ -112,6 +112,7 @@ const KeywordSelectionPage = () => { ); const [guardianTitle, setGuardianTitle] = useState(""); + const [guardianPhone, setGuardianPhone] = useState(""); useEffect(() => { const fetchData = async () => { @@ -125,10 +126,7 @@ const KeywordSelectionPage = () => { headers: { Authorization: `Bearer ${token}` }, } ); - console.log("확인하기"); const schedules = response.data.result; - console.log("JSON 파싱 직전"); - console.log(schedules); const updatedSelected = Object.fromEntries( Object.entries(keywords).map(([category, list]) => [ @@ -219,6 +217,14 @@ const KeywordSelectionPage = () => { }); } + if (guardianPhone.trim() !== "") { + payload.push({ + scheduleTitle : "GuardianPhone_" + guardianPhone.trim(), + startTime: "00:00:00", + days: [] + }); + } + try { const response = await axios.post( `${ SPRING_API_URL}/basic-schedules`, @@ -229,7 +235,6 @@ const KeywordSelectionPage = () => { }, } ); - console.log("서버 응답:", response.data); navigate("/final"); } catch (error) { console.error("데이터 전송 실패:", error); @@ -246,34 +251,44 @@ const KeywordSelectionPage = () => {
- setGuardianTitle(e.target.value)} - /> -
+ setGuardianTitle(e.target.value)} + /> +
- {Object.entries(keywords).map(([category, options]) => ( -
-

• {category}

-
- {options.map((keyword) => ( - toggleSelection(category, keyword)} - onSave={(data) => saveTimeAndDays(category, keyword, data)} - /> - ))} -
+
+ + setGuardianPhone(e.target.value)} + />
- ))} + + {Object.entries(keywords).map(([category, options]) => ( +
+

• {category}

+
+ {options.map((keyword) => ( + toggleSelection(category, keyword)} + onSave={(data) => saveTimeAndDays(category, keyword, data)} + /> + ))} +
+
+ ))}
- + ); }; @@ -385,4 +400,4 @@ const styles = { }, }; -export default KeywordSelectionPage; +export default KeywordSelectionPage; \ No newline at end of file