From 90311455c2b7ed54742c6e21697020e31b48d13e Mon Sep 17 00:00:00 2001 From: chominju02 Date: Tue, 12 Aug 2025 02:32:15 +0900 Subject: [PATCH 01/11] =?UTF-8?q?feat:=20=EC=A0=9C=ED=9C=B4=EC=97=85?= =?UTF-8?q?=EC=B2=B4=20=EC=8B=A0=EC=B2=AD=20=EC=99=84=EB=A3=8C=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/messages_ko.properties | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/resources/messages_ko.properties b/src/main/resources/messages_ko.properties index 84f4aca7..b3f5008e 100644 --- a/src/main/resources/messages_ko.properties +++ b/src/main/resources/messages_ko.properties @@ -16,6 +16,21 @@ notify.exam.application.complete.sms=\ \uB9C8\uC774\uD398\uC774\uC9C0 \uBC14\uB85C\uAC00\uAE30: https://www.mosuedu.com/mypage\n\n\ \uC2DC\uD5D8 1\uC8FC\uC77C \uC804,\uC2DC\uD5D8 \uAD00\uB828 \uC720\uC758\uC0AC\uD56D\uACFC \uC218\uD5D8\uD45C \uC548\uB0B4 \uB9AC\uB9C8\uC778\uB4DC \uC54C\uB9BC\uC774 \uBC1C\uC1A1\uB420 \uC608\uC815\uC785\uB2C8\uB2E4.\n\ \uC720\uC758\uC0AC\uD56D \uBC14\uB85C\uAC00\uAE30: https://www.mosuedu.com/warning +notify.exam.guest.application.complete.alimtalk=\ +[\uBAA8\uC218] \uBAA8\uC758\uC218\uB2A5 \uC2E0\uCCAD\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!\n\n\ +\u25A0 \uACB0\uC81C\uBC88\uD638: #{paymentKey}\n\ +\u25A0 \uC751\uC2DC\uC77C\uC790: #{examDate}\n\ +\u25A0 \uC2DC\uD5D8\uC7A5\uC18C: #{schoolName}\n\ +\u25A0 \uB3C4\uC2DC\uB77D: #{lunch}\n\n\ +\uC2DC\uD5D8 1\uC8FC\uC77C \uC804, \uC2DC\uD5D8 \uAD00\uB828 \uC720\uC758\uC0AC\uD56D\uACFC \uC218\uD5D8\uD45C \uC548\uB0B4 \uB9AC\uB9C8\uC778\uB4DC \uC54C\uB9BC\uC774 \uBC1C\uC1A1\uB420 \uC608\uC815\uC785\uB2C8\uB2E4. +notify.exam.guest.application.complete.sms=\ +[\uBAA8\uC218] \uBAA8\uC758\uC218\uB2A5 \uC2E0\uCCAD\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!\n\n\ +\u25A0 \uACB0\uC81C\uBC88\uD638: #{paymentKey}\n\ +\u25A0 \uC751\uC2DC\uC77C\uC790: #{examDate}\n\ +\u25A0 \uC2DC\uD5D8\uC7A5\uC18C: #{schoolName}\n\ +\u25A0 \uB3C4\uC2DC\uB77D: #{lunch}\n\n\ +\uC2DC\uD5D8 1\uC8FC\uC77C \uC804, \uC2DC\uD5D8 \uAD00\uB828 \uC720\uC758\uC0AC\uD56D\uACFC \uC218\uD5D8\uD45C \uC548\uB0B4 \uB9AC\uB9C8\uC778\uB4DC \uC54C\uB9BC\uC774 \uBC1C\uC1A1\uB420 \uC608\uC815\uC785\uB2C8\uB2E4.\n\n\ +\uC720\uC758\uC0AC\uD56D \uBC14\uB85C\uAC00\uAE30 : https://www.mosuedu.com/warning notify.exam.oneweek.reminder.alimtalk=\ [\uBAA8\uC218] \uBAA8\uC758\uC218\uB2A5\uC774 1\uC8FC\uC77C \uC55E\uC73C\uB85C \uB2E4\uAC00\uC654\uC2B5\uB2C8\uB2E4!\n\n\ \u25A0 \uC2DC\uD5D8\uC77C\uC790: #{examDate}\n\ From 1c64a570f1e674c269dc32854e815f19bee51aee Mon Sep 17 00:00:00 2001 From: wlgns12370 Date: Tue, 12 Aug 2025 03:33:11 +0900 Subject: [PATCH 02/11] MOSU feat: disable secure flag for development cookies --- .../life/mosu/mosuserver/global/util/CookieBuilderUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java b/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java index 7f5ea9aa..b34fc5e9 100644 --- a/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java +++ b/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java @@ -65,7 +65,7 @@ public static String createLocalCookieString(String name, String value, Long max public static ResponseCookie createDevelopResponseCookie(String name, String value, Long maxAge) { return createBaseResponseCookieBuilder(name, value, maxAge) - .secure(true) + .secure(false) .domain(".mosuedu.com") .sameSite("Strict") .build(); @@ -81,7 +81,7 @@ public static ResponseCookie createDevelopResponseCookie(String name, String val */ public static Cookie createDevelopCookie(String name, String value, Long maxAge) { Cookie cookie = createBaseServletCookie(name, value, maxAge); - cookie.setSecure(true); + cookie.setSecure(false); cookie.setDomain(".mosuedu.com"); return cookie; } From add7bd32c12a48a6b52f457a638292eb5082402f Mon Sep 17 00:00:00 2001 From: wlgns12370 Date: Tue, 12 Aug 2025 03:45:33 +0900 Subject: [PATCH 03/11] =?UTF-8?q?MOSU=20feat:=20test=20server=20flyway=20D?= =?UTF-8?q?B=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V2__insert_data.sql | 306 +++++++++--------- 1 file changed, 153 insertions(+), 153 deletions(-) diff --git a/src/main/resources/db/migration/V2__insert_data.sql b/src/main/resources/db/migration/V2__insert_data.sql index b4f0b5f5..e7ebaf9a 100644 --- a/src/main/resources/db/migration/V2__insert_data.sql +++ b/src/main/resources/db/migration/V2__insert_data.sql @@ -1,153 +1,153 @@ --- 학교 -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.636240', '2025-08-07 13:11:24.636240', '강남구 남부순환로378길 39', '서울특별시', - '06299', - 'DAECHI', 532, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, '대치중학교', - false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.712606', '2025-08-07 13:11:24.712606', '양천구 목동동로 235', '서울특별시', - '07996', 'MOKDONG', 896, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, - '목운중학교', false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.718072', '2025-08-07 13:11:24.718072', '양천구 중앙로 206', '서울특별시', '08091', - 'MOKDONG', 896, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '신서중학교', - false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.723008', '2025-08-07 13:11:24.723008', '강남구 영동대로 101', '서울특별시', - '06328', - 'DAECHI', 840, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, '개원중학교', - false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.727606', '2025-08-07 13:11:24.727606', '강남구 영동대로 101', '서울특별시', - '06328', - 'DAECHI', 840, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '개원중학교', - false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.732472', '2025-08-07 13:11:24.732472', '영등포구 선유서로13길 6', '서울특별시', - '07283', 'MOKDONG', 558, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, - '문래중학교', false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.740652', '2025-08-07 13:11:24.740652', '노원구 노원로 492', '서울특별시', - '01678', 'NOWON', 448, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, - '온곡중학교', false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.747536', '2025-08-07 13:11:24.747536', '노원구 노원로 492', '서울특별시', - '01673', 'NOWON', 448, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, - '온곡중학교', false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.755154', '2025-08-07 13:11:24.755154', '수성구 시지로 66', '대구광역시', - '42251', 'DAEGU', 392, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, - '노변중학교', false); -INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, - exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -VALUES ('2025-08-07 13:11:24.763288', '2025-08-07 13:11:24.763288', '수성구 시지로 66', '대구광역시', - '42251', 'DAEGU', 392, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, - '노변중학교', false); - --- 이벤트 -INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, - event_link, event_title, deleted) -VALUES ('2025-08-07 16:02:29.725574', '2025-08-07 16:02:29.725574', - '78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', - 'event/92151238-2ce3-444a-b5ef-9afb45988f01_78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', - 'PUBLIC', '2025-11-02', '2025-08-07', 'https://www.mosuedu.com/events/recommend', - '친구야 수능 치고 만원 받자!', false); -INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, - event_link, event_title, deleted) -VALUES ('2025-08-08 15:44:22.962184', '2025-08-08 15:44:22.962184', 'event-1.jpeg', - 'event/76a5c2fb-522a-4f86-a773-2baa80c336c4_event-1.jpeg', 'PUBLIC', '2025-12-31', - '2025-08-01', - 'https://www.medsky.co.kr/?fbclid=PAQ0xDSwMCYqJleHRuA2FlbQIxMQABp2RuRa3LXajOc8u3WmvdJ1RU9BhFCi7WORwWX0dM539Uvpmw080SNp5YYftB_aem_ys794fY1xyubFiy9EZSnug', - '메드스카이 GRAND OPEN, 모수 회원이면 5만원 할인', false); -INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, - event_link, event_title, deleted) -VALUES ('2025-08-08 15:50:54.014641', '2025-08-08 15:50:54.014641', 'carousel-2.png', - 'event/369859c2-c678-4edd-a30e-21e60011924f_carousel-2.png', 'PUBLIC', '2025-12-31', - '2025-08-01', - 'https://skyhacks.oopy.io/?fbclid=PAQ0xDSwMCYrZleHRuA2FlbQIxMQABp5KOImPRKXoNbGHgYTKbZ5mYlHpaVuGaAxfoz_ZqVGaqcdkTBMMPn3M3Q1Dn_aem_bg0-V6eNLt7jwxWnB8KJ3Q', - '모수가 강력 추천하는 SKY 독학 관리 프로그램', false); - --- 게시글 -INSERT INTO sa.notice (created_at, updated_at, author, content, title, user_id, deleted) -VALUES ('2025-08-06 23:27:52.391738', '2025-08-06 23:27:52.391738', '관리자', '![모수 이벤트 이미지](https://mosu-files.s3.amazonaws.com/notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png) - -친구에게 \'**모의가 아닌 진짜 수능**\'을 추천하고, **1만 원 환급 혜택**을 받아 가세요! - ---- - -**참여 방법** - -1. 아래 입력란에 **내가 추천한 친구의 이름과 연락처**, **나의 환급 계좌번호**를 작성해 주세요. -2. **내가 추천한 친구가 모의 수능 신청 시 추천인란에 내 전화번호를 정확히 입력**하도록 도와주세요. -3. ※ 제휴업체 신청링크를 통해 모의수능에 신청한 경우에도, **내가 추천한 친구가 모수 홈페이지에서 직접 신청하면 이벤트 참여 가능**합니다. - ---- - -**보상 지급 안내** - -* **환급 금액**: 10,000원 -* **지급 시기**: 2025년 11월 중 **일괄 송금** -* **이벤트 기간**: ~ 2025년 11월 2일까지 - ---- - -**유의사항** - -* 추천인과 추천받은 친구의 **정보가 정확히 일치**해야 보상이 지급됩니다. -* **이벤트 중복 신청은 불가**하며, 여러 명을 추천하더라도 **1인당 최초 1회만 인정**됩니다. -* 이벤트 페이지 정보 입력은 **1회만 가능**하며, 작성 후 **수정이 불가**하니 신중히 입력해 주세요. -* ※ 수정이 필요한 경우 **고객센터로 문의** 바랍니다. - ---- - -**궁금한 점이 있다면** - -* [모수 홈페이지 문의] -* 카카오톡 채널: [https://pf.kakao.com/_xhHxjxin](https://pf.kakao.com/_xhHxjxin) - - -**정확하게 입력하고, 추천 보상도 꼭 챙기세요!**', '[이벤트] 친구야 수능 치고 만원 받자!', 1, false); -INSERT INTO sa.notice_attachment (file_name, s3key, visibility, notice_id) -VALUES ('event.png', 'notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', 'PUBLIC', 1); - --- FAQ -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:08:39.444988', '2025-08-06 23:08:39.444988', - '개인 모의고사를 지참하지 않을 시 평가원 기출 모의고사를 제공합니다.
하지만, 더 나은 실전 경험을 위해 풀어본 적 없는 고퀄리티 사설 모의고사를 가져오시는 것을 권장합니다.', - '관리자', '모의고사를 꼭 가져가야 하나요?', 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:09:09.241691', '2025-08-06 23:09:09.241691', - '시험지 규격에는 제한이 없습니다.
다만, 시험지 젤 앞장에 이름과 수험번호를 반드시 기입해 주세요.
미기입 시 본인의 시험지가 배부되지 않을 수 있습니다.', - '관리자', '시험지 규격이 정해져 있나요?', 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:10:08.251791', '2025-08-06 23:10:08.251791', - '• 과목별 모의고사(한국사 제외 필수)
• 신분증과 수험표
• 필요시 개인 샤프, 지우개, 화이트, 귀마개
※ 모수에서는 OMR 전용 샤프와 컴퓨터용 사인펜을 제공합니다.', - '관리자', '준비물은 무엇인가요?', 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:13:23.425224', '2025-08-06 23:13:23.425224', - '• 모수는 오전 8시까지 입실을 원칙으로 합니다.
• 실제 수능처럼 준비하려면 7시 30분까지 입실하여 예열 지문 풀이 등 사전 준비를 마치길 추천드립니다.', - '관리자', '몇 시까지 입실해야 하나요?', 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:13:57.002072', '2025-08-06 23:13:57.002072', - '영어 듣기 문항은 수험생마다 다르므로, 평가원 영어 듣기 문제와 음원 파일을 제공·재생하여 진행합니다.', '관리자', '영어 듣기는 어떻게 진행되나요?', 1, - false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:14:14.494197', '2025-08-06 23:14:14.494197', - '시험 종료 후 회수된 시험지는 당일 퇴실 시 모든 과목 시험지와 답안지를 봉투에 담아 배부해드립니다.', '관리자', '시험 종료 후 시험지는 언제 돌려받나요?', - 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:14:33.957577', '2025-08-06 23:14:33.957577', '네, 가능합니다.', '관리자', - '간식이나 음료 반입이 가능한가요?', 1, false); -INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -VALUES ('2025-08-06 23:15:09.186770', '2025-08-06 23:15:09.186770', '- 부득이하게 퇴실해야 할 경우, 시험실 또는 복도 감독관에게 먼저 말씀해 주세요. -- 감독관이 보이지 않을 경우, 층별 시험 관리본부로 오시면 안내드립니다. -- 단, 시험 시간 중에는 타 수험생에게 방해가 될 수 있으므로 가급적 쉬는 시간 이용을 권장합니다.', '관리자', '중간 퇴실이 가능한가요?', 1, false); +# -- 학교 +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.636240', '2025-08-07 13:11:24.636240', '강남구 남부순환로378길 39', '서울특별시', +# '06299', +# 'DAECHI', 532, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, '대치중학교', +# false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.712606', '2025-08-07 13:11:24.712606', '양천구 목동동로 235', '서울특별시', +# '07996', 'MOKDONG', 896, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, +# '목운중학교', false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.718072', '2025-08-07 13:11:24.718072', '양천구 중앙로 206', '서울특별시', '08091', +# 'MOKDONG', 896, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '신서중학교', +# false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.723008', '2025-08-07 13:11:24.723008', '강남구 영동대로 101', '서울특별시', +# '06328', +# 'DAECHI', 840, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, '개원중학교', +# false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.727606', '2025-08-07 13:11:24.727606', '강남구 영동대로 101', '서울특별시', +# '06328', +# 'DAECHI', 840, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '개원중학교', +# false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.732472', '2025-08-07 13:11:24.732472', '영등포구 선유서로13길 6', '서울특별시', +# '07283', 'MOKDONG', 558, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, +# '문래중학교', false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.740652', '2025-08-07 13:11:24.740652', '노원구 노원로 492', '서울특별시', +# '01678', 'NOWON', 448, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, +# '온곡중학교', false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.747536', '2025-08-07 13:11:24.747536', '노원구 노원로 492', '서울특별시', +# '01673', 'NOWON', 448, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, +# '온곡중학교', false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.755154', '2025-08-07 13:11:24.755154', '수성구 시지로 66', '대구광역시', +# '42251', 'DAEGU', 392, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, +# '노변중학교', false); +# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, +# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +# VALUES ('2025-08-07 13:11:24.763288', '2025-08-07 13:11:24.763288', '수성구 시지로 66', '대구광역시', +# '42251', 'DAEGU', 392, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, +# '노변중학교', false); +# +# -- 이벤트 +# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, +# event_link, event_title, deleted) +# VALUES ('2025-08-07 16:02:29.725574', '2025-08-07 16:02:29.725574', +# '78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', +# 'event/92151238-2ce3-444a-b5ef-9afb45988f01_78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', +# 'PUBLIC', '2025-11-02', '2025-08-07', 'https://www.mosuedu.com/events/recommend', +# '친구야 수능 치고 만원 받자!', false); +# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, +# event_link, event_title, deleted) +# VALUES ('2025-08-08 15:44:22.962184', '2025-08-08 15:44:22.962184', 'event-1.jpeg', +# 'event/76a5c2fb-522a-4f86-a773-2baa80c336c4_event-1.jpeg', 'PUBLIC', '2025-12-31', +# '2025-08-01', +# 'https://www.medsky.co.kr/?fbclid=PAQ0xDSwMCYqJleHRuA2FlbQIxMQABp2RuRa3LXajOc8u3WmvdJ1RU9BhFCi7WORwWX0dM539Uvpmw080SNp5YYftB_aem_ys794fY1xyubFiy9EZSnug', +# '메드스카이 GRAND OPEN, 모수 회원이면 5만원 할인', false); +# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, +# event_link, event_title, deleted) +# VALUES ('2025-08-08 15:50:54.014641', '2025-08-08 15:50:54.014641', 'carousel-2.png', +# 'event/369859c2-c678-4edd-a30e-21e60011924f_carousel-2.png', 'PUBLIC', '2025-12-31', +# '2025-08-01', +# 'https://skyhacks.oopy.io/?fbclid=PAQ0xDSwMCYrZleHRuA2FlbQIxMQABp5KOImPRKXoNbGHgYTKbZ5mYlHpaVuGaAxfoz_ZqVGaqcdkTBMMPn3M3Q1Dn_aem_bg0-V6eNLt7jwxWnB8KJ3Q', +# '모수가 강력 추천하는 SKY 독학 관리 프로그램', false); +# +# -- 게시글 +# INSERT INTO sa.notice (created_at, updated_at, author, content, title, user_id, deleted) +# VALUES ('2025-08-06 23:27:52.391738', '2025-08-06 23:27:52.391738', '관리자', '![모수 이벤트 이미지](https://mosu-files.s3.amazonaws.com/notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png) +# +# 친구에게 \'**모의가 아닌 진짜 수능**\'을 추천하고, **1만 원 환급 혜택**을 받아 가세요! +# +# --- +# +# **참여 방법** +# +# 1. 아래 입력란에 **내가 추천한 친구의 이름과 연락처**, **나의 환급 계좌번호**를 작성해 주세요. +# 2. **내가 추천한 친구가 모의 수능 신청 시 추천인란에 내 전화번호를 정확히 입력**하도록 도와주세요. +# 3. ※ 제휴업체 신청링크를 통해 모의수능에 신청한 경우에도, **내가 추천한 친구가 모수 홈페이지에서 직접 신청하면 이벤트 참여 가능**합니다. +# +# --- +# +# **보상 지급 안내** +# +# * **환급 금액**: 10,000원 +# * **지급 시기**: 2025년 11월 중 **일괄 송금** +# * **이벤트 기간**: ~ 2025년 11월 2일까지 +# +# --- +# +# **유의사항** +# +# * 추천인과 추천받은 친구의 **정보가 정확히 일치**해야 보상이 지급됩니다. +# * **이벤트 중복 신청은 불가**하며, 여러 명을 추천하더라도 **1인당 최초 1회만 인정**됩니다. +# * 이벤트 페이지 정보 입력은 **1회만 가능**하며, 작성 후 **수정이 불가**하니 신중히 입력해 주세요. +# * ※ 수정이 필요한 경우 **고객센터로 문의** 바랍니다. +# +# --- +# +# **궁금한 점이 있다면** +# +# * [모수 홈페이지 문의] +# * 카카오톡 채널: [https://pf.kakao.com/_xhHxjxin](https://pf.kakao.com/_xhHxjxin) +# +# +# **정확하게 입력하고, 추천 보상도 꼭 챙기세요!**', '[이벤트] 친구야 수능 치고 만원 받자!', 1, false); +# INSERT INTO sa.notice_attachment (file_name, s3key, visibility, notice_id) +# VALUES ('event.png', 'notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', 'PUBLIC', 1); +# +# -- FAQ +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:08:39.444988', '2025-08-06 23:08:39.444988', +# '개인 모의고사를 지참하지 않을 시 평가원 기출 모의고사를 제공합니다.
하지만, 더 나은 실전 경험을 위해 풀어본 적 없는 고퀄리티 사설 모의고사를 가져오시는 것을 권장합니다.', +# '관리자', '모의고사를 꼭 가져가야 하나요?', 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:09:09.241691', '2025-08-06 23:09:09.241691', +# '시험지 규격에는 제한이 없습니다.
다만, 시험지 젤 앞장에 이름과 수험번호를 반드시 기입해 주세요.
미기입 시 본인의 시험지가 배부되지 않을 수 있습니다.', +# '관리자', '시험지 규격이 정해져 있나요?', 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:10:08.251791', '2025-08-06 23:10:08.251791', +# '• 과목별 모의고사(한국사 제외 필수)
• 신분증과 수험표
• 필요시 개인 샤프, 지우개, 화이트, 귀마개
※ 모수에서는 OMR 전용 샤프와 컴퓨터용 사인펜을 제공합니다.', +# '관리자', '준비물은 무엇인가요?', 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:13:23.425224', '2025-08-06 23:13:23.425224', +# '• 모수는 오전 8시까지 입실을 원칙으로 합니다.
• 실제 수능처럼 준비하려면 7시 30분까지 입실하여 예열 지문 풀이 등 사전 준비를 마치길 추천드립니다.', +# '관리자', '몇 시까지 입실해야 하나요?', 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:13:57.002072', '2025-08-06 23:13:57.002072', +# '영어 듣기 문항은 수험생마다 다르므로, 평가원 영어 듣기 문제와 음원 파일을 제공·재생하여 진행합니다.', '관리자', '영어 듣기는 어떻게 진행되나요?', 1, +# false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:14:14.494197', '2025-08-06 23:14:14.494197', +# '시험 종료 후 회수된 시험지는 당일 퇴실 시 모든 과목 시험지와 답안지를 봉투에 담아 배부해드립니다.', '관리자', '시험 종료 후 시험지는 언제 돌려받나요?', +# 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:14:33.957577', '2025-08-06 23:14:33.957577', '네, 가능합니다.', '관리자', +# '간식이나 음료 반입이 가능한가요?', 1, false); +# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +# VALUES ('2025-08-06 23:15:09.186770', '2025-08-06 23:15:09.186770', '- 부득이하게 퇴실해야 할 경우, 시험실 또는 복도 감독관에게 먼저 말씀해 주세요. +# - 감독관이 보이지 않을 경우, 층별 시험 관리본부로 오시면 안내드립니다. +# - 단, 시험 시간 중에는 타 수험생에게 방해가 될 수 있으므로 가급적 쉬는 시간 이용을 권장합니다.', '관리자', '중간 퇴실이 가능한가요?', 1, false); From a3a7a59295fd43a4bf2bac5db4d3cc319d16272c Mon Sep 17 00:00:00 2001 From: wlgns12370 Date: Tue, 12 Aug 2025 03:55:20 +0900 Subject: [PATCH 04/11] MOSU feat: enable secure flag for development cookies --- .../global/util/CookieBuilderUtil.java | 4 +- .../db/migration/V2__insert_data.sql | 306 +++++++++--------- 2 files changed, 155 insertions(+), 155 deletions(-) diff --git a/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java b/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java index b34fc5e9..7f5ea9aa 100644 --- a/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java +++ b/src/main/java/life/mosu/mosuserver/global/util/CookieBuilderUtil.java @@ -65,7 +65,7 @@ public static String createLocalCookieString(String name, String value, Long max public static ResponseCookie createDevelopResponseCookie(String name, String value, Long maxAge) { return createBaseResponseCookieBuilder(name, value, maxAge) - .secure(false) + .secure(true) .domain(".mosuedu.com") .sameSite("Strict") .build(); @@ -81,7 +81,7 @@ public static ResponseCookie createDevelopResponseCookie(String name, String val */ public static Cookie createDevelopCookie(String name, String value, Long maxAge) { Cookie cookie = createBaseServletCookie(name, value, maxAge); - cookie.setSecure(false); + cookie.setSecure(true); cookie.setDomain(".mosuedu.com"); return cookie; } diff --git a/src/main/resources/db/migration/V2__insert_data.sql b/src/main/resources/db/migration/V2__insert_data.sql index e7ebaf9a..b4f0b5f5 100644 --- a/src/main/resources/db/migration/V2__insert_data.sql +++ b/src/main/resources/db/migration/V2__insert_data.sql @@ -1,153 +1,153 @@ -# -- 학교 -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.636240', '2025-08-07 13:11:24.636240', '강남구 남부순환로378길 39', '서울특별시', -# '06299', -# 'DAECHI', 532, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, '대치중학교', -# false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.712606', '2025-08-07 13:11:24.712606', '양천구 목동동로 235', '서울특별시', -# '07996', 'MOKDONG', 896, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, -# '목운중학교', false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.718072', '2025-08-07 13:11:24.718072', '양천구 중앙로 206', '서울특별시', '08091', -# 'MOKDONG', 896, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '신서중학교', -# false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.723008', '2025-08-07 13:11:24.723008', '강남구 영동대로 101', '서울특별시', -# '06328', -# 'DAECHI', 840, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, '개원중학교', -# false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.727606', '2025-08-07 13:11:24.727606', '강남구 영동대로 101', '서울특별시', -# '06328', -# 'DAECHI', 840, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '개원중학교', -# false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.732472', '2025-08-07 13:11:24.732472', '영등포구 선유서로13길 6', '서울특별시', -# '07283', 'MOKDONG', 558, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, -# '문래중학교', false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.740652', '2025-08-07 13:11:24.740652', '노원구 노원로 492', '서울특별시', -# '01678', 'NOWON', 448, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, -# '온곡중학교', false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.747536', '2025-08-07 13:11:24.747536', '노원구 노원로 492', '서울특별시', -# '01673', 'NOWON', 448, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, -# '온곡중학교', false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.755154', '2025-08-07 13:11:24.755154', '수성구 시지로 66', '대구광역시', -# '42251', 'DAEGU', 392, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, -# '노변중학교', false); -# INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, -# exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) -# VALUES ('2025-08-07 13:11:24.763288', '2025-08-07 13:11:24.763288', '수성구 시지로 66', '대구광역시', -# '42251', 'DAEGU', 392, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, -# '노변중학교', false); -# -# -- 이벤트 -# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, -# event_link, event_title, deleted) -# VALUES ('2025-08-07 16:02:29.725574', '2025-08-07 16:02:29.725574', -# '78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', -# 'event/92151238-2ce3-444a-b5ef-9afb45988f01_78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', -# 'PUBLIC', '2025-11-02', '2025-08-07', 'https://www.mosuedu.com/events/recommend', -# '친구야 수능 치고 만원 받자!', false); -# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, -# event_link, event_title, deleted) -# VALUES ('2025-08-08 15:44:22.962184', '2025-08-08 15:44:22.962184', 'event-1.jpeg', -# 'event/76a5c2fb-522a-4f86-a773-2baa80c336c4_event-1.jpeg', 'PUBLIC', '2025-12-31', -# '2025-08-01', -# 'https://www.medsky.co.kr/?fbclid=PAQ0xDSwMCYqJleHRuA2FlbQIxMQABp2RuRa3LXajOc8u3WmvdJ1RU9BhFCi7WORwWX0dM539Uvpmw080SNp5YYftB_aem_ys794fY1xyubFiy9EZSnug', -# '메드스카이 GRAND OPEN, 모수 회원이면 5만원 할인', false); -# INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, -# event_link, event_title, deleted) -# VALUES ('2025-08-08 15:50:54.014641', '2025-08-08 15:50:54.014641', 'carousel-2.png', -# 'event/369859c2-c678-4edd-a30e-21e60011924f_carousel-2.png', 'PUBLIC', '2025-12-31', -# '2025-08-01', -# 'https://skyhacks.oopy.io/?fbclid=PAQ0xDSwMCYrZleHRuA2FlbQIxMQABp5KOImPRKXoNbGHgYTKbZ5mYlHpaVuGaAxfoz_ZqVGaqcdkTBMMPn3M3Q1Dn_aem_bg0-V6eNLt7jwxWnB8KJ3Q', -# '모수가 강력 추천하는 SKY 독학 관리 프로그램', false); -# -# -- 게시글 -# INSERT INTO sa.notice (created_at, updated_at, author, content, title, user_id, deleted) -# VALUES ('2025-08-06 23:27:52.391738', '2025-08-06 23:27:52.391738', '관리자', '![모수 이벤트 이미지](https://mosu-files.s3.amazonaws.com/notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png) -# -# 친구에게 \'**모의가 아닌 진짜 수능**\'을 추천하고, **1만 원 환급 혜택**을 받아 가세요! -# -# --- -# -# **참여 방법** -# -# 1. 아래 입력란에 **내가 추천한 친구의 이름과 연락처**, **나의 환급 계좌번호**를 작성해 주세요. -# 2. **내가 추천한 친구가 모의 수능 신청 시 추천인란에 내 전화번호를 정확히 입력**하도록 도와주세요. -# 3. ※ 제휴업체 신청링크를 통해 모의수능에 신청한 경우에도, **내가 추천한 친구가 모수 홈페이지에서 직접 신청하면 이벤트 참여 가능**합니다. -# -# --- -# -# **보상 지급 안내** -# -# * **환급 금액**: 10,000원 -# * **지급 시기**: 2025년 11월 중 **일괄 송금** -# * **이벤트 기간**: ~ 2025년 11월 2일까지 -# -# --- -# -# **유의사항** -# -# * 추천인과 추천받은 친구의 **정보가 정확히 일치**해야 보상이 지급됩니다. -# * **이벤트 중복 신청은 불가**하며, 여러 명을 추천하더라도 **1인당 최초 1회만 인정**됩니다. -# * 이벤트 페이지 정보 입력은 **1회만 가능**하며, 작성 후 **수정이 불가**하니 신중히 입력해 주세요. -# * ※ 수정이 필요한 경우 **고객센터로 문의** 바랍니다. -# -# --- -# -# **궁금한 점이 있다면** -# -# * [모수 홈페이지 문의] -# * 카카오톡 채널: [https://pf.kakao.com/_xhHxjxin](https://pf.kakao.com/_xhHxjxin) -# -# -# **정확하게 입력하고, 추천 보상도 꼭 챙기세요!**', '[이벤트] 친구야 수능 치고 만원 받자!', 1, false); -# INSERT INTO sa.notice_attachment (file_name, s3key, visibility, notice_id) -# VALUES ('event.png', 'notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', 'PUBLIC', 1); -# -# -- FAQ -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:08:39.444988', '2025-08-06 23:08:39.444988', -# '개인 모의고사를 지참하지 않을 시 평가원 기출 모의고사를 제공합니다.
하지만, 더 나은 실전 경험을 위해 풀어본 적 없는 고퀄리티 사설 모의고사를 가져오시는 것을 권장합니다.', -# '관리자', '모의고사를 꼭 가져가야 하나요?', 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:09:09.241691', '2025-08-06 23:09:09.241691', -# '시험지 규격에는 제한이 없습니다.
다만, 시험지 젤 앞장에 이름과 수험번호를 반드시 기입해 주세요.
미기입 시 본인의 시험지가 배부되지 않을 수 있습니다.', -# '관리자', '시험지 규격이 정해져 있나요?', 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:10:08.251791', '2025-08-06 23:10:08.251791', -# '• 과목별 모의고사(한국사 제외 필수)
• 신분증과 수험표
• 필요시 개인 샤프, 지우개, 화이트, 귀마개
※ 모수에서는 OMR 전용 샤프와 컴퓨터용 사인펜을 제공합니다.', -# '관리자', '준비물은 무엇인가요?', 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:13:23.425224', '2025-08-06 23:13:23.425224', -# '• 모수는 오전 8시까지 입실을 원칙으로 합니다.
• 실제 수능처럼 준비하려면 7시 30분까지 입실하여 예열 지문 풀이 등 사전 준비를 마치길 추천드립니다.', -# '관리자', '몇 시까지 입실해야 하나요?', 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:13:57.002072', '2025-08-06 23:13:57.002072', -# '영어 듣기 문항은 수험생마다 다르므로, 평가원 영어 듣기 문제와 음원 파일을 제공·재생하여 진행합니다.', '관리자', '영어 듣기는 어떻게 진행되나요?', 1, -# false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:14:14.494197', '2025-08-06 23:14:14.494197', -# '시험 종료 후 회수된 시험지는 당일 퇴실 시 모든 과목 시험지와 답안지를 봉투에 담아 배부해드립니다.', '관리자', '시험 종료 후 시험지는 언제 돌려받나요?', -# 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:14:33.957577', '2025-08-06 23:14:33.957577', '네, 가능합니다.', '관리자', -# '간식이나 음료 반입이 가능한가요?', 1, false); -# INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) -# VALUES ('2025-08-06 23:15:09.186770', '2025-08-06 23:15:09.186770', '- 부득이하게 퇴실해야 할 경우, 시험실 또는 복도 감독관에게 먼저 말씀해 주세요. -# - 감독관이 보이지 않을 경우, 층별 시험 관리본부로 오시면 안내드립니다. -# - 단, 시험 시간 중에는 타 수험생에게 방해가 될 수 있으므로 가급적 쉬는 시간 이용을 권장합니다.', '관리자', '중간 퇴실이 가능한가요?', 1, false); +-- 학교 +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.636240', '2025-08-07 13:11:24.636240', '강남구 남부순환로378길 39', '서울특별시', + '06299', + 'DAECHI', 532, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, '대치중학교', + false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.712606', '2025-08-07 13:11:24.712606', '양천구 목동동로 235', '서울특별시', + '07996', 'MOKDONG', 896, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, + '목운중학교', false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.718072', '2025-08-07 13:11:24.718072', '양천구 중앙로 206', '서울특별시', '08091', + 'MOKDONG', 896, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '신서중학교', + false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.723008', '2025-08-07 13:11:24.723008', '강남구 영동대로 101', '서울특별시', + '06328', + 'DAECHI', 840, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, '개원중학교', + false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.727606', '2025-08-07 13:11:24.727606', '강남구 영동대로 101', '서울특별시', + '06328', + 'DAECHI', 840, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, '개원중학교', + false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.732472', '2025-08-07 13:11:24.732472', '영등포구 선유서로13길 6', '서울특별시', + '07283', 'MOKDONG', 558, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, + '문래중학교', false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.740652', '2025-08-07 13:11:24.740652', '노원구 노원로 492', '서울특별시', + '01678', 'NOWON', 448, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, + '온곡중학교', false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.747536', '2025-08-07 13:11:24.747536', '노원구 노원로 492', '서울특별시', + '01673', 'NOWON', 448, '2025-10-26 23:59:59.000000', '2025-11-02', 'OPEN', '고정 도시락', 9000, + '온곡중학교', false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.755154', '2025-08-07 13:11:24.755154', '수성구 시지로 66', '대구광역시', + '42251', 'DAEGU', 392, '2025-10-12 23:59:59.000000', '2025-10-19', 'OPEN', '고정 도시락', 9000, + '노변중학교', false); +INSERT INTO sa.exam (created_at, updated_at, detail, street, zipcode, area, capacity, deadline_time, + exam_date, exam_status, lunch_name, lunch_price, school_name, deleted) +VALUES ('2025-08-07 13:11:24.763288', '2025-08-07 13:11:24.763288', '수성구 시지로 66', '대구광역시', + '42251', 'DAEGU', 392, '2025-10-19 23:59:59.000000', '2025-10-26', 'OPEN', '고정 도시락', 9000, + '노변중학교', false); + +-- 이벤트 +INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, + event_link, event_title, deleted) +VALUES ('2025-08-07 16:02:29.725574', '2025-08-07 16:02:29.725574', + '78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', + 'event/92151238-2ce3-444a-b5ef-9afb45988f01_78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', + 'PUBLIC', '2025-11-02', '2025-08-07', 'https://www.mosuedu.com/events/recommend', + '친구야 수능 치고 만원 받자!', false); +INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, + event_link, event_title, deleted) +VALUES ('2025-08-08 15:44:22.962184', '2025-08-08 15:44:22.962184', 'event-1.jpeg', + 'event/76a5c2fb-522a-4f86-a773-2baa80c336c4_event-1.jpeg', 'PUBLIC', '2025-12-31', + '2025-08-01', + 'https://www.medsky.co.kr/?fbclid=PAQ0xDSwMCYqJleHRuA2FlbQIxMQABp2RuRa3LXajOc8u3WmvdJ1RU9BhFCi7WORwWX0dM539Uvpmw080SNp5YYftB_aem_ys794fY1xyubFiy9EZSnug', + '메드스카이 GRAND OPEN, 모수 회원이면 5만원 할인', false); +INSERT INTO sa.event (created_at, updated_at, file_name, s3key, visibility, end_date, start_date, + event_link, event_title, deleted) +VALUES ('2025-08-08 15:50:54.014641', '2025-08-08 15:50:54.014641', 'carousel-2.png', + 'event/369859c2-c678-4edd-a30e-21e60011924f_carousel-2.png', 'PUBLIC', '2025-12-31', + '2025-08-01', + 'https://skyhacks.oopy.io/?fbclid=PAQ0xDSwMCYrZleHRuA2FlbQIxMQABp5KOImPRKXoNbGHgYTKbZ5mYlHpaVuGaAxfoz_ZqVGaqcdkTBMMPn3M3Q1Dn_aem_bg0-V6eNLt7jwxWnB8KJ3Q', + '모수가 강력 추천하는 SKY 독학 관리 프로그램', false); + +-- 게시글 +INSERT INTO sa.notice (created_at, updated_at, author, content, title, user_id, deleted) +VALUES ('2025-08-06 23:27:52.391738', '2025-08-06 23:27:52.391738', '관리자', '![모수 이벤트 이미지](https://mosu-files.s3.amazonaws.com/notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png) + +친구에게 \'**모의가 아닌 진짜 수능**\'을 추천하고, **1만 원 환급 혜택**을 받아 가세요! + +--- + +**참여 방법** + +1. 아래 입력란에 **내가 추천한 친구의 이름과 연락처**, **나의 환급 계좌번호**를 작성해 주세요. +2. **내가 추천한 친구가 모의 수능 신청 시 추천인란에 내 전화번호를 정확히 입력**하도록 도와주세요. +3. ※ 제휴업체 신청링크를 통해 모의수능에 신청한 경우에도, **내가 추천한 친구가 모수 홈페이지에서 직접 신청하면 이벤트 참여 가능**합니다. + +--- + +**보상 지급 안내** + +* **환급 금액**: 10,000원 +* **지급 시기**: 2025년 11월 중 **일괄 송금** +* **이벤트 기간**: ~ 2025년 11월 2일까지 + +--- + +**유의사항** + +* 추천인과 추천받은 친구의 **정보가 정확히 일치**해야 보상이 지급됩니다. +* **이벤트 중복 신청은 불가**하며, 여러 명을 추천하더라도 **1인당 최초 1회만 인정**됩니다. +* 이벤트 페이지 정보 입력은 **1회만 가능**하며, 작성 후 **수정이 불가**하니 신중히 입력해 주세요. +* ※ 수정이 필요한 경우 **고객센터로 문의** 바랍니다. + +--- + +**궁금한 점이 있다면** + +* [모수 홈페이지 문의] +* 카카오톡 채널: [https://pf.kakao.com/_xhHxjxin](https://pf.kakao.com/_xhHxjxin) + + +**정확하게 입력하고, 추천 보상도 꼭 챙기세요!**', '[이벤트] 친구야 수능 치고 만원 받자!', 1, false); +INSERT INTO sa.notice_attachment (file_name, s3key, visibility, notice_id) +VALUES ('event.png', 'notice/78a916d5-2d29-4c3e-a6e1-4d4bebca9a2c_event.png', 'PUBLIC', 1); + +-- FAQ +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:08:39.444988', '2025-08-06 23:08:39.444988', + '개인 모의고사를 지참하지 않을 시 평가원 기출 모의고사를 제공합니다.
하지만, 더 나은 실전 경험을 위해 풀어본 적 없는 고퀄리티 사설 모의고사를 가져오시는 것을 권장합니다.', + '관리자', '모의고사를 꼭 가져가야 하나요?', 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:09:09.241691', '2025-08-06 23:09:09.241691', + '시험지 규격에는 제한이 없습니다.
다만, 시험지 젤 앞장에 이름과 수험번호를 반드시 기입해 주세요.
미기입 시 본인의 시험지가 배부되지 않을 수 있습니다.', + '관리자', '시험지 규격이 정해져 있나요?', 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:10:08.251791', '2025-08-06 23:10:08.251791', + '• 과목별 모의고사(한국사 제외 필수)
• 신분증과 수험표
• 필요시 개인 샤프, 지우개, 화이트, 귀마개
※ 모수에서는 OMR 전용 샤프와 컴퓨터용 사인펜을 제공합니다.', + '관리자', '준비물은 무엇인가요?', 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:13:23.425224', '2025-08-06 23:13:23.425224', + '• 모수는 오전 8시까지 입실을 원칙으로 합니다.
• 실제 수능처럼 준비하려면 7시 30분까지 입실하여 예열 지문 풀이 등 사전 준비를 마치길 추천드립니다.', + '관리자', '몇 시까지 입실해야 하나요?', 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:13:57.002072', '2025-08-06 23:13:57.002072', + '영어 듣기 문항은 수험생마다 다르므로, 평가원 영어 듣기 문제와 음원 파일을 제공·재생하여 진행합니다.', '관리자', '영어 듣기는 어떻게 진행되나요?', 1, + false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:14:14.494197', '2025-08-06 23:14:14.494197', + '시험 종료 후 회수된 시험지는 당일 퇴실 시 모든 과목 시험지와 답안지를 봉투에 담아 배부해드립니다.', '관리자', '시험 종료 후 시험지는 언제 돌려받나요?', + 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:14:33.957577', '2025-08-06 23:14:33.957577', '네, 가능합니다.', '관리자', + '간식이나 음료 반입이 가능한가요?', 1, false); +INSERT INTO sa.faq (created_at, updated_at, answer, author, question, user_id, deleted) +VALUES ('2025-08-06 23:15:09.186770', '2025-08-06 23:15:09.186770', '- 부득이하게 퇴실해야 할 경우, 시험실 또는 복도 감독관에게 먼저 말씀해 주세요. +- 감독관이 보이지 않을 경우, 층별 시험 관리본부로 오시면 안내드립니다. +- 단, 시험 시간 중에는 타 수험생에게 방해가 될 수 있으므로 가급적 쉬는 시간 이용을 권장합니다.', '관리자', '중간 퇴실이 가능한가요?', 1, false); From 860426f81c27fe031b399cff1599d7cb1517b6ff Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:06:27 +0900 Subject: [PATCH 05/11] feat: add ApplicationGuestNotifyRequest for exam application notifications --- .../dto/ApplicationGuestNotifyRequest.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/life/mosu/mosuserver/application/notify/dto/ApplicationGuestNotifyRequest.java diff --git a/src/main/java/life/mosu/mosuserver/application/notify/dto/ApplicationGuestNotifyRequest.java b/src/main/java/life/mosu/mosuserver/application/notify/dto/ApplicationGuestNotifyRequest.java new file mode 100644 index 00000000..1010512b --- /dev/null +++ b/src/main/java/life/mosu/mosuserver/application/notify/dto/ApplicationGuestNotifyRequest.java @@ -0,0 +1,45 @@ +package life.mosu.mosuserver.application.notify.dto; + + +import static life.mosu.mosuserver.infra.notify.constant.NotifyRedirectUrlConstants.WARNING_PAGE; + +import java.time.LocalDate; +import java.util.Map; +import life.mosu.mosuserver.domain.examapplication.projection.ExamApplicationNotifyProjection; +import life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationButtonUrls; +import life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationButtonUrls.NotificationButtonUrl; +import life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationVariable; + +public record ApplicationGuestNotifyRequest( + String paymentKey, + LocalDate examDate, + String schoolName, + String lunch +) implements LunaNotificationVariable { + + public static ApplicationGuestNotifyRequest from( + ExamApplicationNotifyProjection examApplication) { + + return new ApplicationGuestNotifyRequest(examApplication.paymentKey(), + examApplication.examDate(), examApplication.schoolName(), + examApplication.isLunchChecked() ? examApplication.lunchName() + : "선택 안 함"); + } + + @Override + public LunaNotificationButtonUrls getNotificationButtonUrls() { + return LunaNotificationButtonUrls.of( + NotificationButtonUrl.of(WARNING_PAGE, WARNING_PAGE) + ); + } + + @Override + public Map toMap() { + return Map.of( + "paymentKey", paymentKey, + "examDate", examDate.toString(), + "schoolName", schoolName, + "lunch", lunch + ); + } +} From 4d5dbf140411764d8da58ecf1373857a24819120 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:06:32 +0900 Subject: [PATCH 06/11] feat: update notification status for guest application success in DepositSuccessEventHandler --- .../virtualaccount/event/DepositSuccessEventHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/life/mosu/mosuserver/application/virtualaccount/event/DepositSuccessEventHandler.java b/src/main/java/life/mosu/mosuserver/application/virtualaccount/event/DepositSuccessEventHandler.java index 8ee5347e..4284a9e2 100644 --- a/src/main/java/life/mosu/mosuserver/application/virtualaccount/event/DepositSuccessEventHandler.java +++ b/src/main/java/life/mosu/mosuserver/application/virtualaccount/event/DepositSuccessEventHandler.java @@ -39,9 +39,9 @@ public void handle(DepositSuccessEvent event) { () -> new CustomRuntimeException(ErrorCode.EXAM_APPLICATION_NOT_FOUND)); LunaNotificationEvent lunaNotificationEvent = LunaNotificationEvent.create( - LunaNotificationStatus.APPLICATION_SUCCESS, + LunaNotificationStatus.APPLICATION_GUEST_SUCCESS, exam.getUserId(), exam.getId()); - + notifier.notify(lunaNotificationEvent); sendMail(log, event.getFormattedCreatedAt()); } From 38d42ae51dc1d97d061f0fbc25f8b6dc53aae08c Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:06:39 +0900 Subject: [PATCH 07/11] feat: add notification status and template for guest application success --- .../infra/notify/dto/luna/LunaNotificationStatus.java | 2 ++ .../infra/notify/dto/luna/LunaNotifyTemplateCode.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotificationStatus.java b/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotificationStatus.java index 927495c4..76c391de 100644 --- a/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotificationStatus.java +++ b/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotificationStatus.java @@ -8,6 +8,8 @@ public enum LunaNotificationStatus { // 성공 알림 SIGN_UP_SUCCESS("회원 가입 완료", LunaNotifyTemplateCode.SIGN_UP), APPLICATION_SUCCESS("신청 완료", LunaNotifyTemplateCode.APPLICATION), + APPLICATION_GUEST_SUCCESS("게스트 신청 완료", LunaNotifyTemplateCode.APPLICATION_GUEST), + REFUND_SUCCESS("환불 완료", LunaNotifyTemplateCode.REFUND), INQUIRY_ANSWER_SUCCESS("문의 답변 완료", LunaNotifyTemplateCode.INQUIRY_ANSWER), diff --git a/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotifyTemplateCode.java b/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotifyTemplateCode.java index 6e1e8654..9a6cb14f 100644 --- a/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotifyTemplateCode.java +++ b/src/main/java/life/mosu/mosuserver/infra/notify/dto/luna/LunaNotifyTemplateCode.java @@ -11,6 +11,11 @@ public enum LunaNotifyTemplateCode { "notify.exam.application.complete.alimtalk", "notify.exam.application.complete.sms" ), + APPLICATION_GUEST( + 50051, + "notify.exam.guest.application.complete.alimtalk", + "notify.exam.guest.application.complete.sms" + ), EXAM_1DAY_BEFORE( 50047, "notify.exam.oneday.reminder.alimtalk", From dfe21738d485e08c9612d696347b536f10b7c9b9 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:06:45 +0900 Subject: [PATCH 08/11] feat: add support for guest application notifications in NotifyVariableFactory --- .../application/notify/NotifyVariableFactory.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java b/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java index 2f425bdc..18ab6beb 100644 --- a/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java +++ b/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java @@ -1,5 +1,6 @@ package life.mosu.mosuserver.application.notify; +import life.mosu.mosuserver.application.notify.dto.ApplicationGuestNotifyRequest; import life.mosu.mosuserver.application.notify.dto.ApplicationNotifyRequest; import life.mosu.mosuserver.application.notify.dto.Exam1DayBeforeNotifyRequest; import life.mosu.mosuserver.application.notify.dto.Exam1WeekBeforeNotifyRequest; @@ -39,6 +40,8 @@ public LunaNotificationVariable create(LunaNotificationEvent event) { case REFUND_SUCCESS -> createRefundVariable(event.targetId()); // case APPLICATION_SUCCESS -> createApplicationVariable(event.targetId()); // examApplicationId + case APPLICATION_GUEST_SUCCESS -> + createApplicationGuestVariable(event.targetId()); // examApplicationId case EXAM_1WEEK_BEFORE_REMINDER_INFO -> createExam1WeekBeforeVariable(event.targetId()); // examApplicationId case EXAM_3DAY_BEFORE_REMINDER_INFO -> @@ -81,6 +84,14 @@ private LunaNotificationVariable createApplicationVariable(Long targetId) { return ApplicationNotifyRequest.from(projection); } + private LunaNotificationVariable createApplicationGuestVariable(Long targetId) { + ExamApplicationNotifyProjection projection = examApplicationRepository.findExamAndPaymentByExamApplicationId( + targetId) + .orElseThrow( + () -> new CustomRuntimeException(ErrorCode.EXAM_APPLICATION_NOT_FOUND)); + return ApplicationGuestNotifyRequest.from(projection); + } + private LunaNotificationVariable createExam1WeekBeforeVariable(Long targetId) { ExamInfoProjection examInfo = examApplicationRepository.findExamInfo(targetId) .orElseThrow( From b51ec27155274fe7c6ca6271590b39ff21cde443 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:06:50 +0900 Subject: [PATCH 09/11] feat: add APPLICATION_GUEST_SUCCESS notification status to LunaNotifyWithSmsFallbackSender --- .../notify/component/luna/LunaNotifyWithSmsFallbackSender.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/life/mosu/mosuserver/infra/notify/component/luna/LunaNotifyWithSmsFallbackSender.java b/src/main/java/life/mosu/mosuserver/infra/notify/component/luna/LunaNotifyWithSmsFallbackSender.java index aac54d13..4301ba8b 100644 --- a/src/main/java/life/mosu/mosuserver/infra/notify/component/luna/LunaNotifyWithSmsFallbackSender.java +++ b/src/main/java/life/mosu/mosuserver/infra/notify/component/luna/LunaNotifyWithSmsFallbackSender.java @@ -1,5 +1,6 @@ package life.mosu.mosuserver.infra.notify.component.luna; +import static life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationStatus.APPLICATION_GUEST_SUCCESS; import static life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationStatus.APPLICATION_SUCCESS; import static life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationStatus.EXAM_1DAY_BEFORE_REMINDER_INFO; import static life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationStatus.EXAM_1WEEK_BEFORE_REMINDER_INFO; @@ -23,6 +24,7 @@ @Component @NotifyStrategyMapping({ APPLICATION_SUCCESS, + APPLICATION_GUEST_SUCCESS, REFUND_SUCCESS, EXAM_1DAY_BEFORE_REMINDER_INFO, EXAM_3DAY_BEFORE_REMINDER_INFO, From b7a9edb869fec8dee88d27c8e43f83aadae74fb9 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 10:53:32 +0900 Subject: [PATCH 10/11] =?UTF-8?q?feat=20:=20archive=20=EC=88=98=EB=8F=99?= =?UTF-8?q?=20=EB=B0=B0=EC=B9=98=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/PaymentWidgetController.java | 14 ++++++++++++-- .../presentation/refund/RefundController.java | 9 +++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/life/mosu/mosuserver/presentation/payment/PaymentWidgetController.java b/src/main/java/life/mosu/mosuserver/presentation/payment/PaymentWidgetController.java index 69f34047..b7887792 100644 --- a/src/main/java/life/mosu/mosuserver/presentation/payment/PaymentWidgetController.java +++ b/src/main/java/life/mosu/mosuserver/presentation/payment/PaymentWidgetController.java @@ -3,6 +3,7 @@ import jakarta.validation.Valid; import life.mosu.mosuserver.application.payment.PaymentConfirmService; import life.mosu.mosuserver.application.payment.PaymentPrepareService; +import life.mosu.mosuserver.application.payment.cron.PaymentFailureLogDomainArchiveExecutor; import life.mosu.mosuserver.global.annotation.UserId; import life.mosu.mosuserver.global.util.ApiResponseWrapper; import life.mosu.mosuserver.presentation.payment.dto.PaymentPrepareResponse; @@ -23,12 +24,13 @@ public class PaymentWidgetController { private final PaymentPrepareService prepareService; private final PaymentConfirmService confirmService; + private final PaymentFailureLogDomainArchiveExecutor paymentFailureLogDomainArchiveExecutor; /** * 결제 준비 요청 *

- * 결제 준비 요청은 결제 시작을 위한 준비 단계로, 결제 금액과 주문 ID를 생성합니다. - * 이 단계에서는 실제 결제가 이루어지지 않으며, 결제 승인 요청을 위한 정보를 반환합니다. + * 결제 준비 요청은 결제 시작을 위한 준비 단계로, 결제 금액과 주문 ID를 생성합니다. 이 단계에서는 실제 결제가 이루어지지 않으며, 결제 승인 요청을 위한 정보를 + * 반환합니다. * * @param userId 사용자 ID * @param request 결제 준비 요청 정보 @@ -59,4 +61,12 @@ public ApiResponseWrapper confirm( confirmService.confirm(userId, request); return ApiResponseWrapper.success(HttpStatus.CREATED, "결제 승인 성공"); } + + + @PostMapping("/cleanup") + @PreAuthorize("isAuthenticated() and hasRole('ADMIN')") + public ApiResponseWrapper archivePaymentFailureLogs() { + paymentFailureLogDomainArchiveExecutor.archive(); + return ApiResponseWrapper.success(HttpStatus.CREATED, "게스트 결제 승인 성공"); + } } diff --git a/src/main/java/life/mosu/mosuserver/presentation/refund/RefundController.java b/src/main/java/life/mosu/mosuserver/presentation/refund/RefundController.java index ce09a8e4..9d5c294d 100644 --- a/src/main/java/life/mosu/mosuserver/presentation/refund/RefundController.java +++ b/src/main/java/life/mosu/mosuserver/presentation/refund/RefundController.java @@ -1,6 +1,7 @@ package life.mosu.mosuserver.presentation.refund; import life.mosu.mosuserver.application.refund.RefundService; +import life.mosu.mosuserver.application.refund.cron.RefundFailureLogDomainArchiveExecutor; import life.mosu.mosuserver.global.annotation.UserId; import life.mosu.mosuserver.global.util.ApiResponseWrapper; import life.mosu.mosuserver.presentation.refund.dto.MergedRefundRequest; @@ -26,6 +27,7 @@ public class RefundController { private final RefundService refundService; + private final RefundFailureLogDomainArchiveExecutor refundFailureLogDomainArchiveExecutor; @GetMapping() ResponseEntity> getRefundAmount( @@ -46,4 +48,11 @@ ResponseEntity> process( refundService.doProcess(userId, request); return ResponseEntity.ok(ApiResponseWrapper.success(HttpStatus.OK, "결제 취소 성공")); } + + @PostMapping("/cleanup") + @PreAuthorize("isAuthenticated() and hasRole('ADMIN')") + public ApiResponseWrapper archiveRefundFailureLogs() { + refundFailureLogDomainArchiveExecutor.archive(); + return ApiResponseWrapper.success(HttpStatus.CREATED, "게스트 결제 승인 성공"); + } } From 1cc8df7780fe002c9bcdbd5a1b20120de2eca2c2 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 11:20:57 +0900 Subject: [PATCH 11/11] feat: update phone number formatting to remove leading 'U' or 'G' --- .../life/mosu/mosuserver/domain/user/entity/UserJpaEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/life/mosu/mosuserver/domain/user/entity/UserJpaEntity.java b/src/main/java/life/mosu/mosuserver/domain/user/entity/UserJpaEntity.java index 6120db33..e66ad65e 100644 --- a/src/main/java/life/mosu/mosuserver/domain/user/entity/UserJpaEntity.java +++ b/src/main/java/life/mosu/mosuserver/domain/user/entity/UserJpaEntity.java @@ -119,6 +119,6 @@ public void changePassword(String newPassword) { } public String getPhoneNumber() { - return phoneNumber.replaceFirst("^.", ""); + return phoneNumber.replaceFirst("^[UG]", ""); } }