Skip to content

Commit 84019bb

Browse files
release: 준비된 MangoButter 기능 메인 브랜치 배포 (v1.0)
* [#50] feat: PWA 설치 유도 및 FCM 푸시 알림 기능 추가 * feat: Firebase Cloud Messaging 기반 푸시 알림 기능 추가 (#50) - 사용자에게 알림 권한 요청 및 토큰 발급 로직 구현 (requestPermission.ts) - 권한 허용 여부에 따라 toast 피드백 제공 - FCM 토큰 발급 성공 시 localStorage 저장 처리 - VITE_FIREBASE_VAPID_KEY 기반 getToken 구현 * feat: pwa iOS/Android 설치 가이드 모달 개발 (#50) - iOS는 react-ios-pwa-prompt로 설치 안내 제공 - Android는 beforeinstallprompt 이벤트로 설치 모달 표시 - '나중에 하기' 선택 시 localStorage에 상태 저장으로 중복 안내 방지 * [#41] 급여페이지 개발 * feat: 급여 관리 탭 UI 및 기능 추가 (#41) - 급여명세서 미리보기 탭(BossPaystubPage) 구현 - 자동송금 내역 탭(BossAutoTransferTab) 및 BossPayrollCard 컴포넌트 개선 - 공제항목 설정 탭(BossTaxTab) 및 StaffWithholdingCard 컴포넌트 구현 - 시급 설정 탭(BossWageTab) 및 StaffWageCard 컴포넌트 구현 - 급여명세서 다운로드 및 상세보기 navigate 처리 개선 - withholdingType 및 month 파라미터 처리 로직 보완 * feat: 급여 설정 페이지 구현 및 계좌 삭제 기능 추가 (#41) - fetchPayrollSettings 로직 loadAndApplySettings 함수로 리팩토링 - 급여 설정 항목(자동송금 여부, 지급일, 차감 단위, 추가근무 허용시간) 폼 구성 - react-hook-form + zod 기반 유효성 검증 및 상태관리 적용 - 계좌 삭제 시 DELETE API 연동 및 상태 갱신 처리 * feat: 급여 내역 탭에서 과거의 일자만 조회할 수 있도록 월별 조회 로직 안정성 개선 (#41) - getMaxMonth 함수에 settings null 검사 로직 추가 - useCallback으로 getMaxMonth 안정성 및 의존성 명확화 - settings, selectedYearMonth 상태 선언 순서 변경 - useEffect 내 비동기 호출 순서 및 예외 처리 정리 * feat: 계좌 등록 페이지 구현 및 계좌 본인 인증 연동 (#41) - 계좌 등록 폼(AccountRegisterPage) 생성 - 은행명, 계좌번호, 생년월일, 비밀번호 입력 필드 구성 - 출금 동의 체크박스 추가 - 유저 정보(userStore) 기반 예금주명, 생년월일 자동 입력 처리 - 계좌 본인 인증 API(verifyAccountInfo) 연동 - 등록 성공 시 급여설정 페이지로 리디렉션 * feat: 알바생 급여 뷰 및 근태 조회 기능 구현 (#41) - 알바생 본인의 월별 급여 조회 API 연동 (getStaffPayroll) - 급여명세서 다운로드 링크 연동 및 페이지 구성 - 급여 카드 UI 구현 (그래프 + 상세 breakdown) - 공제/실수령/기본급/주휴수당/교통비 시각화 반영 - 급여지급일 안내 메시지 조건 분기 처리 - 급여명세서 없을 경우 에러 아이콘 + 말풍선 안내 추가 (자동 닫힘, 외부 클릭 닫힘 포함) - 근태기록 조회 및 바텀시트 연동 (AttendanceRecordContainer) * feat: 알바생 홈페이지 급여 정보 조회 및 계좌 등록 삭제 기능 개발 (#41) * [#52] 요청 및 알림페이지 개발 * feat: FCM 토큰 발급 후 서버 등록 기능 추가 (#52) * feat: 사장님 요청 탭 개발 (#52) * feat: 알바생 요청 탭 개발 (#52) * feat: 사장님/알바생 알림 탭 개발 (#52) * feat: 알림 타입 이미지 url 추가 (#52) * feat: 알바생 근태,스케쥴 대타 요청 바텀시트 개발 (#52) * [#55] 3차 QA * feat: 근무 시간 입력 필드를 10분 단위로 선택 가능하도록 개선 (#55) - input type="time"에 step="600" 속성 적용 - 사용자가 직접 입력은 가능하지만 기본 선택은 10분 간격으로 제한 - 근무 시간 등록 UX 향상 * feat: tooltip 기능 개발 및 급여지급일 관련 tooltip 추가 (#55) * fix: 타입명 중복 사용 문제 리팩토링 (#55) * design: 급여명세서 디자인 수정 (#55) * feat: 년도-달 고르는 커스텀 input 개발 (#55) * fix: 급여지급일까지 남은 일수 계산 함수 수정 (#55) * design: 캘린더 UI 개선 (#55) * fix: 회원가입 후 리다이렉션 로직 수정 (#55) * feat: 커스텀 TimeInput 개발 (#55) * fix: 근태 수정 로직 수정 (#55) - 결근일때, null로 초기화 -> 00:00분으로 초기화로 수정 * refactor: IOS 사용자 편의 기능 추가 (#55) - IOS 사용자를 위한 주소검색에서 뒤로가기 버튼 추가하여 창닫을 수 있게함 - IOS 사용자를 위한 input disable 상태일때 스크롤가능하게 기능 추가 * refactor: 캘린더 라벨 출력 조건 개선 (#55) * fix: QR스캔 카메라 종료 로직 수정 (#55) * hotfix: 빌드 오류 수정 - import 시 파일 확장자 오류 수정 * [#57] 4차 QA * fix: 알바생 출근 KST 기반 현재시간 fetching 오류 해결 (#57) * design: 푸터 너비 안 차는 UI 오류 수정 (#57) * fix: store 관련 dto 수정 및 함수 Early Return 처리 개선 (#57) * refactor: 사용자 이용 경험 향상을 위한 toast와 자동선택기능 추가 (#57) * hotfix: storeId 유효성 검사 유틸 함수 추가 및 타입 오류 대응 * hotfix: 알바생 store 전역상태 오사용 오류 해결 * hotfix: layout design 수정 * hotfix: 알바생 출퇴근 스키마 오류 해결 * hotfix: 근태수정 폼 로직 변경 * hotfix: 알바생 출퇴근 페이지 UI 오류 수정 * hotfix: 근태,근무 수정요청 폼 UI 오류 수정 * [#43] 업무페이지 개발 * feat: 업무 고정리스트 개발 (#43) * feat: 업무 페이지 개발 (#43) * feat: 업무 고정리스트 개발 (#43) * feat: 업무 페이지 개발 (#43) * fix: App 라우팅 수정 (#43) * [#43] 보고사항 페이지 개발 * feat: 업무 고정리스트 개발 (#43) * feat: 업무 페이지 개발 (#43) * feat: 업무 고정리스트 개발 (#43) * feat: 업무 페이지 개발 (#43) * fix: App 라우팅 수정 (#43) * feat: 알바생 보고사항 페이지 개발 (#43) * hotfix: 알바생 업무 상세페이지 오류 해결 * hotfix: 사장님 업무 상세 UI 오류 해결 * [#61] 보고사항 페이지 개발 * [#65] 5차 QA * feat: 매장 삭제 기능 개발 (#65) * feat: 알바생 삭제 기능 개발 (#65) * feat: 급여 설정 교통비 추가 및 매장 관리 초과근무시간 추가 (#65) * feat: 매장 중복등록 버튼 중복 클릭 방지 (#65) * design: 기타 서류 UI 개선 (#65) * refactor: 회원가입 시 권한요청 로딩상태 UI 개발 (#65) * refactor: 사장 기타서류탭 미제출인원 파악 로직 및 UI 개선 (#65) * refactor: 알바 홈 및 스케줄 페이지 UI 오류 개선 (#65) * refactor: pdf 뷰어 추가 및 다운로드 로직 개선 (#65) * feat: admin 페이지 라우팅 설정 및 api 요청 인터셉터 개발 (#65) * refactor: 알바생 서류 제출 바텀시트 중복제출 방지 로딩 상태 관리 추가 (#65) * [#67] 6차 QA * refactor: 시간 선택 컴포넌트 UI 및 조작 UX 개선(#67) * refactor: 업무 추가 유효성 검사 개선 (#67) * refactor: 업무 추가 후 리패치 로직 개선 (#67) * refactor: 사장 staff 자동 선택 로직 추가 및 UI 개선 (#67) * refactor: 주간 캘린더 월 표시 및 UI 개선 (#67) * feat: 사장님,알바생 매장 등록 후 바로 등록한 매장 자동선택 기능 추가 (#67) * fix: 사장님,알바생 알림 페이지 리다이렉션 오류 수정 (#67) * feat: 사장님 홈페이지 요청 알림카드 개발 (#67) * cicd: 관리자 baseUrl 자동 추가 (#67) * feat: 고액 시급 설정 시 확인 절차 추가 (#67) * [#63] 정기 구독 결제창 개발 * feat: 정기결제를 위한 Toss 카드등록 로직 추가 (#63) * refactor: 백엔드 빌링키 발급 테스트 연동 * feat: 정기결제를 위한 Toss 카드등록 로직 추가 (#63) * refactor: 백엔드 빌링키 발급 테스트 연동 * feat: 카드등록 및 서비스 구독 로직 개발 (#63) --------- Co-authored-by: 심재엽 <jysim0326@ajou.ac.kr> --------- Co-authored-by: 심재엽 <jysim0326@ajou.ac.kr>
1 parent affc1c2 commit 84019bb

188 files changed

Lines changed: 11201 additions & 1079 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.production

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VITE_KAKAO_REDIRECT_URI=https://d3741u3vzg4n3d.cloudfront.net/loginSuccess
1+
VITE_KAKAO_REDIRECT_URI=https://dx44qcj8tqeon.cloudfront.net/loginSuccess

.github/workflows/build-and-deploy.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ jobs:
3333
echo "VITE_API_URL=${{ secrets.VITE_API_URL }}" >> .env
3434
echo "VITE_KAKAO_JS_KEY=${{ secrets.VITE_KAKAO_JS_KEY }}" >> .env
3535
echo "VITE_SIGNATURE_ENCRYPTION_KEY=${{ secrets.VITE_SIGNATURE_ENCRYPTION_KEY }}" >> .env
36+
echo "VITE_FIREBASE_API_KEY=${{ secrets.VITE_FIREBASE_API_KEY }}" >> .env
37+
echo "VITE_FIREBASE_AUTH_DOMAIN=${{ secrets.VITE_FIREBASE_AUTH_DOMAIN }}" >> .env
38+
echo "VITE_FIREBASE_PROJECT_ID=${{ secrets.VITE_FIREBASE_PROJECT_ID }}" >> .env
39+
echo "VITE_FIREBASE_STORAGE_BUCKET=${{ secrets.VITE_FIREBASE_STORAGE_BUCKET }}" >> .env
40+
echo "VITE_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }}" >> .env
41+
echo "VITE_FIREBASE_APP_ID=${{ secrets.VITE_FIREBASE_APP_ID }}" >> .env
42+
echo "VITE_FIREBASE_MEASUREMENT_ID=${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }}" >> .env
43+
echo "VITE_FIREBASE_VAPID_KEY=${{ secrets.VITE_FIREBASE_VAPID_KEY }}" >> .env
44+
echo "VITE_ADMIN_API_URL=${{ secrets.VITE_ADMIN_API_URL }}" >> .env
45+
echo "VITE_TOSS_CLIENT_KEY=${{ secrets.VITE_TOSS_CLIENT_KEY }}" >> .env
3646
3747
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
3848
echo "VITE_KAKAO_REDIRECT_URI=${{ secrets.VITE_KAKAO_REDIRECT_URI_PROD }}" >> .env.production

dev-dist/sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ define(['./workbox-86c9b217'], (function (workbox) { 'use strict';
8282
"revision": "3ca0b8505b4bec776b69afdba2768812"
8383
}, {
8484
"url": "index.html",
85-
"revision": "0.b814jr1kg9o"
85+
"revision": "0.d8l3930uoao"
8686
}], {});
8787
workbox.cleanupOutdatedCaches();
8888
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
"dependencies": {
1919
"@hookform/resolvers": "^5.0.1",
2020
"@lottiefiles/react-lottie-player": "^3.6.0",
21+
"@tosspayments/tosspayments-sdk": "^2.3.5",
2122
"axios": "^1.8.4",
2223
"class-variance-authority": "^0.7.1",
2324
"clsx": "^2.1.1",
2425
"crypto-js": "^4.2.0",
2526
"date-fns": "^4.1.0",
2627
"dayjs": "^1.11.13",
28+
"firebase": "^11.8.1",
2729
"framer-motion": "^12.9.1",
2830
"html5-qrcode": "^2.3.8",
2931
"lodash.isequal": "^4.5.0",
@@ -36,6 +38,7 @@
3638
"react-dropzone": "^14.3.8",
3739
"react-hook-form": "^7.55.0",
3840
"react-intersection-observer": "^9.16.0",
41+
"react-ios-pwa-prompt": "^2.0.6",
3942
"react-router-dom": "^7.3.0",
4043
"react-signature-canvas": "1.1.0-alpha.2",
4144
"react-toastify": "^11.0.5",

0 commit comments

Comments
 (0)