From edf9b36dfe0ae84fca4dc4beb8378cf8e0f8a881 Mon Sep 17 00:00:00 2001 From: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Date: Wed, 23 Oct 2024 18:40:57 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20be=20cd=20=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EC=88=98=EC=A0=95=20(#829)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 서비스가 DTO 반환하도록 수정 (#181) * refactor: 서비스가 DTO 반환하도록 수정 * refactor: 하나의 스트림으로 dto 생성하도록 수정 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: 하나의 stream으로 dto 생성하도록 수정을 위한 import 추가 * refactor: FcmPushSender 내 Notification 알림 조회 로직 제거 - getNickname 반환 타입 수정 - `@Async` 제거에 따른 FcmEventScheduler 파일 삭제 - FcmSendRequest 필드 수정 Co-authored-by: hyeon0208 * fix: FcmSendRequest 변경에 따른 테스트 코드 수정 Co-authored-by: hyeon0208 * refactor: Nickname 객체 필드명 value로 수 Co-authored-by: hyeon0208 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Co-authored-by: hyeon0208 * refactor: BaseActivity, BaseFragment (#220) * feat: BindingActivity, BindingFragment 구현 * style: ktlint * refactor: showSnackbar 메서드 추가 및 binding by lazy 사용, application private 제거 * refactor: showSnackbar 메서드 message 타입 변경 및 application 추가 * refactor: BindingActivity, BindingFragment 적용 * style: ktlint * refactor: BindingActivity에 initializeBinding 추상 메서드 추가 * docs: 서비스 소개글 작성 (#242) * docs: 약속 참여 API 문서화 (#246) * docs: 404에러 문서화를 위한 커스텀 어노테이션 추가 * docs: Swagger 회원 참여 API 문서화 * refactor: AliasFor 어노테이션으로 ApiResponse 속성값 매핑 * refactor: api url 버전명 추가 * feat: 기존의 /mates 요청 메서드 추가 * docs: 약속 단건 조회 API 문서화 (#245) * docs: 약속 참여자 상태 목록 조회 API 문서화 (#243) * refactor: 서브 모듈 설정 * docs: 약속 참여자 eta 상태 목록 조회 API 문서화 * refactor: 도착 조건이 빠른 상태 순으로 상수 정렬 Co-authored-by: coli-geonwoo * docs: API 문서 상으로 도착지까지 남은 소요시간이 "분"임을 명시 Co-authored-by: coli-geonwoo * docs: 400에러 시 오류에 대한 이유 자세히 명시 Co-authored-by: coli-geonwoo * docs: 참여자 위치 상태 조회 요청 dto 위경도 변경 Co-authored-by: coli-geonwoo * chore: DTO명 MateEtaxx로 수정 * docs: 400에러 설명 상세화 * fix: MateResponse 파일 복구 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * docs: 약속 개설 API 문서화 (#249) * feat: 약속 개설 v1 api dto 구현 * docs: 약속 개설 v1 API 문서화 * style: 추가 개행 삭제 Co-authored-by: mzeong * docs: deprecated 옵션 추가 * refactor: dto renaming MeetingSaveV1Request > MeetingSaveRequestV1 MeetingSaveV1Response > MeetingSaveResponseV1 * docs : 모임 > 약속 수정 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * refactor : 약속 개설 API 구현 (#250) * feat: controller 약속 개설 v1 메서드 구현 * feat: 약속 개설 v1 메서드 구현 * style: 컨벤션 준수 * refactor : dto 이름 변경 반영 * refactor : 모임 > 약속 용어 통일 * style: 개행 제거 * test: statusCode 숫자로 표기 * test: deprecated 옵션 추가 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * design: 로그 화면 뷰 디자인 (#248) * chore: 오디 아이콘 추가 * design: 보라색 둥근 사각형 drawable 추가 * design: 로그 화면 오디? 버튼 디자인 * refactor: selector에 색상 제거 * design: 오디? 버튼 padding 10dp로 변경 * refactor: meeting_room_ody -> meeting_room_dashboard_button 네이밍 변경 * chore: 불필요한 파일 제거 * chore: rectangle_radius_0.xml 파일 추가 * design: 복사하기 버튼에 색상 추가 * chore: selector_button_color.xml 추가 및 Button -> AppCompatButton으로 변경 * design: 초대 코드 확인 버튼에 tint 추가 * design: 유저 현황 화면 디자인 (#252) * design: 유저 위치 현황 화면 item 디자인 구현 * design: xml 파일명 수정 * feat: 로그 툴바에 뒤로가기 버튼 추가 * design: 유저 현황 화면 구현 * chore: string resource 이름 변경 * fix: 뱃지 중앙 정렬되지 않는 현상 수정 * refactor: layoutManager xml로 이동 * chore: meeting room 패키지 구조 변경 * feat: manifest에 현황 화면 추가 * chore: eta -> etadashboard 패키지명 변경 * style: ktLint 적용 * refactor: 모임 개설, 참여 api 분리하기 (#255) * refactor: 약속 개설 v1 api에 맞게 요청/응답 데이터 수정 * refactor: 약속 참여 v1 api에 맞게 요청/응답 데이터 수정 * refactor: 약속 참여/개설 뷰모델 분리 * fix: MeetingResponse mapping 버그 수정 * fix: 약속 참여로 이동하지 않는 버그 수정 * fix: 모임 참여 시 유효성 검증 제대로 되지 않는 버그 수정 * style: ktLint 적용 * chore: startingPoint -> departure 프로퍼티명 변경 * chore: 쓰이지 않는 indicator 제거 * design: 홈 화면 리스트 디자인 (#260) * design: 홈 화면 리스트 디자인 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * feat: 유저 현황 화면 api v1 연결 (#261) * feat: 유저 위치 현황 api dto 구현 Co-authored-by: haeum808 * feat: 유저 위치 현황 Repository 구현 Co-authored-by: haeum808 * style: ktLint 적용 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * feat: 약속 참여 V1 API 구현 (#247) * docs: 404에러 문서화를 위한 커스텀 어노테이션 추가 * docs: Swagger 회원 참여 API 문서화 * refactor: AliasFor 어노테이션으로 ApiResponse 속성값 매핑 * refactor: api url 버전명 추가 * feat: 기존의 /mates 요청 메서드 추가 * feat: 약속 참여 v1 API 구현 * style: 코드 컨벤션 적용 * chore: mate 패키지로 이동 * feat: 참여자 저장 응답 DTO 추가 및 지원하지 않는 메서드 제거 * docs: 리스트 형식 데이터를 @ArraySchema 사용해 표시 * refactor: 지원하지 않는 meeting 메서드 제거 * design: 홈 화면 리스트 없는 경우 디자인 (#262) * design: 모임이 없을 때 보이는 화면 * chore: 불필요한 코드 삭제 * fix: FakeMeetingRepository postMeeting 반환 값 수정 * style: ktlint * design: 홈 화면 플로팅 버튼 디자인 (#263) * chore: 하얀색 취소, 더하기 아이콘 추가 * design: 홈 화면 플로팅 버튼 디자인 * fix: FakeMeetingRepository postMeeting 반환 값 수정 * style: ktlint * fix: FakeMeetingRepository patchMatesEta 추가 * feat: 유저 현황 화면 리스트 어댑터 구현 (#265) * feat: Eta item에 대한 uiModel 구현 * feat: adapter 구현 및 데이터 바인딩 연결 * style: ktLint 적용 * refactor: 함수 분리 * feat: 위치 권한 팝업 띄우는 로직 구현 * refactor: missing tooltip 리스너를 바인딩 어댑터로 분리 * style: ktLint 적용 * refactor: Pair 대신 Point 객체 사용 * refactor: magic number 제거 및 DurationMinuteType 구현 * style: ktLint 적용 * feat: 내 약속 목록 조회 API 문서화 및 구현 (#251) * feat: 내 약속 목록 조회 API 문서화 - Swagger 문서화 코드 추가 및 이전 버전 API deprecated 설정 - 컨트롤러 단에 임시 반환을 위한 더미 데이터 추가 - 응답을 위한 dto 생성 및 문서를 위한 예시와 설명 추가 * feat: 내 약속 목록 조회 API * fix: fixture 객체 사용에 따른 unique 제약 조건 위반 코드 제거 * fix: cherry-pick 시 누락된 코드 추가 및 fixture member 객체 미사용 코드로 수 * fix: meetingService, mateService 순환 참조 해결 * fix: fixture meeting 객체 사용에 따른 unique 제약조건 위반 * refactor: `saveAndSendNotifications` 호출하는 MeetingService 메서드명 수정 * refactor: `findByMeetingAndMember` 메서드 제거 및 해당 로직 meetingService 내에서 직접 수행 * fix: 모임 구독 시 실패 * refactor: 약속 인원 수, 메이트로 응답 생성 로직 메서드 분리 * fix: 시간 데이터 초 제거 후 반환하도록 수정 (#270) * refactor: v1/mates 응답값 수정 (#268) * refactor: 모임 참여 시 응답 데이터 수정 * refactor: 모임 참여 시 응답 데이터 수정 * feat: LocalTime의 ss 제거 * feat: 플로팅 버튼 화면 이동 구현 (#271) * feat: 플로팅 버튼 눌러서 이동하는 로직 구현 * fix: 약속 참여 벼튼을 눌럿을 때 초대 코드 입력 화면으로 이동 * refactor: 함수 한줄로 변경 * feat: 홈 화면 리스트 어댑터 구현 (#272) * feat: ListAdapter 구현 * feat: item fold 구현 * feat: 약속 시간 바인딩 어댑터 * feat: 쓰이지 않는 리스트 제거 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * feat: 폴링 방식 스케줄링 구현 (#274) * config: WorkManager 의존성 추가 Co-authored-by: haeum808 * feat: WorkManager 작업 예약할 Worker 구현 Co-authored-by: haeum808 * feat: 작업 예약 하는 로직을 가진 Repository 추가 Co-authored-by: haeum808 * feat: 약속 참여 시 31번 작업 예약하는 기능 구현 Co-authored-by: haeum808 * feat: 유저 현황 화면에서 데이터 LiveData 받아오는 기능 구현 Co-authored-by: haeum808 * style: ktLint 적용 Co-authored-by: haeum808 * refactor: WorkRequest 생성하는 로직을 Worker로 이동 * refactor: 함수 분리 및 상수화 * feat: meetingId 전달하는 로직 구현 Co-authored-by: haeum808 * fix: 코루틴 캔슬되는 오류 수정 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * refactor: 약속 단건 조회 API 구현 (#256) * refactor: mates 필드 @ArraySchema로 수정 * refactor: ErrorCode404 어노테이션으로 수정 * feat: 날짜, 시간 JsonFormat 적용 * feat: 회원이 참여하고 있는 특정 약속의 참여자 리스트 조회 * test: 약속에 참여하고 있는 회원이 아니면 예외 발생 * feat: 약속과 참여자들 정보 조회 * test: 약속 조회 시, 약속이 존재하지 않으면 예외 발생 * refactor: meetingId primitive type으로 변경 * refactor: JsonFormat 불필요한 옵션 제거 * test: Fixture.MATE 제거 * fix: import 추가 * fix: 머지 과정에서 누락된 코드 추가 --------- Co-authored-by: mzeong * feat: 위치 권한 받아오는 기능 구현 (#276) * config: play service gms 의존성 추가 * chore: 위치 권한 메니페스트에 추가 * feat: 위치 권한 요청 기능 구현 * style: ktlint * refactor: 코드리뷰 반영 * fix: ImageView에 제약 걸기 * fix: 깃액셔 문제 * feat: 약속 목록 조회 api 연결 (#279) * feat: meetings/me api 연결 * feat: 시작 화면 변경, FloatingButton 통합 * feat: 시작 화면 변경, FloatingButton 통합 * refactor: 리뷰 반영 * feat: 로그 화면으로 navigate * fix: ciˆ * refactor: 리뷰 반영 * feat: 단일 약속 api 연결 (#281) * feat: 단일 약속 api 연결 * feat: 24시간 내 로그화면 이동 활성화/ 이외 비활성화 * fix: 안내 메시지 수정 * refactor: 리뷰 반영 * feat: gps 위경도 받아오는 기능 구현 (#282) * feat: 위치 경도 불러오는 기능 구현 * chore: log 제거 및 compress 메서드 추가 * feat: repository에서 compress 하게 변경 * style: ktlint * chore: 0..8 상수화 * refactor: 퍼미션 체크 함수화 * style: ktlint * chore: 함수 간소화 * chore: repository 요청 함수 분리 * chore: 한 줄로 변경 * feat: 약속 참여자 상태 목록 조회 API 기능 구현 (#277) * feat: 직선 거리 계산 기능 추가 Co-authored-by: coli-geonwoo * feat: 조건별 참여자 상태 반환 기능 추가 Co-authored-by: coli-geonwoo * feat: 참여자가 약속 참여시 최초로 Eta 저장 기능 추가 * refactor: 소요시간 출발시간 로직 분리 * feat: Eta, Mate 관련 DTO 추가 * refactor: 예상소요시간 필드 추가 * feat: 참여자 Eta 목록 반환기능 구현 * fix: Fixture 사용 개선으로 코드 오류 개선 * test: Eta Test 추가 * test: eta 테스트 추가 * refactor: service 로직 경량화 * refactor: 가독성 개선 * style: Fixture 변수 재할당 * feat: eta 목록 조회 컨트롤러 코드 추가 * fix: backend 패키지 하위 변경만 커밋 내역에 포 * refactor: 중복 Eta dto 제거 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * refactor: 유저 위치 현황 조회 시 자신의 닉네임 response로 받도록 수정 (#284) * refactor: 서버 응답에 자기자신의 닉네임 추가 Co-authored-by: eun-byeol * fix: 직렬화, 역직렬화 오류 수정 * style: ktLint 적용 * style: ktLint 적용 * style: ktLint 적용 * fix: 빌드 오류 수정 * style: ktLint 적용 --------- Co-authored-by: eun-byeol * fix: update 미반영 오류 문제 해결 (#287) * refactor: HomeActivity -> MeetingsActivity로 이름 변경 (#291) * refactor: HomeActivity -> MeetingsActivity로 이름 변경 * refactor: 기타 home 제거 * style: ktLintFormatˆ * fix: 유저 현황표 폴링 방식 수정 (#292) * refactor: 폴링 간격 수정 Co-authored-by: haeum808 * refactor: 가장 최신의 데이터를 observe하도록 수정 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * refactor: 데모데이 이슈 문제 해결 (#293) * refactor: 현재 위치로 소요시간 계산하도록 수정 * refactor: 참여자의 현재 위도 경도 null 처리 * refactor: 도착 상태에 따른 소요시간 반환 * refactor: etaService를 MeetingController가 의존하도록 변경 * refactor: 곧도착 조건 로직 메서드로 분리 * feat: 현황 화면 툴바 리스너 등록 (#304) * feat: 현황 화면 툴바 리스너 구현 * feat: 툴바에 모임 이름 전달하는 코드 추가 * feat: 초대 코드 입력에서 다른 화면으로 이동할 때 초대 코드 입력 화면 finish() (#305) * fix: 리스트 깜빡임 현상 해결 (#306) * fix: 리스트 깜빡임 현상 해결 * refactor: 아이템 애니메이션 제거 코드를 xml로 이동 * fix: 개설하기에서 뒤로가기 버튼 누르면 현 화면 없애기 및 오디 캐릭터 추가 (#301) * fix: 개설하기에서 뒤로가기 버튼 누르면 finish() * fix: 개설하기, 참여하기 후 돌아오면 메뉴 닫기 * style: ktlint * chore: 오디 캐릭터들 추가 * design: 약속 없을 때 오디 캐릭터 추가 * design: 약속 만들었을 때 오디 캐릭터 추가 * design: 약속 참여 했을 때 오디 캐릭터 추가 * chore: BindingAdapter 사용으로 변경 * chore: BindingAdapter 사용으로 변경 * test: 2차 스프린트 구현 사항 테스트 (#308) * config: 테스트 관련 의존성 추가 * test: 초대 코드 입력 화면 ui 테스트 구현 * test: 주소 유효성 검증 테스트 구현 * config: 프래그먼트 테스트를 위한 의존성 추가 * test: 약속 이름 입력 화면 테스트 구현 * test: 약속 이름 입력 테스트 수정 및 패키지 이동 * test: 닉네임 입력 화면 테스트 구현 * refactor: typeText -> replaceText로 변경 * chore: 불필요한 테스트 제거 * style: given/when/then 작성 * fix: unitTest 실행되지 않는 현상 해결 * feat: 로그에서 30분전이면 오디 버튼이 아예 안뜨게 구현 (#309) * fix: 약속 로그 관련 수정 사항 (#314) * fix: 로그 list가 깜빡이는 문제, 그림자가 listitem을 덮지 않는 문제 해결 * Update android/app/src/main/res/layout/activity_notification_log.xml Co-authored-by: kimhm0728 --------- Co-authored-by: kimhm0728 * feat: 내 약속 목록 조회 시 현재 이후 약속만 조회 (#302) * feat: 약속 시간을 기준으로 내 약속 목록 필터링 * fix: 24시간 전 약속도 포함되도록 수정 * fix: meeting fixture를 사용하지 않도록 코드 수정 * test: DisplayName 설명 구체화 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 테스트 안정성을 위해 LocalDateTime 변수로 선언 후 사용 * rafactor: 시간 비교 코드 수정 Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> * fix: 약속 리스트 관련 수정 사항 (#315) * refactor: 디자인 수정 및 클릭 위에 따른 navigation과 fold 수정, 깜빡임 수정 * refactor: 비활성화된 오디 버튼 클릭 시 표시 메시지 변경 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * fix: 행방불명상태의 소요시간 응답 오류 해결 (#317) * refactor: isMissing 소요시간 반환 로직 추가 * refactor: 저장 및 업데이트 시점에 나노초 제거, createAt 변경 방지 옵션 추가 * refactor: prePersist 기능 사용 롤백 * test: isModified 테스트 오류 수정 * fix: 해방불명 오류 해결 (#320) * fix: 해결되지 않은 행방불명 오류 해결 (#323) * fix: compress 메서드 수정, gps 온오프 확인 (#321) * fix: compress 메서드 좌표 길이에 상관없이 안전하게 자르게 변경 * fix: 유저가 gps 껐는지 확인하는 로직 추가 * style: ktlint * style: ktlint * fix: 도착한 상태인 사람의 소요시간이 -1로 반환되고 있는 문제 해결 (#325) * fix: 확장 버튼 패딩 20dp 주기 (#329) * fix: 로그에서 오디? 버튼이 30분 전부터 계속 보이게 변경 (#327) * fix: 로그 화면에서 null이 잠깐 나타났다 사라지는 뷰 수정 (#332) * design: 초대 코드 item과 모임 정보 칸과의 간격을 늘림 (#334) * feat: 안드로이드 로깅 환경 구축 (#337) * feat: Analytics 기초 구현 * config: firebase crashlytics 의존성 추가 * feat: 네트워크 로깅 확장 함수 추가 * feat: 네트워크 로깅 구현 * feat: 약속 리스트 -> ETA 현황, 약속 방 -> ETA 현황 이동 버튼에 로그 추가 * feat: bindingFragment 체류시간, 이탈 시점 추적 로그 * style: ktLintFormat * fix: rollback --------- Co-authored-by: kimhyemin * feat: EtaDashboardViewModelTest 구현 (#338) * config: coroutine test 의존성 추가 * feat: FakeMatesEtaRepository 추가 * feat: ViewModel 테스트를 위한 클래스들 추가 * feat: EtaDashBoardViewModelTest 추가 * style: ktlint * chore: given, when, then 형식 추가 * fix: 로그 화면 닉네임들 길어지면 안보이는 버그 수정 (#341) * feat: 닉네임 길면 스크롤 되게 변경 * style: xml 코드 reformat code * refactor: response. requset api 순서에 맞게 맞추기, 패키지 위치 수정 (#340) * chore: MateEtaInfoResponse 위치 변경 * chore: 패키지 위치 변경 및 api 순서에 맞게 변경 * docs: test coverage report 스크립트 추가 (#254) * docs: test coverage report 스크립트 추가 * docs : 테스트 커버리지 워크플로우 추가 --------- Co-authored-by: coli-geonwoo * refactor : 나노초 제거를 직렬화 도구로 수행 (#303) * refactor: 시간 형식을 직렬화 도구로 통일 * style: 컨벤션 준수 * style: 첫번째 행 개행 추가 * test: 직렬화 도구 테스트 추가 * test: 테스트 검증 스트림으로 수정 --------- Co-authored-by: coli-geonwoo * refactor: 시간 비교 로직에서 초/나노초 단위 trim (#346) * refactor: 나노초/초 제거를 util 클래스로 수행 * style: 불필요한 import 문 삭제 * test: 24시간 이내 판단로직 테스트 오류 개선 * chore: 메서드명 변경 trim > trimSecondsAndNanos --------- Co-authored-by: coli-geonwoo * refactor: EtaStatus 매핑 로직 개선 및 테스트 코드 추가 (#351) * refactor: calculate()인자로 Location 타입을 받도록 수정 * refactor: eta 로직 가독성 개선 * refactor: eta 테이블에 isMissing 컬럼 추가 * test: Eta 예외 상황 테스트 추가 * refactor: 조건식 검증 순서 변경 * test: 테스트 코드 축약 --------- Co-authored-by: coli-geonwoo * config: 앱 출시를 위한 수정 (#350) * config: VERSION.1_8 -> VERSION_17 * config: versionCode 1 -> versionCode 4 * config: ad id에 대한 설정 무시하게 설정 * config: parcelize, kapt, crashlytics 버전 카탈로그에 맞게 변경 (#353) * refactor: 권한 체크, 권한 요청 분리 (#347) * refactor: PermissionHelper에 위치, 알림 권한 체크하는 로직 추가 * refactor: PermissionHelper에 위치, 알림 권한 체크하는 로직 추가 * refactor: coarse, fine location 권힌이 허용되면 백그라운드 location 요청하게 변경 * refactor: PermissionHelper에 권한 요청하는 로직 추가 * style: ktlint * refactor: 함수화 * refactor: 메서드 네이밍 변경 * style: ktlint * style: ktlint * refactor: 불필요한 코드 삭제 * refactor: requires API 어노테이션 삭제 * feat: 서버 응답 400, 500번대 예외 처리 (#359) * feat: ApiResultCallAdapter 구현 * feat: fetchMeetingCatalog2ˆ * feat: sample error handlingˆ * chore: renamed packageˆ * refactor: call adapter의 response type private로 변경 * test: FakeMeetingRepository 메서드 구현 * refactor: 네트워크 에러 시 출력 메시지 수정 * refactor: body null 체크 * chore: 패키지 변경 data -> domain * refactor: 서버 에러 리턴시 에러 메시지 파라미터 이름 변경 error -> errorMessageˆ * refactor: Extension의 람다 이름 변경, func -> blockˆ * refactor: nullable 포함 * refactor: sealed interface로 변경 * refactor: FakeMeetingRepository listOf() -> emptyList()로 변경 * refactor: ApiResultCall execute 미지원 메시지 한글로 변경 * refactor: 로깅 관련 코드 리팩터링 (#361) * feat: 로깅 인터페이스 및 구현체 구현 * refactor: 기존 firebaseAnalytics를 추상화한 객체로 수정 * style: ktLint 적용 * refactor: 기존 firebaseAnalytics를 추상화한 객체로 수정 * chore: 로깅 프레임워크 적용 및 모니터링 대시보드 구성 (#348) * chore: docker run 시에 volume 설정 추가 Co-authored-by: mzeong * chore: 불필요한 env 제거 Co-authored-by: mzeong * chore: 로그 파일 생성을 위해 Logback 설정 Co-authored-by: eun-byeol * chore: commons-logging 제외 Co-authored-by: eun-byeol * feat: exceptionHandler, interceptor 로그 추가 Co-authored-by: eun-byeol * chore: backend cd 스크립트 push 브랜치 수정 Co-authored-by: mzeong * chore: backend cd 스크립트 docker volume 수정 Co-authored-by: mzeong * chore: 로그 파일 gitignore에 추가 Co-authored-by: eun-byeol * chore: amount path 절대 경로로 수정 Co-authored-by: mzeong * chore: 로그 파일 절대 경로로 수정 Co-authored-by: eun-byeol * chore: 현재 작업중인 브랜치로 checkout하도록 임시 수정 Co-authored-by: mzeong * chore: profile에 따라 파일 경로 변경 Co-authored-by: eun-byeol * chore: 푸시 시 배포 적용되는 브랜치 수정 Co-authored-by: eun-byeol * chore: interceptor에서 request body 로그 출력 - wrapper, filter 생성 Co-authored-by: eun-byeol * chore: interceptor에서 response body 로그 출력 - wrapper 생성 Co-authored-by: eun-byeol * chore: 로그 개행 제거, 정상 요청에 대한 response body 로그 추가 Co-authored-by: eun-byeol * chore: ContentCachingResponseWrapper 사용해 response body 로그 추가 Co-authored-by: eun-byeol * chore: ContentCachingRequestWrapper 사용해 request body 로그 추가 Co-authored-by: eun-byeol * chore: cd workflow trigger 이벤트 수정 Co-authored-by: mzeong --------- Co-authored-by: eun-byeol * refactor: 현황 화면과 로그 화면을 하나의 activity로 관리 (#365) * refactor: 액티비티 xml 파일 추가 및 프래그먼트로 변경 * refactor: 로그, 현황 화면의 viewModel 제거, 하나로 합치기 * refactor: 현황 화면의 툴바, 복사 로직을 액티비티로 이동 * refactor: 로그 화면의 툴바, 복사 로직을 액티비티로 이동 * feat: 프래그먼트 화면 전환 로직 구현 * chore: eta -> etaDashboard, room -> notificationLog 함수명 변경 * style: ktLint 적용 * feat: 뒤로 가기 버튼 누르면 백스택 삭제하는 로직 구현 * test: 리팩터링에 따른 테스트 수정 * style: ktLint 적용 * design: 툴바 폰트 크기 줄이기 (#389) * fix: 정확한 위치 가져오게 getCurrentLocation로 변경 (#390) * feat: 약속 참여자 ETA 조회 시, 수도권 외 지역 예외처리 (#368) * feat: 커스텀 어노테이션으로 수도권 위경도 좌표 검증 로직 구현 * feat: 수도권 위경도 좌표 검증 로직 Request Dto에 적용 * test: 수도권 위경도 좌표 검증 테스트 코드 가독성 개선 * refactor: 불필요한 괄호 제거 * refactor: 변수명 수정 * fix: 컨트롤러에서 @SupportRegion 로직 타지 않는 문제 해결 * design: 로그인 화면 디자인 (#388) * design: 로그인 화면 디자인 * design: 올바른 해상도 이미지로 변경 * design: 쓰이지 않는 이미지 제거 * refactor: 리뷰 반영 * design: 로그인 이미지 뷰에서 scaletype 삭제 * test: InviteCodeViewModel 테스트 (#392) * test: SingleLiveData를 위한 getOrAwaitValue와 SingleLiveData가 한 번 Handled 되었는지 알기 위한 getIfHandled 구형 * test: checkInviteCode() 테스트 구현 * test: FakeAnalyticsHelper logEvent의 리턴 Unit으로 변경 * test: 리뷰 반영 * fix: 동일한 topic을 구독하여 참여하지 않은 메이트의 알림 받음 (#367) * refactor: 생성일시도 포함하여 주제 구독 - FcmTopic 객체에서 2)약속 아이디, 생성일시로 2)형식에 부합하는 주제 생성 - FcmSendRequest 필드로 FcmTopic 사용하여 잘못된 주제로 구독되는 것 방지 - 로그 메세지 상세화 * style: 어노테이션 순서 정렬 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 가독성 향상을 위해 `StringBuilder` 대신 `+` 사용 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 부 생성자, 주 생성자 순으로 정렬 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: `Meeting`이 `FcmTopic`을 모르도록 코드 수정 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * test: 3차 스프린트 구현 사항 테스트 (#396) * test: MeetingJoinViewModel 테스트 작성 * test: AddressSearchViewModel 테스트 작성 * test: MeetingJoinViewModel given/when/then 순서 수정 * test: MeetingCreationViewModel 테스트 작성 * style: ktLint 적용 * refactor: FakeRepository의 반환값을 테스트 픽스처로 분리 * test: MeetingRoomViewModel의 로그 관련 함수 테스트 작성 * refactor: mapper 함수 타입 변경 * refactor: 프로퍼티 타입 변경 및 테스트 픽스처 분리 * style: ktLint 적용 * refactor: 테스트 픽스처 데이터 수정 * test: 약속 날짜를 오늘 날짜로 선택했을 때의 테스트 추가 * chore: 불필요한 코드 삭제 * test: MeetingsViewModel 테스트 작성 (#398) * test: MeetingsViewModel 테스트 작성 * refactor: meetingsViewModel 한 줄 메서드들 줄바꿈 후 중괄호 삽입 * refactor: Fixture 적용, MeetingCatalog -> MeetingCatalogUiModel 매핑 메서드명 수정 * chore: 뷰모델 테스트 패키지 변경 (#403) * design: 현황 화면 뱃지 애니메이션 추가 (#401) * design: 친구 현재 위치 현황표 닉네임 사이즈 줄이기 * feat: 지각, 지각 위기 바운스 애니매이션 추가 * chore: 맞춤법 수정 * chore: 프로덕션 서버에 서비스 띄우기 (#393) * chore: dev 전용 CD 파일 수정 Co-authored-by: eun-byeol * chore: prod 전용 CD 파일 추가 Co-authored-by: eun-byeol * chore: path 임시 주석 처리 Co-authored-by: eun-byeol * chore: prod name 수정 Co-authored-by: eun-byeol * chore: 이미지 태그명 수정 Co-authored-by: eun-byeol * chore: 도커 이미지 실행 이미지 태그명 수정 Co-authored-by: eun-byeol * chore: 이미지 pull, 제거 순서 변경 Co-authored-by: eun-byeol * chore: prod 서버 로깅 설정 추가 Co-authored-by: eun-byeol * chore: prod cd event branch 변경 Co-authored-by: Hyeon0208 * chore: prod ci 스크립트 추가 Co-authored-by: Hyeon0208 --------- Co-authored-by: H * design: 로그 화면 디자인 수정 (#409) * refactor: 현황 화면과 로그 화면의 툴바를 분리 * refactor: 로그 리스트 어댑터의 멀티 뷰 타입 제거 * style: ktLint 적용 * design: 로그 화면 툴바 디자인 수정 * design: 로그 리스트 아이템 디자인 수정 * design: 로그 햄버거 메뉴 디자인 구현 * feat: 햄버거 약속 친구 리스트 연결 기능 구현 * fix: 디자인 오류 수정 * fix: MeetingRoomActivity 백 버튼 리스너 버그 수정 * style: ktLint 적용 * design: 로그 리스트 아이템에 말줄임표 추가 * refactor: splash 라이브러리 사용으로 변경 (#406) * config: Splash Screen 의존성 추가 * chore: Splash 액티비티 삭제 * feat: MeetingsActivity에서 Splash 화면 뜨게 수정 * chore: 스플래쉬 로고 크기 수정 * refactor: 애니메이션 제거 및 함수 분리 * feat: 재촉하기 API 구현 (#394) * chore: 중복된 클래스 제거 * docs: 문서화 코드 작성 * feat: notificationType nudge 추가 * feat: 불변 값 객체로 전환 * feat: fetch join 활용한 mate 메서드 구현 * feat: 콕찌르기 구현 * feat: errorCode400 description 추가 * style: 쿼리 컨벤션 준수 * style: 개행 컨벤션 준수 * chore: 메서드 분리 * chore: api 수정 * chore: test DisplayName 수정 * test: test 가독성 개선 * refactor: meeting 변수 분리 삭제 * chore: 찌르기 > 재촉하기 * chore: api 수정 * docs: api 수정 * test: displayName 구체화 * fix: fcmTopic 값 객체 수정사항 반영 --------- Co-authored-by: coli-geonwoo * feat: 네트워크 오류, 서버 오류 시 스낵바/토스트 구현 (#411) * feat: 주소 검색 위경도 변환시 에러 핸들링 구현 * feat: 모임 개설 에러 핸들링 구현 * feat: 초대 코드 입력 에러 핸들링 구현 * feat: 약속 참여 에러 핸들링 구현 * feat: 참여 중인 약속 목록 조회 에러 핸들링 구현 * feat: 약속 로그, 현황 화면 에러 핸들링 구현 * chore: 불필요한 코드 삭제 * test: fake repository 반환타입 수정 * style: ktLint 적용 * refactor: 토스트를 스낵바로 수정 * refactor: 에러 핸들링 관련 코드를 BaseViewModel로 분리 * refactor: _errorEvent, _networkErrorEvent를 private으로 변경 * docs: 약속 참여자 도착 현황 조회 API 문서화 (#405) * config: 난독화 적용 (#415) * config: 코드 난독화 적용 * config: 카카오 로그인 난독화 예외 처리 추가 * config: retrofit 난독화 예외 처리 추가 * config: 디버그 빌드 시 난독화 추가 * refactor: ETA 조회 API 응답 수정 (#418) * refactor: ETA 조회 API 응답 수정 (#417) * feat: 약속 참여자 도착 현황 조회 API 응답 수정 - 응답에 requesterMateId, mateId 추가 - ETA 업데이트 로직 메서드 분리 - `EtaService` meetingId, memberId로 mate 조회하는 메서드 `MateService`로 이동 - 응답 DTO 교체에 따른 컨트롤러, 서비스 테스트 수정 - meetingId로 모든 mate 조회하는 메서드 이름 수정 - 약속 단건 조회 시 mate가 아닌 경우 400 대신 404 반환하도록 수 * fix: 문서화용 하드코딩 제거 * feat: 위치 현황 카카오톡 공유 기능 구현 (#426) * config: firebase storage 의존성 추가 * feat: 뷰를 캡쳐하고 byteArray로 변환하는 기능 구현 * feat: firebase storage에 이미지 업로드하는 기능 구현 * feat: 공유하기 클릭 시 이미지 업로드 기능 구현 * refactor: 화면 전체가 아닌 RecyclerView만 캡쳐되도록 수정 * config: 카카오 공유하기 의존성 추가 * config: 카카오 공유하기 기초 셋팅 * chore: 패키지명 변경 * feat: 카카오 공유하기 기능 구현 * feat: 카카오 공유하기 기능과 뷰모델 연결 * refactor: 이미지 사이즈 카카오 api에 전달하도록 수정 * refactor: 카카오 공유 api 호출을 코루틴으로 수정 * style: ktLint 적용 * test: 테스트 파라미터 수정 * chore: ci에 kakao native key 추가 * style: ktLint 적용 * config: 버전 카탈로그 이름 변경 * refactor: ByteArrayOutputStream use 사용으로 변경 * refactor: 코루틴 사용 방법 변경 * chore: 패키지 변경 * style: ktlint 적용 * feat: 로딩 중 ProgressBar 다이얼로그 띄우는 기능 구현 (#430) * design: 로딩 다이얼로그 구현 * feat: BindingActivity에 로딩 다이얼로그 show/hide 함수 추가 * feat: BaseViewModel에 isLoading 변경하는 함수 추가 * config: 프로가드 규칙 추가 * feat: 서버에서 데이터 받아오는 부분에 로딩 추가 * feat: 콕찌르기 기능 (#420) * feat: 콕 찌르기 알림 타입 추가 * feat: 콕 찌르기 기능 구현 * feat: FakeMeetingRepository에 fetchNudge 추가 * refactor: nudgeSuccess -> nudgeSuccessMate 네이밍 변경 * refactor: get -> fetch로 변경 * test: 친구 재촉하면 친구 재촉 성공하는지 테스트 * style: ktlint * style: ktlint * style: ktlint * feat: 초대 코드 카카오톡 공유하기 기능 구현 (#431) * chore: 리스너 패키지 이동 * feat: 초대 코드 공유하기 기능 구현 * style: ktLint 적용 * style: 이미지 url 수정 * style: ktLint 적용 * feat: 초대 코드 공유 기능에 loading 추가 * style: ktLint 적용 * refactor: Firebase Analytics 로깅을 비동기로 남기도록 수정 (#435) * refactor: 코루틴 스코프 내에서 로깅 함수 호출하도록 수정 * refactor: fragment 코루틴 스코프를 viewLifecycleOwner.lifecycleScope로 변경 * refactor: 재촉하기 API에 재촉한 사람 정보가 포함되도록 수정 (#437) * docs: 문서화 코드 수정 * feat: 같은 약속 참여자인지 확인하는 책임 추가 * feat: 재촉하는 mate의 닉네임이 포함되도록 로직 개선 * feat: nudgeRequest dto null 검증로직 추가 * style: 컨벤션 준수 * refactor: deviceToken 반환로직 작성 * chore: 메서드 명 변경 * refactor: mate로부터 디바이스 토큰 추출 * chore: 에러 메시지 수정 --------- Co-authored-by: coli-geonwoo * fix: fragment 로깅 찍는 시점 수정 (#441) * chore: MySQL DB를 실행할 EC2 생성 및 프로덕션 EC2 서버와 연결 (#419) * feat: eta entity NotNull 속성 추가 Co-authored-by: Hyeon0208 * chore: mySql DB 적용, ddl-auto 속성 validate로 변경 - schema sql 파일 추가 Co-authored-by: Hyeon0208 * chore: 스키마 오류 수정 * chore: 스키마 타입 오류 수정 * chore: defer-datasource-initialization 설정 제거 * fix: mate save메서드 트랜잭션 적용 * chore: test yml 설정에 defer-datasource-initialization 설정 제거 --------- Co-authored-by: eun-byeol * chore: HTTPS 적용 (#436) * chore: prod cd 포트포워딩 443 변경 Co-authored-by: Hyeon0208 * chore: cd docker 포트포워딩 변경 Co-authored-by: Hyeon0208 * chore: MsSQL 설정 추가 * fix: Swagger CORS 에러 해결 --------- Co-authored-by: Hyeon0208 Co-authored-by: mzeong * chore: 로그 관련 중복 코드 제거 및 로그 내 Request Body 개행 제거 (#422) * chore: console에 로그 레벨에 따른 색상 출력 기능 추가 * chore: log pattern 변수화, 로그 출력 시간 서울 기준으로 변경 * refactor: Interceptor 내 로그 메시지 중복 코드 Wrappers Dto로 분리 * refactor: Wrapping 전용 Filter 클래스명 수정 * refactor: record class에서 일반 class로 변경 * chore: deprecated API 제거 (#438) * refactor: deprecated된 api 제거 * refactor: deprecated api test 수정 --------- Co-authored-by: coli-geonwoo Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: manifest에서 MAIN, LAUNCHER 인텐트 필터와 data 인텐트 필터를 분리 (#445) * refactor: 약속 참여 API 응답 수정 (#439) * refactor: 약속 참여 API 응답 수정 - 닉네임 중복 체크 로직 제거 - 참여자의 `estimatedMinutes`로 RouteTime 생성 * refactor: `Meeting` 내 `getMeetingTime` 메서드 사용 Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> * refactor: 테스트 편의를 위해 `MateSaveResponse` 스웨거 예시를 미래 날짜로 수정 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * style: 한 줄 최대 길이 초과로 개행 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: 누락된 LocalDate, LocalTime 임포트 추가 --------- Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * chore: dev 서버 DB MySQL 교체 작업 (#446) * chore: dev 서버 MySQL DB로 교체 Co-authored-by: eun-byeol * chore: 주석 처리 및 연결 테스트 Co-authored-by: eun-byeol * chore: 주석 처리 및 연결 테스트 Co-authored-by: eun-byeol * chore: 주석 제거 Co-authored-by: eun-byeol * chore: 컨테이너 명 변경 및 포트 포워딩 포트번호 변경 Co-authored-by: eun-byeol * chore: CI 빌드 워크플로우 제거하고 Test만 실행하도록 변경 Co-authored-by: eun-byeol --------- Co-authored-by: eun-byeol * fix: develop 스키마 validation 오류 해결 BE BUG (#455) * chore: local 프로필에서 h2 db를 사용하도록 변경 * fix: member에 nickname 컬럼 추가 * feat: 재촉하기 알림에 닉네임이 보이게 변경 (#457) * feat: 재촉하기 api path -> body로 변경 * test: MeetingRoomViewModel 바뀐 api에 맞게 변경 * feat: "닉네임"이 제촉해요 형식으로 변경 * style: ktlint * refactor: 위경도 좌표 검증 로직 제거 및 Coordinate 객체 생성 (#447) * refactor: Coordinates 객체 생성, 위경도 검증 로직 제거 * style: reformat code * feat: double로 변환 가능한 좌표임을 검증 * refactor: `MateSaveRequest` 내 `toOriginCoordinates` 메서드 추가 * refactor: `Location`의 `getLatitude`, `getLongitude` 메서드 사용 * fix: 머지 과정에서 toOriginCoordinates 메서드 에러 해결 * feat: 카카오 소셜 로그인 구현 및 엑세스 토큰 발급 (#448) * refactor: `DeviceToken` 필드명 `value`로 변경 Co-authored-by: coli-geonwoo * feat: `Member` 필드 추가 Co-authored-by: coli-geonwoo * feat: 임의의 `Provider`를 가진 회원이 존재하는지 조회 Co-authored-by: coli-geonwoo * feat: `Member` 생성 - 중복된 DeviceToken 검증 - 중복된 ProviderType, ProviderId 검증 Co-authored-by: coli-geonwoo * feat: 카카오 회원 생성 API - 카카오 회원 생성, 액세스 토큰 갱신 API 문서화 Co-authored-by: coli-geonwoo * feat: `JwtTokenProvider` 구현 Co-authored-by: coli-geonwoo * fix: 누락된 `@RequestBody` 추가 Co-authored-by: coli-geonwoo * feat: 액세스, 리프레시 토큰 발급 및 액세스 토큰을 이용한 인증 전환 Co-authored-by: coli-geonwoo * chore: 누락된 jwt dependency 추가 및 ConfigurationProperties 설정 - ConfigurationProperties 설정 오류로 실패하는 테스트 추가 Co-authored-by: coli-geonwoo * feat: 액세스 토큰 갱신 API * test: 헤더에 device-token 사용하는 테스트 Disabled 처리 * fix: 만료된 토큰 예외 처리 #428 Co-authored-by: coli-geonwoo * fix: 하나의 기기에 여러 카카오 계정 로그인 허용 - 카카오 계정이 다른 기기에 로그인 시 이전 디바이스 토큰 제거 Co-authored-by: coli-geonwoo * fix: 리프레시 토큰 만료 시 예외 처리 #432 * fix: 만료된 액세스 토큰도 파싱 #433 * test: 회원 생성 및 `DeviceToken` NotNull 조건 삭제 * test: 액세스 토큰 파싱, 검증, 액세스/리프레시 토큰 만료 확인 * test: 코드 재사용을 위해 TokenFixture 생성 * test: 카카오 로그인 API, 액세스 토큰 갱신 API * test: 액세스 토큰 파싱, 갱신 * docs: Swagger summary 수정 * refactor: 사용하지 않는 AuthorizationHeader 내 상수 제거 * refactor: AccessToken 내 주석 제거 * test: AuthorizationHeader 생성 * fix: 잘못 머지된 NudgeMessage 빌드 코드 수정 * fix: Member 테이블 sql 수정 * fix: 누락된 Member 생성자 추가 및 제거될 테스트 Disabled 처리 * refactor: 사용하지 않은 Token 객체 제거 --------- Co-authored-by: coli-geonwoo Co-authored-by: coli-geonwoo * refactor: 로그 목록 조회, 약속 단건 조회 API에 imageUrl 필드 추가 (#461) * feat: 약속 단건 조회에 imageUrl 추가 * feat: 로그 목록 조회에 imageUrl추가 * chore: 사용하지 않은 API 제거 * test: v1/mates 테스트 삭제 --------- Co-authored-by: coli-geonwoo * refactor: 약속 참여 api 수정 및 닉네임 입력 화면 삭제 (#452) * refactor: 약속 참여 api 요청/응답 파라미터 수정 * chore: 닉네임 입력 화면 삭제 * chore: 닉네임 관련 테스트 삭제 * style: ktLint 적용 * fix: response 파라미터명 수정 * feat: 로그 목록 조회, 약속 단건 조회 response에 imageUrl 필드 추가 (#462) * feat: response 들에 imageUrl 필드 추가 * feat: TestFixtures 프로퍼티에 imageUrl 값 추가 * style: ktlint * fix: 수정된 jar가 배포되지 않는 문제 해결 (#464) * chore: 컴포즈 파일 제거 Co-authored-by: eun-byeol * chore: 스키마 설정 수정 Co-authored-by: eun-byeol * chore: CD 파이프라인 clean up 명령어 수정 Co-authored-by: eun-byeol * chore: 서브모듈 커밋 Co-authored-by: eun-byeol * chore: CD 파이프라인 변경된 환경변수에 맞춰 제거 Co-authored-by: eun-byeol * feat: 형상 관리용 Dev 전용 Docker 컴포즈 파일 추가 Co-authored-by: eun-byeol --------- Co-authored-by: eun-byeol * feat: 카카오 소셜 로그인 구현 (#442) * chore: 카카오 sdk 의존성 추가 * feat: 카카오톡으로 리다이렉션 추가 * feat: 카카오톡으로 가입 기능 구현 * feat: api 서버에 가입 요청하는 기능 구현 * chore: mockWebServer 의존성 추가 * refactor: 스플래시에서 로그인 화면으로 이동하는 메서드 이름 변경 * chore: thirdparty.login.model 패키지명 entity로 변경 * refactor: deprecated된 MemberService 제거 * feat: 카카오 로그인 후 api 서버에 access token과 refresh token 요청, 토큰 만료시 새 토큰 요청 * refactor: authorization 헤더 수정 * fix: refresh token이 제대로 가지 않는 문제 수정 * refactor: 사용되지 않는 키 삭제 * chore: mockServerTest 의존성 제거 * refactor: Meetings에서 로그인이 되어있지 않은 경우 로그인 화면으로 리다이렉션, 인터셉터에서 url 기반으로 refresh 체크하고 있는 문제 수정 * fix: LifecycleOwner 버그 수정 * fix: 로그인 이후 목록이 뜨지 않는 문제 수정 * refactor: LoginActivity에서 splash를 띄워주는 것으로 변경 + 자동 로그인 구현 * refactor: 리뷰 반영 * style: ktLintFormat * fix: 메인 화면에서 어플리케이션 아이콘이 보이지 않는 문제 수정 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * refactor: 쓰이지 않는 로그 제거 * refactor: 쓰이지 않는 메서드 제거 * refactor: 리뷰 반영 * chore: 안드로이드 CD 구축 (#463) * chore: 안드로이드 cd 스크립트 작성 * chore: 리뷰 반영 * refactor: 모임 참여 로직 리팩터링 (#465) * design: activity_meeting_join 출발지 입력 화면 디자인 수정 * refactor: MeetingJoinActivity에 출발지 입력 코드 추가 * refactor: 출발지 유효성 검증 로직 수정 * test: MeetingJoinViewModel 테스트 수정 * chore: 사용하지 않는 코드 삭제 * style: ktLint 적용 * refactor: 주소 editText setText 방식 수정 * fix: 약속 목록이 제대로 ui에 반영되지 않는 버그 해결 (#467) * refactor: 약속 목록 옵저버 방식 변경 * feat: 로그인 화면 finish 추가 * fix: meetings Recyclerview 수정 * fix: 재촉하기 로그 문자열 수정 * fix: 약속 목록 isEmpty 버그 수정 * design: 오디 캐릭터 색상 변경 * refactor: 로그인 화면 네비게이션 바 보이게 수정 * style: ktLint 적용 * design: 초대코드 공유 이미지 링크 수정 (#470) * feat: 약속 리스트에서 뒤로가기 2번 하면 나갈 수 있는 기능 구현 (#472) * feat: 약속 리스트에서 뒤로가기 2번 하면 나갈 수 있는 기능 구현 * config: versionCode 4 -> 7 * refactor: 함수화 및 상수화 * docs: 회원 삭제 API (#477) * chore: 앱 패키지명 변경 (#483) * chore: 패키지명 변경 * chore: 패키지명 변경 * style: ktLint 적용 * chore: cd 스크립트 패키지명 변경 * fix: 카카오 웹 로그인 안되는 문제 수정 (#485) * refactor: 지난 약속에 참여하지 못하도록 예외처리 (#474) * feat: 지난 약속에 참여하지 못하도록 예외처리 * refactor: meeting에게 기한 만료 여부 묻도록 수정 --------- Co-authored-by: coli-geonwoo * design: 설정화면 디자인 (#492) * chore: 필요한 아이콘들 추가 * feat: 홈화면에서 설정화면 가는 로직 구현 * feat: 설정 화면 디자인 및 설정 리스트 구현 * fix: 설정 화면 세로만 가능하게 변경 * refactor: onSetting -> onClickSetting * refactor: 네이밍 변경 * refactor: 네이밍 변경 * refactor: 네이밍 변경 * style: ktlint * chore: SettingActivity exported -> false * feat: 설정 화면에서 개인정보 처리 방침, 서비스 이용 약관 링크 연결 (#496) * feat: 개인정보 처리 방침, 서비스 이용 약관 설정에서 링크 연결 * refactor: 노션 uri들 local properties에서 관리 * android ci에 uri들 추가 * fix: 약속이 개설되지 않는 버그 수정 (#491) * refactor: 스프링 프로필 분리 (#494) * chore: 테스트를 위한 트리거 변경 * chore: defer 옵션 추가 * chore: private yml dev 유저 옵션 변경 * chore: private yml root 비밀번호 추가 * chore: dev ddl-auto update로 변경 * chore: defer 옵션 제거 * chore: defer 옵션 제거 * chore: sql init 모드 변경 * chore: 프로필 분리 * chore: 사용되지 않은 환경변수 제거 * chore: 중복 설정 제거 및 프로필 별 적합한 옵션으로 수정 * chore: dev EC2에서 사용하는 컴포즈 파일 내용으로 수정 * chore: 실제 배포를 위한 develop으로 트리거 변경 * chore: dev 프로필 ddl-auto validate로 변경 * chore: local 환경의 로그 파일 경로 수정 * chore: 서브 모듈 update * chore: 테스트를 위한 트리거 변경 * chore: defer 옵션 추가 * chore: dev ddl-auto update로 변경 * chore: defer 옵션 제거 * chore: defer 옵션 제거 * chore: sql init 모드 변경 * chore: 프로필 분리 * chore: 사용되지 않은 환경변수 제거 * chore: 중복 설정 제거 및 프로필 별 적합한 옵션으로 수정 * chore: 프로필 별 서브모듈 import 제거 * chore: 머지 충돌로 수정된 CD yml 다시 수정 * chore: dev의 ddl-auto validate로 변경 --------- Co-authored-by: mzeong * feat: 애플리케이션 재시작 시 PENDING 상태 알림 스케줄링 및 새벽 4시마다 지난 모임 삭제 기능 추가 (#410) * feat: 시스템 타임 존 설정 추가 * feat: 알림 테이블에 fcmTopic 컬럼 추가 * feat: 애플리케이션 시작 시 PENDING 상태 알림 스케줄링 적용 * feat: 지난 약속방 논리 삭제 스케줄링 추가 * test: 접근제어자 protected로 변경 및 getter 제거 * feat: 오늘 약속의 기한이 지난 약속 리스트 조회 기능 추가 및 이벤트 발행 기능 추가 * feat: fcm topic 구독 해제 기능 추가 * test: 테스트 설명 추가 * refactor: Device Token getter 디미터 법칙 적용 * test: Base 추상 클래스 접근 제어자 수정 * refactor: 개행 적용 * style: 벌크 쿼리 메서드명 수정 * feat: 약속 참여 시간이 지난 약속방 참여 검증 추가 * refactor: 새벽 4시 스케줄링 코드 이벤트 리스너 제거 및 트랜잭션 제거 * refactor: 머지 충돌 작업 해결 * refactor: 조회 메서드에 약속 기간이 지나지 않은 조건 추가 * feat: 기간이 지나지 않은 약속 단건 조회 메서드 추가 * refactor: findFetchedMateById() 메서드 사용 시 약속 기한이 지난 약속 처리 로직을 service에서 처리 * test: 기한이 지난 약속 조회 테스트 어떤 약속인지 명확하게 변수명 네이밍 * style: 약속방 -> 약속으로 텍스트 변경 * style: 기간이 지나지 않은 약속방 전체 Mate 조회 메서드 네이밍 수정 * test: 2가지 검증 구문을 assertAll로 래핑 * feat: 로그아웃 기능 구현 (#493) * chore: swagger 문서 작성 * feat: 생성자 로직 변경 * feat: 멤버 refreshToken 삭제 로직 구현 * feat: 로그아웃 기능 구현 * feat: 리프레시 토큰 초기화 로직 일관성 준수 * feat: 리프레시 토큰 validate 추가 * chore: 메서드 순서 변경 * test: 불필요한 테스트 삭제 * feat: member 리프레시 토큰 update 기능 구현 * feat: 로그아웃 기능 구현 * chore: description 수정 * chore: 로그아웃 시 401 description 설명 추가 * refactor: 액세스 토큰만 받도록 로직 수정 * style: test 네이밍 변경 LogOut > Logout * test: 테스트 에러 해결 * refactor: 불필요한 메서드 삭제 * refactor: 이미 로그아웃 상태더라도 200을 반환하도록 수정 --------- Co-authored-by: coli-geonwoo * chore: Dev 서버 Down 오류 해결 (#501) * chore: 변경된 스키마로 수정 * chore: 방언 제거 및, sql.init.mode: never로 변경 * chore: dev의 sql.init.mode: always로 변경 * chore: local 프로필 sql.init.mode 설정 추가 * feat: 로그아웃 기능 구현 (#499) * feat: ApiResult의 상태를 나타내는 is~ 변수 추가 * feat: 카카오 로그아웃 처리 콜백을 코루틴으로 구현 * feat: 오디 서버의 로그아웃 서비스 구현 * feat: 클라이언트에 저장된 access token과 refresh token 삭제 구현 * feat: repository에서 카카오와 오디 서버에서의 로그아웃 후 토큰을 삭제하는 기능 구현 * feat: Application에서의 의존성 주입 * feat: 설정 화면에서 개인정보 처리 방침, 서비스 이용 약관 링크 연결 (#496) * feat: 개인정보 처리 방침, 서비스 이용 약관 설정에서 링크 연결 * refactor: 노션 uri들 local properties에서 관리 * android ci에 uri들 추가 (cherry picked from commit a33d7e4529cc044a991c8e8931653c9b08dcf30c) * fix: 약속이 개설되지 않는 버그 수정 (#491) (cherry picked from commit a4321624ed6282e6e6f143483a7603bdd5a81f8c) * chore: 주석 삭제 * feat: kakaoLoginRepository와 SettingsActivity 연결 * refactor: SplashActivity와 LoginActivity 분리 * feat: 로그아웃시 로그인 액티비티로 이동 * feat: 로그아웃을 한 후 토스트 메시지를 보여주는 기능 구현 * refactor: 로그아웃을 한 후 토스트 대신 스낵바를 보여주는 기능으로 변경 * refactor: 반드시 로그아웃 처리가 된 뒤에 navigate를 하도록 변경 * refactor: 리뷰 반영 * refactor: 로그아웃, 회원 탈퇴 시 안내 메시지 string 이름 변경 * refactor: 리뷰 반영 --------- Co-authored-by: haeum808 <159797292+haeum808@users.noreply.github.com> Co-authored-by: Hyemin Kim * refactor: debug, release 모드에 따른 BASE_URL 분기처리 (#460) * refactor: BASE_URL 빌드 모드에 따른 분기 처리 * refactor: BASE_URL 분기 처리 수정 * config: ci 스크립트 base_url 수정 * refactor: BASE_URL 분기 처리 수정 * refactor: BASE_URL 위치 변경 * config: cd 스크립트 base_url 수정 * fix: common.yml 미반영으로 url null 값으로 인식 (#519) * refactor: 기본적으로 보여주던 수도권 안내 멘트 삭제 (#516) * refactor: 출발 알림이 아닌 type들의 초기 상태를 DONE으로 변경 (#509) * refactor: ENTRY, NUDGE 타입을 가진 알림의 status를 DONE으로 초기화 * refactor: 출발 알림 타입을 가진 알림만 상태를 DONE으로 변경하도록 수정 * refactor: NotificationType내에서 출발 알림 여부 확인 * feat: 알림이 현재 알림인지 확인하는 메서드 추가 * refactor: 초대코대 코드 유일성 높이도록 개선 (#507) * fix: BaseEntity 필드 NotNull 제약조건 제거 * chore: dev 프로필 sql.init.mode never로 변경 * refactor: 초대코드 필드 타입 및 제약조건 변경 * refactor: 8자리의 유일한 초대코드 생성 기능 추가 * feat: 초대 코드 중복 검사 및 초대코드로 조회 기능 추가 * refactor: 변경된 초대코드 스키마에 맞춰 테스트 코드 수정 * chore: sql auditing을 사용한 필드 not null 제약조건 제거 * refactor: 메서드 순서 변경 * style: 예외 메시지 띄어씌기 제거 * refactor: 미사용 메서드 제거 및 초대코드 검증로직 사용 메서드 변경 * refactor: 에러 로그 제거 * refactor: Auditing 필드 NotNull 제약조건 추가 * feat: FCM에 전송하는 메세지에 meetingId 추가 (#520) * feat: fcm Message data에 meetingId 추가 * style: 메세지 클래스명 특성에 맞게 수정 * style: FCM 요청 DTO 클래스명 수정 * style: 개행 컨벤션 적용 * refactor: 변경된 클래스명 적용 및 코드 흐름 개선 * refactor: 연관관계 엔티티에서 약속 ID를 꺼내도록 수정 * refactor: 쿼리 변수 네이밍 수정 및 순서 수정 * refactor: meetingId getter 디미티 법칙 적용 * refactor: 메세지 특성에 맞게 네이밍 수정 * refactor: 디미터 법칙 적용한 엔티티 getter 제 * style: 코드 컨벤션 적 * fix: merge 충돌 오류 해결 * refactor: 민감한 설정을 jasypt를 활용해 암호화 적용 (#511) * feat: Jasypt 의존성 및 설정 추가 * refactor: jasypt 암호화 적용된 값 적용 * chore: 이미지 빌드 시 jasypt 환경변수를 적용하도록 옵션 적용 * refactor: local, dev, prod 프로필에만 jasypt 설정 적용되도록 설정 * comment: 이상한 코드 TODO 주석 추가 * refactor: EC2 서버 코어 수에 맞춰 encryptor poolsize 2로 조정 * refactor: FCM 설정 파일을 암호화해 읽도록 변경 * refactor: 어노테이션 순서 변경 * chore: 서브모듈을 사용하지 않는 ci/cd 스크립트로 수정 * refactor: fcm.admin.sdk 값 common으로 이동 및 config.import 구문 추가로 지정한 yml 속성 읽도록 수정 * fix: InviteCodeGeneratorTest Disabled 처리 * chore: logging 향상을 위한 MDC 도입 (#504) * chore: MDC 적용 - 로그 출력 패턴 수정 - 로깅을 위한 필터 이름 수정 및 MDC 로직 추가 Co-authored-by: coli-geonwoo * chore: 지각 참여자 로그 추가 Co-authored-by: coli-geonwoo --------- Co-authored-by: coli-geonwoo * feat: 회원 삭제 API (#512) * feat: 특정 참여자의 PENDING 알림을 모두 DISMISSED 알림으로 수정 - NotificationStatus에 DISMISSED 추가 * feat: DISMISSED 알림 전송 안 함 - fixture 생성 로직 분리 * feat: 참여자 아이디에 해당하는 Eta 존재하면 soft delete * feat: 회원 아이디에 해당하는 Mate 존재하면 soft delete * feat: 회원 삭제 시 Mate, Eta 삭제 및 Notification DISMISSED 처리 * feat: 회원 삭제 컨트롤러 * fix: soft delete 구현에 따른 createQuery 사용 불가 * chore: Member, Mate, Eta에 deletedAt 열 추가, Notification status 열에 dismissed 추가 * test: 회원 삭제 API 멱등성 - fix: 헤더 어노테이션 누락 * fix: merge 과정에서 누락된 코드 복구 * feat: 회원 삭제 시 회원 삭제 알림 추가 - NotificationType MEMBER_DELETION 추가 - Notification sql 수정 * refactor: NotificationStatus 내 isDismissed 메서드 제거 * docs: 회원 삭제 API 멱등성 테스트 DisplayName 구체화 * test: 회원 삭제 서비스 테스트 내 누락된 검증 로직 추가 * refactor: 불필요한 개행 제거 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: BaseRepositoryTest 생성 * feat: 삭제 회원 로그를 포함해서 약속 로그 목록 조회 * fix: H2 환경에서 sql 대소문자 차이로 데이터 생성 불가 * refactor: NotificationStatus 변경하는 벌크 쿼리 제거 * refactor: 조회 후 제거 대신 deleteById 사용 * refactor: 중복 device token unique 제약조건 제거 * fix: 머지 후 테스트 실패 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: jasypt 비밀번호 못 읽는 문제 해결 (#527) * fix: 도커에 전달된 환경변수를 애플케이션이 못 읽는 문제 해결 (#530) * chore: 임시로 파이프라인 수정 * chore: 환경변수 설정 옵션 ENV로 변경 * chore: develop 브랜치로 CD 트리거 변경 * chore: yml 상 jasypt 옵션 제거 * chore: 트리거 변경 * chore: 트리거 변경 * chore: jasypt 설정 yml상 제거 * chore: 트리거 develop으로 롤백 * fix: 회원 삭제 구현 후 로그 목록 조회 API 오작동 (#534) * chore: 빈 리스트 조회 원인을 파악하기 위해 로그 출력 * chore: 테스트를 위해 dev 서버 배포 이벤트 수정 * chore: 테스트 위한 프로덕션 코드 수정에 따른 테스트 disabled * chore: 빈 리스트 조회 원인을 파악하기 위해 추가 로그 출력 * chore: 배포 이벤트 변경 * fix: `@SQLRestriction` 제거 및 필터 전역 적용 - 필터 적용되지 않는 findById에 deletedAt으로 필터링 로직 추가 * Revert "chore: 배포 이벤트 변경" This reverts commit 064a3fd89c2f4ddbb8a7002f87d15c5f249ce7b1. * Revert "chore: 테스트를 위해 dev 서버 배포 이벤트 수정" This reverts commit 960aa721c1558208b65853001e1df89dfb2adeb2. * Revert "chore: 빈 리스트 조회 원인을 파악하기 위해 로그 출력" This reverts commit a2615062 * test: `@SQLRestriction` 제거에 따른 엔티티 삭제 테스트 수정 * refactor: `@SQLRestriction` 제거에 따른 NotiLogFindResponse 내 에러 핸들링 제거 * test: 삭제 Eta 조회에서 불필요한 flush 제거 * style: 불필요한 개행 제거 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: NotiLogFindResponse 생성자를 정팩메로 교체 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * feat: 회원 탈퇴 기능 구현 (#518) * feat: 카카오 연결 끊는 함수 구현 * feat: 탈퇴 시 auth token을 삭제하는 기능 구현 * feat: 탈퇴 기능을 ui와 연결 * feat: 서버 탈퇴 api 호출하는 기능 구현 * design: 탈퇴 다이얼로그 ui 구현 * feat: 탈퇴 버튼 클릭 시 다이얼로그 띄우는 기능 구현 * fix: retrofit service 프로가드 예외 적용 * refactor: LoginRepository 내에서 토큰을 삭제하도록 수정 * chore: 사용하지 않는 코드 삭제 * feat: 로그 타입에 회원 탈퇴 추가 * design: 설정 아이템의 클릭 범위 수정 * refactor: 로그 및 로딩 다이얼로그 추가 * refactor: 로그 타입과 푸시 알림 타입을 분리 * refactor: LoginActicity 이동 방식 변경 * style: ktLint 적용 * feat: imageUrl이 비어있는 경우 회색 이미지 표시하도록 수정 * refactor: TAG를 reflection simpleName에서 문자열로 변경 * refactor: 탈퇴 다이얼로그 데이터 바인딩 -> 뷰 바인딩 * design: mate 목록에서 이미지 없는 경우 회색 처리 * feat: 카카오 연결끊기 (#539) * feat: 회원 삭제 시 소셜 서비스의 유저 정보 파기 * feat: 회원 삭제 시 카카오 연결 끊기 선행 * docs: 회원 삭제 API 코드와 문서 일치 * fix: 회원 삭제 컨트롤러 테스트 시 KakaoAuthUnlinkClient Mock 등록 * docs: 삭제 회원이 회원 삭제 API 요청 시 401 반환 * feat: AuthProvider, DeviceToken unique 제약조건 제거 * feat: 로그 목록 조회 시 삭제 회원의 프로필 이미지 빈 문자열로 응답 * test: 삭제 회원 정보 파기에 대한 테스트 제거 * feat: DI 라이브러리 적용 (#546) * config: Hilt 의존성 추가 * feat: hilt 의존성 변경 * style: ktlint * feat: MeetingRoomViewModel AssistedInject로 변경 * style: ktlint * style: ktlint * fix: Kakao URL 참조하게 변경 * del: 불필요한 코드 삭제 * style: ktlint * feat: HiltWorker를 위한 Hilt 세팅 * fix: Workmanger 동작 안되던 오류 해결 * del: 불필요한 클래스 제거 * del: 불필요한 주석 제거 * del: 불필요한 주석 제거 * style: ktlint * del: 불필요한 mApplication 프로퍼티 삭제 * style: ktlint * fix: Dev 서버 Swagger 접속 에러 해결 (#549) * refactor: Lazy 예외 해결 * refactor: swagger-ui 경로 수정 * chore: cd 문서 작성 오류 해결 * chore: swagger-ui path 지정 반영 * chore: swagger-ui path 기본값으로 변경 * chore: dev-cd 트리거 develop으로 롤백 * refactor: Nickname 객체 로직 정리 (#540) * refactor: Member, Mate 닉네임 필드 타입을 `Nickname`으로 변경 * refactor: 디미터 법칙을 위한 메서드 제거에 따른 코드 수정 * style: 어노테이션 정렬 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: toDeviceToken, toNickname 메서드 제거 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: 디미터 법칙을 위한 메서드 제거에 따른 코드 깨짐 (#558) * fix: Odsay API 요청 정지 복구 (#559) * feat: OdsayApi key 변경 * style: 애너테이션 재정렬 * refactor: @Disabled 처리된 테스트 통과가능한 테스트로 수정 (#551) * refactor: 초대코드 하드 코딩 문자열을 InviteCodeGenerator로 생성된 초대코드로 변경 * refactor: Test 환경에서만 적용되는 FixtureGeneratorConfig로 변경 * refactor: 초대코드 테스트 @Disabled 제거 * refactor: findAllByMember() 테스트 @Disabled 제거 * refactor: FixtureGenerator에 회원의 엑세스 토큰 생성 로직 추가 * refactor: BaseServiceTest 추상 클래스에 FixtureGeneratorConfig 임포트 적용 * refactor: BaseRepositoryTest 추상 클래스에 TestAuthConfig 임포트 적용 및 test 프로필로 활성화 * refactor: BaseControllerTest 추상 클래스에 FixtureGeneratorConfig 임포트 적용 및 미사용 메서드 제거 * fix: 디미터 법칙 getter conflict 해결 --------- Co-authored-by: coli-geonwoo * design: 재촉하기 버튼 가이드 화면 구현 (#548) * design: 재촉하기 가이드 첫번째 화면 ui 구현 * design: 재촉하기 가이드 두번째 화면 ui 구현 * feat: eta 처음 접속 시 가이드 화면 뜨는 기능 구현 * design: 지각, 지각 위기에 애니메이션 추가 * feat: 가이드 툴바 제목을 데이터 바인딩으로 전달 * style: ktLint 적용 * refactor: Datastore를 Hilt로 가져오도록 수정 * style: ktLint 적용 * fix: fcm admin sdk 변경 (#566) * refactor: 회원 탈퇴 시 카카오 api 호출 제거 (#568) * chore: 카카오 탈퇴 api 호출 제거 * fix: KakaoLoginRepository에 override 추가 * style: ktLint 적용 * fix: 입장 알림 전송 에러 문제 해결 (#569) * fix: 입장 알림 오류 해결 * refactor: 알림 타입 로깅 추가 * chore: 오디세이 호출 횟수 확인을 위한 로그 추가 --------- Co-authored-by: mzeong * fix: odsay 호출 문제 해결 (#573) Co-authored-by: coli-geonwoo * feat: 푸시 메세지를 클릭했을 때 앱 내로 접속 (#572) * feat: 알림 누르면 해당 화면으로 이동하는 기능 * style: ktlint * del: 불필요한 MEMBER_DELETION 타입 제거 * refactor: 가독성 좋게 변경 * refactor: 소요시간 계산 외부 api 의존성 낮추기 (#555) * feat: Google 소요시간 계산 API 추가 * chore: google maps api 키 추가 * test: 다형성 적용된 RestClient 테스트로 수정 * refactor: DistanceMatrixResponse 필드 수정 * refactor: GoogleRouteClient 검증 추가 및 URI 인코딩 미적용 * test: GoogleRouteClient 테스트 추가 * test: 테스트용 RouteClient 구현체 네이밍 수정 * refactor: RouteService 런타임 시점에 의존성 변경 가능하도록 수정 및 로깅 추가 * test: 다형성 적용된 빈 의존성 순서 지정 * test: RouteServiceTest @Before Each 제거 * test: 호출이 없는 메서드에 대한 검증을 Mockito.never() 사용 * refactor: RouteConfig의 RouteClient 구현체들에 @Qualifer 제거 * test: TestRouteConfig 마지막 개행 제거 * test: 메서드 순서 변경 * feat: DistanceMatrixResponse에 API 문서 링크 주석 추가 * fix: hilt 적용된 뒤 초대하기, 리프래시 토큰 안되는 버그 (#578) * fix: 카카오톡 초대 코드 공유 버그 * fix: 리프레쉬 Service가 RefreshRetrofit 참조하게 변경 * style: ktlint * chore: Flyway로 데이터베이스 마이그레이션 (#577) * chore: flyway dependency 추가 * chore: yml 설정 및 schema.sql 제거 * chore: 초기 세팅 sql 추가 * chore: AWS 로드밸런서 적용 (#564) * chore: health check 의존성 추가 Co-authored-by: coli-geonwoo * chore: 인프라 구성에 따른 cd 스크립트 수정 Co-authored-by: coli-geonwoo * chore: prod lb 테스트를 위한 주석처리 Co-authored-by: coli-geonwoo * refactor: pull-and-deploy 공통 스크립트 네이밍 수정 Co-authored-by: coli-geonwoo * chore: lb 적용을 위한 cd 스크립트 테스트 Co-authored-by: coli-geonwoo * chore: lb 적용을 위한 cd 스크립트 테스트 Co-authored-by: coli-geonwoo * chore: build-and-deploy 공통 스크립트 제거 Co-authored-by: coli-geonwoo * chore: jasypt env 설정 추가 Co-authored-by: coli-geonwoo * chore: ddl-auto 옵션 변경 Co-authored-by: coli-geonwoo * chore: 포트포워딩 변경 Co-authored-by: coli-geonwoo * chore: pull-and-deploy 직렬처리 변경 Co-authored-by: coli-geonwoo * chore: 트리거 브랜치 원복 Co-authored-by: coli-geonwoo * chore: prod 서버 ddl 설정 validate로 복구 --------- Co-authored-by: coli-geonwoo Co-authored-by: coli-geonwoo * chore: prod DB를 RDS 클러스터로 변경 (#574) * feat: RDS 레플리케이션 설정 추가 * refactor: ReplicationDataSourceConfig DependsOn 제거 프로필 prod 적용 * refactor: ReplicationDataSourceRouter 타입 결정 로직 수정 * chore: OSIV false ㅈ거용 * chore: local 프로필 설정 롤백 * refactor: default datasource 읽기 소스로 변경 * refactor: dataSource 메서드 인자에 @Qualifier 추가 * refactor: ReplicationType enum 클래스에 롬복 추가 --------- Co-authored-by: mzeong * refactor: 주소 검색 다이얼로그를 상호명으로 검색할 수 있는 api로 변경 (#580) * chore: 주소 검색 예전 코드 삭제 * design: 주소 검색 ui 구현 * chore: 기존 카카오 주소 api 삭제 * feat: 주소 검색 화면 데이터 바인딩 구현 * chore: address, location 네이밍 통일 * feat: 카카오 주소 검색 api 연결 * feat: 입력창이 비어있으면 결과 화면도 비어있도록 구현 * fix: 이전 액티비티로 주소 결과 전달하는 기능 수정 * style: ktLint 적용 * style: ktLint 적용 * chore: 함수명 변경 * refactor: 페이지 디폴트 사이즈 위치 변경 * test: Fake Repository 함수 시그니처 수정 * feat: 약속 시간 30분전 ETA 조회 가능 알림 기능 추가 (#563) * feat: ETA 공지 알림 타입 추가 * refactor: 메세지 클래스 record로 변경 * test: ETA 공지 알림 스케줄링 테스트 추가 * feat: ETA 공지 알림 전송 기능 추가 * refactor: 약속 30분전 시간을 meeting에서 반환하도록 수정 * test: 불필요한 테스트 제거 * test: ETA 공지 알림 예약 로직 메서드 호출 횟수 검증 추가 * refactor: eta 알림 시간 계산 로직 서비스로 이동 * refactor: Notification createDepartureReminder 알림 타입 PENDING으로 변경 * refactor: DirectMessage 정팩메 네이밍 수정 * refactor: GroupMessage 내에서 공지 메시지를 생성하도록 수정 * chore: flyway 스키마 변경 사항 sql 추가 * refactor: KST_OFFSET 상수 TimeUtil로 이동 * chore: 스키마 파일 제거 * chore: flyway V2 notification 체크 제약 조건 제거 구문 제거 (#585) * feat: 주소 검색할 때 디폴트 현재 위치 제공 (#589) * feat: 좌표를 통해 주소 가져오는 카카오 resonse 값 추가 * refactor: Address에 디폴트 값 추가 * feat: 디폴트로 현재 위치 가져오는 기능 구현 * style: ktlint * refactor: FakeAddressRepository 오버라이드 함수 추가 * style: ktlint * refactor: 메서드명 변경 * refactor: MeetingJoinViewModel에 인자 추가 전달 * refactor: 현재위치 가져오기 로딩 추가 * fix: 위치 가져오는 조건 변경 * design: 대중교통 멘트 추가 (#594) * refactor: 백그라운드 스케줄링 리팩터링 (#586) * refactor: WorkManager의 enqueue 개수 제한 default 값인 20에서 50으로 수정 * refactor: meeting마다 실행해야 하는 Job의 UUID를 DataStore에 저장하는 기능 구현 * refactor: result로 한 번만 결과값을 출력하는 대신 일정 주기로 setProgress로 데이터를 출력하도록 변경 * refactor: 의도한 시간보다 많이 work를 하게 되는 문제 수정 * refactor: 리뷰 반영 * refactor: ci 버그 수정 * refactor: 회원 탈퇴 시 예약된 스케줄링 모두 삭제 (#596) * refactor: 회원 탈퇴 시 예약된 job 모두 삭제 * refactor: ci 수정 * fix: gps null일 때 조건 추가 (#600) * design: RecyclerView overScrollMode 속성 변경 (#603) * fix: eta 목록 화면 불안정한 문제 수정 (#619) * refactor: 회원 탈퇴 시 예약된 job 모두 삭제 * refactor: setProgress 대신 db로 작업 결과를 저장 후 LiveData로 불러오는 방식으로 변경 * feat: 회원 탈퇴 시 db에 저장된 eta 정보 삭제 * refactor: ci수정 * style: 줄바꿈 추가 --------- Co-authored-by: kimhyemin * chore: 안드로이드 cd 배포 위치 테스트 트랙에서 프로덕션 트랙으로 변경 (#626) * release: 안드로이드 1.0.0 출시 (#627) * fix: 난독화 오류 수정 * feat: versionName 1.0.0 변경 * config: 버전 코드 변경 * hotfix: merge hotfix from main into develop (#642) * chore: 읽기, 쓰기 DB 연결 조건 변경 (flyway 쓰기 작업 오류 해결) (#592) * release: 백엔드 버전 1 배포 (#468) * docs: 리드미 추가 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * docs: PR 템픔릿 파일명 규칙에 맞게 변경 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * docs: PR 템픔릿 파일 위치 규칙에 맞게 변경 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * docs: 모임 개설 API 문서화 (#3) * docs: 모임 개설 API 문서화 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * config: 백엔드 모듈 설정 추가 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo --------- Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * docs: 모임 개설 API 문서 가독성 개선 (#6) * docs: 모임 개설 API 문서화 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * config: 백엔드 모듈 설정 추가 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * docs: 모임 개설 API 문서 가독성 개선 Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo --------- Co-authored-by: mzeong Co-authored-by: eun-byeol Co-authored-by: coli-geonwoo * feat: 엔티티 구현 (#8) * feat: Meeting 엔티티 추가 * feat: Member 엔티티 추가 * feat: Mate 엔티티 추가 * feat: Notification 엔티티 추가 * refactor: Location 필드 변경 * docs: 모임 참여 API 문서화 (#11) * docs: 모임 개설 API DTO 이름 변경 * docs: 모임 참여 API 문서화 * docs: 모임 개설, 모임 참여 API 상태 코드 변경 * feat: 안드로이드 기초세팅 (#15) * config: 프로젝트 생성 * config: 의존성 추가 * design: 디자인 기초 설정 * chore: 안드로이드 기본 manifest 설정 - 알림 권한 - 인터넷 권한 - 가로 모드 고정 설정 * feat: Timber 초기 설정 * chore: MainActivity -> IntroActivity 클래스명 변경 * chore: 패키지 구조 설정 * feat: Retrofit 초기 설정 * docs: 참여중인 모임 목록 조회 API 문서화 (#17) * chore: dto 디렉토리 세부화 * docs: 참여한 모임목록 조회 API 문서화 * refactor: 리소스 url 미반환 --------- Co-authored-by: coli-geonwoo * docs: FCM 토큰 저장, 초대 코드 유효성 검사 API 문서화 (#16) * docs: 회원 추가 API 문서 추가 * docs: 초대 코드 유효성 검사 API 문서 추가 * style: 코드 컨벤션 적용 * refactor: 회원 추가 API 매핑 URL 추가 * style: 한 줄에 하나의 점 컨벤션 적용 * docs: 로그 목록 API 추가 (#14) * chore: backend ci 스크립트 작성 (#42) Co-authored-by: coli-geonwoo * feat: 스플래쉬 화면 구현 (#41) * design: 오디 로고 이미지 추가 * feat: 스플래쉬 화면 구현 * chore: Android 12에 추가된 Splash disable 위한 설정 추가 * feat: 공통 컴포넌트 구현 (#40) * design: 뒤로 가기 버튼이 존재하는 툴바 ui 구현 * design: 입력창 스타일 구현 * design: 하단 버튼 스타일 구현 (다음, 확인) * design: 제목이 있는 툴바 ui 구현 * design: 로그 화면의 툴바 ui 구현 * design: EditText drawable 테두리 수정 * style: 코드 줄바꿈 삭제 * chore: 앱 아이콘 오디 아이콘으로 변경 (#44) * chore: 앱 status bar 추가 (#45) * chore: backend ci 스크립트 작성 (#48) * chore: backend ci 스크립트 작성 Co-authored-by: coli-geonwoo * chore: backend ci 스크립트 테스트 Co-authored-by: coli-geonwoo * chore: backend ci 스크립트 paths 주석처리 Co-authored-by: coli-geonwoo * chore: docker build push job 추가 Co-authored-by: coli-geonwoo * chore: docker build push job 추가 Co-authored-by: coli-geonwoo * chore: docker build push job 오류 수정 Co-authored-by: coli-geonwoo * chore: docker build push job 오류 수정 Co-authored-by: coli-geonwoo * chore: dockerfile 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 추가 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo --------- Co-authored-by: coli-geonwoo * feat: 주소 검색 화면 구현 (#47) * design: 약속 장소 입력 ui 구현 * design: 주소 검색 웹뷰 ui 구현 * config: 데이터 바인딩, 뷰 바인딩 의존성 추가 * feat: 주소 검색 다이얼로그 띄우는 기능 구현 * design: 다이얼로그 ui 수정 * style: ktLint 적용 * config: 데이터 바인딩, 뷰 바인딩 의존성 추가 방식 변경 * refactor: 다이얼로그 설정 코드 scope function으로 변경 * feat: Timber에 DebugTree 추가 (#50) * chore: buildConfig true로 설정 * feat: OdyDebugTree 구현 * Merge branch 'feature/49' into develop * Merge branch 'feature/49' into develop * Revert "Merge branch 'feature/49' into develop" This reverts commit e06c1435188680a53f426b5fb3154b8ed2ef7db0. * Revert "Merge branch 'feature/49' into develop" This reverts commit 7859febd2bb38655b56ad3736cf48361da8ae7c3. --------- Co-authored-by: aprilgom * chore: android ci 구축 (#54) * chore: android ci 스크립트 작성 * chore: android ci 스크립트 오류 수정 * chore: android ci 스크립트 수정 * chore: android ci 스크립트 수정 * chore: android ci 스크립트 수정 * feat: FCM 구현 (#52) * feat: 헤더에 Authorization 필드 추가, BASE_URL local.properties로 이동 * feat: 회원 추가 서비스 구현 * feat: FCM 구현, 앱 설치 후 처음 실행 시 회원 추가 API 전송 * style: lint * config: 의존성 컨벤션 준수 * config: 서버 URL 변수 이름 BASE_URL로 변경 * refactor: Service 경로 postfix 이름 PATH로 변경 --------- Co-authored-by: kimhm0728 * chore: cicd 파이프라인 구축 (#55) * chore: backend ci 스크립트 작성 Co-authored-by: coli-geonwoo * chore: backend ci 스크립트 테스트 Co-authored-by: coli-geonwoo * chore: backend ci 스크립트 paths 주석처리 Co-authored-by: coli-geonwoo * chore: docker build push job 추가 Co-authored-by: coli-geonwoo * chore: docker build push job 추가 Co-authored-by: coli-geonwoo * chore: docker build push job 오류 수정 Co-authored-by: coli-geonwoo * chore: docker build push job 오류 수정 Co-authored-by: coli-geonwoo * chore: dockerfile 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend-cicd-dev.yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 추가 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cd job 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cicd yml 주석 제거 Co-authored-by: coli-geonwoo * chore: backend cd yml 오류 수정 Co-authored-by: coli-geonwoo * chore: backend dockerfile 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cicd 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cicd 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cicd 오류 수정 Co-authored-by: coli-geonwoo * chore: backend cicd 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: backend ci 오류 수정 Co-authored-by: coli-geonwoo * chore: dockerfile 수정 Co-authored-by: coli-geonwoo * chore: dockerfile 수정 Co-authored-by: coli-geonwoo * chore: dockerfile 수정 Co-authored-by: coli-geonwoo * chore: backend cicd yml, dockerfile 수정 Co-authored-by: coli-geonwoo --------- Co-authored-by: coli-geonwoo * chore: backend cicd yml 파일 통합 (#62) * chore: 사용하지 않는 backend ci yml 파일 삭제 Co-authored-by: coli-geonwoo * chore: workflow 스크립트 내 actions 버전 최신화 Co-authored-by: coli-geonwoo * chore: ci 작업에서 test 실패 시 로그 출력 기능 추가 Co-authored-by: coli-geonwoo * chore: ci 작업에서 test 실패 시 로그 출력 기능 추가 Co-authored-by: coli-geonwoo * chore: ci 작업에서 test 실패 시 로그 출력 기능 추가 Co-authored-by: coli-geonwoo * chore: ci 작업에서 test 실패 시 로그 출력 기능 추가 Co-authored-by: coli-geonwoo * chore: ci 작업에서 test 실패 시 로그 출력 기능 추가 Co-authored-by: coli-geonwoo --------- Co-authored-by: coli-geonwoo * chore: android ci 스크립트 수정 (#64) * chore: android ci 스크립트 수정 * chore: android ci 스크립트 테스트 * chore: android ci 스크립트 수정 * chore: android ci 스크립트 테스트 * chore: android ci 스크립트 수정 * feat: 주소 검색 다이얼로그 구현 (#67) * feat: 주소 검색 웹뷰 html 추가 * style: EditText 스타일 변경 * config: 중복되는 의존성 제거 * feat: 다이얼로그에서 웹뷰를 띄우는 기능 구현 * feat: 다이얼로그에서 선택한 주소를 fragment에 전달하는 기능 구현 * fix: ui 스레드에서 주소를 받아오도록 수정 * refactor: 고차 함수를 인터페이스로 변경 * style: 다이얼로그 크기 변경 * feat: 주소 리스너 인터페이스 추가 * style: ktlint 적용 * chore: AddressListener -> AddressReceiveListener 인터페이스명 변경 * chore: DestinationFragment -> MeetingDestinationFragment 클래스명 변경 * feat: 모임 개설 시 프래그먼트들 연결하는 뷰페이저 (#69) * chore: dotsibdicator 의존성 추가 * feat: 모임 방 개설에 필요한 정보들 입력하는 화면들 추가 * feat: ViewPager2 Adapter 구현 * feat: ViewPager와 탭바 뒤로 가기 연결 * feat: 클래스 명 변경 및 indicator 변경 WormDotsIndicator -> DotsIndicator indicator StartingPointFragment -> JoinStartingPointFragment * chore: ktlint apply true로 변경 * chore: deprecated buildconfig 제거 * chore: ksp 버전 업그레이드 1.6.10-1.0.4 -> 1.9.0-1.0.13 * chore: MeetingInfoActivity exported true로 변경 * feat: 모임 참여 완료 화면 구현 (#70) * chore: 박수 이미지들 추가 * feat: 모임 개설 완료 화면 구현 * chore: DestinationFragment -> MeetingDestinationFragment 변경 * feat: 모임 참여 완료 화면 (#72) * chore: 달력 이미지들 추가 * feat: 모임 참여 완료 화면 구현 * chore: 화면 회전 가로로 고정 및 exported false로 변경 * chore: tools:text에 해당하는 값 하드 코딩으로 변경 * feat: 메인 화면 구현 (#73) * design: 인트로 화면 xml 작성 * design: activity_intro.xml 작성 * feat: Event 작성 * feat: IntroNavigateAction 작성 * feat: Intro 버튼 리스너 인터페이스 작성 * feat: 각 버튼 클릭에 따른 Navigation Event 발생 구현 * feat: IntroActivity에 ViewModel 추가 * feat: observe 초기화 코드 추가 * refactor: IntroActivity와 MeetingInfoActivity 연결 * refactor: binding 함수 분리, initialize로 함수명 통일 * chore: shape_purple_radius_20.xml -> rectangle_purple_radius_20.xml 이름 변경 * design: 탑 바 추가 --------- Co-authored-by: haeum808 <159797292+haeum808@users.noreply.github.com> * feat: 모임 참여 시 프래그먼트들 연결하는 뷰페이저 (#74) * chore: MeetingInfoListener -> InfoListener로 인터페이스 명 변경 * feat: 모임 참여 뷰페이저 구현 * chore: initializeDataBinding에 ViewPager 초기화 메서드 추가 * chore: VisitorInfo -> JoinInfo로 메서드명 변경 * chore: InfoListener -> BackListener로 인터페이스 명 변경 * feat: 알림 권한 요청 (#75) * feat: 알림 권한 요청 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * chore: android ci 필드 추가 (#78) * chore: android ci 스크립트 api key 추가 * chore: android ci 스크립트 테스트 * chore: android ci 스크립트 테스트 * feat: 위도, 경도 가져오는 api 연동 (#76) * feat: 위경도 가져오는 repository 구현 * feat: 카카오 location response dto 추가 * feat: 카카오 location api 연동 * feat: 위도 경도를 프래그먼트에 전달하는 기능 구현 * refactor: 위도 경도 받아오는 기능을 비동기로 처리 * fix: 위도 경도 비동기로 받아와서 프래그먼트에 전달 * fix: 위경도 받아온 후 다이얼로그 닫도록 수정 * refactor: interceptor로 헤더 추가 * style: ktLint 적용 * chore: moshi 어댑터 import 수정 * refactor: 함수 분리 * refactor: 위경도에 대한 mapper 생성 * chore: 패키지 구조 변경 * refactor: 위경도 데이터에 대한 ui model 추가 * style: ktLint 적용 * chore: 사용하지 않는 파일 삭제 * feat: 약속 날짜 입력 화면 (#79) * feat: 날짜 선택 화면 구현 * chore: 불필요한 스낵바 제거 * feat: 날짜 선택 시간에 따른 예외 처리 * style: ktlint * feat: 모임 정보 입력 검증 로직 추가 (#68) * feat: 모임 정보 입력 검증 로직 추가 * fix: 검증할 DTO에 검증 어노테이션 추가 * style: 코드 컨벤션 적용 * feat: nickname 검증을 담당하는 도메인 추가 * refactor: 엔티티에서 이미 선언된 NotNull을 임베디드 객체에서 제거 * feat: 닉네임 입력 화면 구현 (#86) * design: 닉네임 입력 화면 ui 구현 * feat: 닉네임 최대 길이 뷰모델에서 가져오도록 구현 * feat: 닉네임이 변경되면 닉네임 글자수가 보이는 기능 구현 * feat: 엑스 버튼 누르면 입력된 닉네임 없어지는 기능 구현 * feat: 닉네임 입력 여부에 따라 다음 버튼 비활성화 되는 기능 구현 * style: ktLint 적용 * feat: 초대 코드 복사 bottom dialog (#84) * design: bottom sheet 틀 디자인 * design: bottom sheet 디자인 * feat: 초대 코드 복사하기 구현 * chore: initialize로 네이밍 통일 및 스낵바에 Int값 전달로 변경 * chore: 초대 코드 관련 UX 라이팅 변경 초대 코드가 복사 됐습니다. -> 초대 코드가 복사 복사되었습니다. * feat: 약속 시간 입력 화면 구현 (#97) * design: 약속 시간 입력 화면 ui 구현 * feat: 시간과 분을 NumberPicker에 데이터로 넣어주는 기능 구현 * feat: NumberPicker 무한 스크롤 구현 * refactor: NumberPicker 숫자 지정하는 기능을 프래그먼트로 이동 * feat: 현재 시간으로 NumberPicker 초기값 셋팅하는 기능 구현 * feat: 다음 버튼 누르면 시간 유효성 검증 구현 * refactor: 다음 버튼 리스너를 인터페이스로 분리 * style: ktLint 적용 * refactor: numberPicker value를 데이터 바인딩으로 수정 * feat: 초대 코드 입력 화면 구현 (#99) * design: 초대 코드 입력 화면 뷰 구현 * feat: 초대 코드 유효성 검증 repository 구현 * chore: manifest에 액티비티 추가 * design: edit text 속성 추가 * feat: 초대 코드 입력 여부에 따라 엑스 버튼의 가시성을 변경하는 기능 구현 * feat: 엑스 버튼 클릭 시 입력한 초대 코드 지우는 기능 구현 * design: strings 와 selector 추가 * feat: 확인 버튼 클릭 시 유효성 검증하는 기능 구현 * style: ktLint 적용 * chore: 불필요한 코드 삭제 * feat: toolbar back 버튼 리스너 구현 * chore: infoListener -> backListener 네이밍 수정 * chore: dialog 크기 수정 (#98) * feat: 서브모듈 환경 구축 (#101) * chore: ci submodule 적용 * chore: 서브모듈 디렉토리 추가 * chore: private.yml 파일 수정 테스트 * chore: private.yml 파일 수정 * test: test argument 수정 * chore: ci 스크립트 수정 * chore: ci 스크립트 수정 --------- Co-authored-by: coli-geonwoo * feat: 출발지 입력 화면 구현 (#100) * style: 출발지 입력 화면 ui 구현 * feat: 도착지 입력 시 수도권 유효성 검증 구현 * refactor: 주소 검색 클릭 리스너 인터페이스로 분리 * chore: 패키지 분리 * feat: 출발지 입력 시 수도권 유효성 검증 구현 * feat: 수도권 여부에 따라 다음 버튼 활성화 기능 구현 * style: ktLint 적용 * feat: 모임 이름 입력 화면 구현 (#102) * design: 모임 이름 입력 ui 구현 * feat: 글자수 데이터 바인딩 기능 구현 * refactor: 모임 시간 범위 표현 방식 수정 * fix: strings 추가 * fix: 바인딩 빌드 오류 해결 * feat: 출발 시간 알림 구현 (#60) * feat: 출발 시간 알림 예약 기능 추가 Co-authored-by: mzeong * refactor: 토큰으로 회원 조회 ArgumentResolver로 공통화 Co-authored-by: mzeong * fix: TaskScheduler 빈 등록 Co-authored-by: mzeong * test: 출발 시간 알림 예약 기능 테스트 추가 Co-authored-by: mzeong * fix: JpaAuditing 활성화 Co-authored-by: mzeong * fix: 요청 DTO 매핑을 위한 RequestBody 어노테이션 추가 Co-authored-by: mzeong * fix: save 메서드에 Transactional 어노테이션 추가 Co-authored-by: mzeong * style: 코드 컨벤션 적용 Co-authored-by: mzeong * fix: firebase 키 캐쉬 내역 제거 * fix: 테스트 시에 테스트용 yml이 수정되도록 규칙에 맞게 이름 수정 Co-authored-by: mzeong * refactor: 모임 내 모든 사용자가 알림 받도록 topic 기능 사용 Co-authored-by: hyeon0208 * refactor: 알림에 닉네임 포함하도록 수정 Co-authored-by: hyeon0208 * refactor: 예외 메세지 오타 수정 Co-authored-by: hyeon0208 * refactor: 디바이스 토큰 헤더 형식 검증 로직 분리 Co-authored-by: hyeon0208 * refactor: 컨트롤러 시그니처 변경 및 스웨거 문서 수정 - 디바이스 토큰 헤더 커스텀 어노테이션 생성 Co-authored-by: hyeon0208 * fix: FCM 토픽 구독 로직 분리 Co-authored-by: hyeon0208 * refactor: Member 필드에 DeviceToken 타입 사용 Co-authored-by: hyeon0208 * refactor: FCM 설정 옵션 코드 분리 및 테스트를 위한 enable 로직 제거 Co-authored-by: hyeon0208 * refactor: FCM message 생성 로직 가독성 개선 Co-authored-by: hyeon0208 * refactor: 변수 선언으로 `taskScheduler.schedule()` 호출 시 가독성 개선 Co-authored-by: hyeon0208 * refactor: 가독성 개선을 위해 AndroidNotification 변수 선언 Co-authored-by: hyeon0208 * refactor: Fixture에 private 생성자 추가 Co-authored-by: hyeon0208 * refactor: IntegrationTest -> BaseControllerTest 이름 변경 Co-authored-by: hyeon0208 * refactor: test application.yml 파일 제거 Co-authored-by: hyeon0208 * refactor: 롬복을 이용하지 않고 Fixture private 생성자 추가 Co-authored-by: hyeon0208 --------- Co-authored-by: Hyeon0208 Co-authored-by: H <99153215+hyeon0208@users.noreply.github.com> * feat: 초대 코드 Preference dataStore 세팅 (#104) * chore: preference datastore 의존성 추가 * feat: 초대 코드 복사 preference datastore 기초 세팅 * feat: 모임 참여/개설 시 뷰모델 데이터 관리 #93 (#105) * feat: 입력값 유효성에 따라 다음 버튼 활성화되도록 구현 * feat: 다음 버튼이 비활성화되면 스와이프도 불가능하도록 구현 * refactor: startActivity 방식을 getIntent로 변경 * feat: 다음 화면으로 이동하면 다음버튼이 비활성화 되도록 구현 * fix: 출발지 입력에 대한 유효성 검증 처리를 Event로 변경 * refactor: 모임 개설 시 데이터 viewModel에서 관리하도록 수정 * feat: 모임 개설 시 화면 플로우 구현 * style: ktLint 적용 * fix: Swagger에서 API 호출 시 Bad Request 응답 오류 (#107) * refactor: `common/annotation` 패키지 이름 오타 수정 * refactor: Authorization 헤더 사용을 위한 설정 추가 및 코드 변경 - 커스텀 어노테이션 DeviceTokenHeader 제거 - 디바이스 토큰 접두사 수정 * fix: 멤버 추가 시 멤버 검증 로직 포함되지 않도록 수정 * fix: nickname 객체로 변경에 따른 코드 수정 * fix: 디바이스 토큰 접두사 추가에 따른 테스트 코드 수정 * fix: LocalDate, LocalTime Swagger 상 타입 표현 string으로 수정 Co-authored-by: hyeon0208 * fix: 닉네임을 객체로 변환함에 따른 getter 코드 수정 Co-authored-by: hyeon0208 --------- Co-authored-by: hyeon0208 * feat: 모임 초대 코드 생성 기능 추가 (#61) * feat: 모임 초대 코드 생성 기능 추가 Co-authored-by: mzeong * style: 한줄에 한개의 점만 찍는다 컨벤션 적용 * refactor: 디코딩 검증 로직 추가 --------- Co-authored-by: mzeong * feat: 서버 헤더 형식 변경 (#112) * feat: 로그 화면 구현 (#108) * feat: Notification 도메인 타입 정의 * feat: api 서버로부터 받는 NotificationLog 타입 정의 * feat: retrofit의 NotificationService 구현 * feat: NotificationLogRepository의 명세와 기본 Repository 구현 * refactor: NotificationLog -> NotificationEntity * design: item_notification_log.xml 작성 * feat: 타입 추가 정의 * chore: merge * refactor: DefaultNotificationLogRepository 싱글턴으로 변경 * feat: NotificationLogViewModel 구현 * feat: NotificationLogActivity 구현 * design: rectangle_cream_downside_radius_30.xml 작성 * design: item_notification_log.xml 작성 * chore: merge * chore: merge * feat: 로그 리사이클러 뷰 구현 * chore: merge * refactor: 알림 로그를 불러올 때 meetingId를 이용해 불러오도록 변경 * feat: 뷰와 데이터 바인딩 * chore: 오타 수정 * feat: 초대 코드 화면에서 로그 화면으로 이동 기능 구현 * refactor: 리뷰 반영 * refactor: ViewHolder 분리 * feat: 닉네임, 출발지 입력 (#80) * refactor: Nickname 도메인 개선 - OdyException 커스텀 예외 생성 - 이름 변경 (NickName -> Nickname) * refactor: 위경도 검증 로직 추가 - Location 필드에 `@NotNull` 추가 * feat: 전역 예외 처리기 추가 * refactor: 불필요한 final 키워드 제거 * refactor: 공백만 존재하는 닉네임 불가하도록 수정 * feat: 소요 시간 계산 기능 구현 (#96) * chore: private 파일 gitignore 추가 * feat: 소요 시간 계산 기능 구현 * refactor: 소요 시간 계산 API client 변경 * feat: Duration Deserializer 구현 Co-authored-by: coli-geonwoo * refactor: RouteClient calculateDuration 메서드 수 Co-authored-by: coli-geonwoo * feat: 출발 시간 계산 로직 구현 Co-authored-by: coli-geonwoo * feat: 소요 시간 계산 API 에러 핸들링 * fix: 커밋되지 않은 response 클래스 추가 * chore: 불필요한 build.gradle 구문 삭제 * refactor: 변수 선언문 try 내부로 이동 * refactor: 중첩된 로직 별도 변수로 추출 * refactor: 축약된 exception 변수명 수정 * refactor: 소요시간 VO 이름 수정, Odsay api response 객체 이름 수정 * refactor: URI 생성 시 StringBuilder 적용 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * feat: 스낵바 위치 변경 및 showSnackBar 형식 통일 (#116) * feat: 로그 목록 조회 (#87) * chore: dto 디렉토리 변경 request > response * feat: NotificationRepository 구현 * feat: dto 변환로직 구현 * feat: notificationService 구현 * style: 컨벤션 준수 * docs: test용 yml파일 추가 * refactor: notification 생성자 추가 * test: 로그 목록 반환 테스트 작성 * refactor: domain to dto 계층 이동 * refactor: method 이름 수정 * test: 로그 목록 조회 통합 테스트 추가 * style: new-line 추가 * chore: 로그 목록 반환 메서드 이동 NotificationController > MeetingController * chore: 메서드 명 일치화 findAllMeetingLogsById > findAllMeetingLogs * chore: domain to dto 메서드명 변경 toResponse > from * refactor: auditing config 분리 * chore: dto 명 변경 NotificationSaveResponse > NotiLogFindResponse NotiLogFindResponse > NotiLogFindResponses * chore: 테스트 디렉토리 이동 * style: 불필요한 import문 제거 * chore: 디렉토리 변경 * Revert "chore: 디렉토리 변경" This reverts commit c1b9f595357b999fe4aac325d460246ab3e8cb91. --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * feat: CI/CD 스크립트 분리 (#126) * chore: ci/cd script 분리 * chore: cd 스크립트 수정 --------- Co-authored-by: coli-geonwoo * feat: 모임 개설 기능 추가 (#121) * style: 한 줄에 하나의 점만 찍는다. 컨벤션 적용 * refactor: 변경된 클래스명으로 getter 네이밍 수정 * chore: 초대코드생성기 util 패키지로 이동 * feat: 모임 개설 API 기능 추가 * feat: 회원 추가 API 기능 추가 * refactor: 변경된 firebase 엑세스 키 파일 위치로 경로 수정 * feat: DB 테이블 삭제 클래스 추가 * test: 컨트롤러 테스트 추가 * refactor: 서브 모듈 패키지 변경 사항 추가 * refactor: 초대코드 디코딩하여 모임방 조회 적용 * refactor: entityManger 의존성 주입 추가 * fix: 회원 생성, 모임 참여 API 오류 수정 (#127) * fix: deviceToken unique, notnull 속성 적용 * fix: deviceToken 공백 검증 로직 적용 * style: import 재정렬 * feat: deviceToken 문자열 앞뒤 공백 제거 로직 추가 * refactor: findDeviceToken 쿼리 성능 개선 * feat: 회원 생성시 토큰 중복 검사 추가 * feat: mate 테이블의 memberId, meetingId unique 설정 * feat: 모임 참여시 중복 검증 로직 추가 * refactor: 모임 개설시 mate에도 회원 정보 저장 * refactor: DeviceToken NotNull 제약 조건 추가 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * feat: 모임 내 닉네임 중복 검증 (#119) * feat: 초대코드 검증 API 추가 (#123) * feat: 초대코드 검증 API 추가 * feat: 404를 반환하는 커스텀 예외 추가 * test: 404 오류를 검증하는 테스트로 변경 * feat: 모임 개설 서버 연결 (#131) * feat: 모임 개설 service, request, response 구현 * feat: MeetingRepository에 postMeeting 메서드 추가 * feat: meeting response 전달 및 초대 코드 저장 구현 * feat: 특정 회원이 참여한 모임 목록 조회 API 구현 (#129) * feat: 멤버가 참여한 모임 리스트 반환 쿼리 구현 * feat: 멤버가 참여한 모임 리스트 반환 기능 구현 * feat: token fixture 추가 * style: static import 제거 * test: 멤버 참여 모임 목록 조회 통합 테스트 추가 * test: NotificationRepositoryTest directory 이동 * test: 간섭 발생 테스트 disabled 처리 * fix: test 오류 개선 * fix: import 오류 해결 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong Co-authored-by: eun-byeol * feat: 다음 버튼 비활성화 시 뷰페이저 스와이프 막는 기능 구현 (#122) * refactor: LivaData set value 방식 변경 * feat: 모임 개설 시 뷰페이저 스와이프 막는 기능 구현 * feat: 뷰페이저 화면 이동 시 유효성 검증 기능 구현 * style: ktLint 적용 * fix: 모임 시간 유효하지 않아도 다음 페이지로 이동하는 버그 수정 * chore: nextPage -> moveOnNextPage 함수명 변경 * feat: 모임 개설 시 개설 완료 화면으로 이동하는 기능 구현 * feat: Notification 구현 (#128) * feat: Notification 메시지 바로 출력 * chore: 의존성 추가 * fix: 경로 변경에 의한 import 변경 * feat: 알림 타입에 따른 알림 메시지 변경 * feat: fcm을 위한 string 작성 * feat: 알림 로그 화면에 bottom dialog 적용 (#130) * chore: domain 패키지 정리 * chore: 리스너 이름 변경 * feat: meeting domain model에 초대코드 추가 * feat: NotificationLogActivity에 bottom sheet 기능 병합 * refactor: FakeRepo에서 DefaultRepo로 변경 * design: elevation 수정 * fix: app 네임스페이스 추가 * fix: manifest 수정 * refactor: FCM 전송 데이터 안드로이드 요청사항 반영 (#136) * fix: 실패하는 테스트 수 (#137) * fix: 초대 코드 입력 성공 시 참여 화면으로 이동하도록 수정 (#133) * feat: 모임 개설 api 연결 (#139) * feat: 모임 개설 service, request, response 구현 * feat: MeetingRepository에 postMeeting 메서드 추가 * feat: meeting response 전달 및 초대 코드 저장 구현 * chore: okhttp logging 의존성 추가 * chore: Http Logging 추가 * chore: 오타 수정 * feat: MeetingService postMeeting 추가 * chore: Timber 메시지 수정 * chore: 키에 맞는 인텐트로 변경 * feat: 모임 개설 api 연결 * feat: 커스텀 예외 생성 및 적용 (#140) * feat: 커스텀 예외 생성 및 적용 * fix: fcmPushSender MockBean 추가 * fix: 테스트 실패 원인 파악 및 성공을 위해 `@Disabled` 처리 - NotificationService 내에서 RouteClient 접근해서 문제 발생 * feat: 모임 참여 서버 연결 (#143) * feat: 서버 참여 api 연결 * style: ktlint 수정 * chore: 메서드 분리 및 메서드 한줄로 변경 * feat: 참여중인 모임 목록 조회 (#142) * feat: 참여한 모임이 있을 경우 첫 번째 모임에 참여, 아닐 경우 인트로 화면으로 이동하는 기능 구형 * feat: 참여한 모임 중 첫 번째 모임의 로그를 띄워주는 기능 구현 * refactor: 리뷰 반영 * fix: 자잘한 ux 버그 다수 수정 (#145) * fix: import 오류 수정 * fix: NumberPicker 디폴트 값이 현재 시간으로 설정되지 않는 버그 수정 * fix: 주소 EditText 한줄만 입력할 수 있도록 수정 * fix: 유효한 날짜 선택 시에도 유효하지 않다는 스낵바 뜨는 버그 수정 * fix: 닉네임 입력 화면으로 이동 시 화면 깜빡임 현상 수정 * fix: back press 시 이전 fragment로 이동하도록 수정 * style: ktLint 적용 * design: 바텀 시트 stroke 제거 및 elevation 추가 * feat: EC2 서버의 H2 콘솔 접근 설정 및 누락된 모임장 알림 로직 추가 (#146) * chore: EC2 서버의 H2 콘솔 접근을 위한 설정 추가 * fix: 모임 참여 API에서 누락된 알림 로직 추가 * fix: ODsay 사용하는 테스트 코드 Disabled 처리 * fix: ODsay 사용하는 MeetingControllerTest 코드 Disabled 처리 --------- Co-authored-by: H <99153215+hyeon0208@users.noreply.github.com> * fix: FCM 토픽 Malformed topic name 에러 해결 (#149) * fix: FCM 토픽 Malformed topic name 에러 해결 (#151) * fix: FCM 토픽 Malformed topic name 에러 해결 * fix: FCM 토픽 Malformed topic name 에러 해결 * fix: 의도하지 않은 값이 토픽에 들어간 코드 수정 (#153) * fix: 로그 화면 버그 해결 (#157) * fix: 로그 화면 데이터 mapping 버그 수정 * design: 로그 화면 그림자 drawable 수정 * fix: LocalDateTime mapping 방식 수정 * design: 로그 화면 툴바의 뒤로가기 버튼 제거 * fix: fcm 토큰 없는 경우 meetings를 불러오지 않도록 수정 * style: ktLint 적용 * chore: Meetings -> MeetingsResponse 클래스명 변경 * fix: LocalDateTime mapping 오류 해결 * fix: 클립보드 복사 시 스낵바 제거 * fix: LocalDateTime mapping 오류 해결 * fix: 로그 화면으로 이동 시 깜빡이는 현상 해결 * refactor: 리뷰 반영 * fix: CalendarView -> DatePicker로 변경하여 날짜 선택 불가 버그 수정 (#155) * feat: 로그 목록 조회 시 과거순 정렬 (#144) * refactor: 아규먼트 리졸버 어노테이션 적용 * refactor: 데이터베이스에 데이터 추가 순으로 알림 로그 정렬 * test: 모임 반환 테스트 오류 해결 * refactor: 현재 이전의 로그 목록을 조회하도록 수정 * refactor: NotiLog 바인딩 수정 createdAt > sendAt * refactor: 불필요한 레코드 삭제 * refactor: LocalTime 밀리 세컨즈 제거 * test: 로그 필터링 적용 테스트 작성 --------- Co-authored-by: coli-geonwoo * fix: 알림 전송 예약 시점이 아닌 전송 시점에 상태 변경되도록 수정 (#162) - FcmSendRequest 매개변수 변경 - updateDone -> updateStatusToDone 메서드명 변경 - 시연을 위해 알림 전송 시간 임의 지정 - FcmSendRequest 매개변수 변경에 따른 테스트 코드 수정 * feat: 초대코드 존재유무 검증로직 구현 (#164) * feat: 초대코드 존재유무 검증로직 구현 * refactor: id 기반 모임 조회로 로직 변경 --------- Co-authored-by: coli-geonwoo * feat: 모임 입장 시 ENTRY 알림 저장, 전송 (#165) * chore: RequestDto 패키지 위치 이동 * style: 컨트롤러 컨벤션 개행 적용 * feat: 모임 입장 시 ENTRY 알림 저장, 전송 기능 추가 * refactor: 알림 전송 코드 개선 * refactor: 본인의 입장 푸쉬 알림은 안뜨도록 fcm 토픽 구독 순서 변경 * fix: 스플래쉬 딜레이 수정 (#163) * fix: 스플래쉬 delay 수정 * fix: LocalDateTime parse 형식 수정 * style: ktLint 적용 * refactor: 패키지 구조 변경 (#174) * refactor: data model -> data entity로 패키지명 변경 * refactor: entity -> remote 패키지 아래로 이동 * refactor: 각 entity 안에 request, response 패키지 만들기 및 remote 패키지 아래에 Ody api를 연결하는 패키지, FCM 패키지 만들기 * refactor: domain - repository 아래 이슈 별로 패키지 분리 * refactor: presentation common 만들기 * refactor: startingpoint -> departure 패키지 명 변경 * refactor: NotificationLogListAdapter -> NotificationLogsAdapter 클래스명 변경 * refactor: notificationlog -> meetingRoom 패키지명 변경 * refactor: startingpoint -> departure xml 명 변경 * refactor: domain으로 AddressValidator 이동 * refactor: presentation - listener 패키지 만들기 * refactor: presentation ui 모델은 presentation model 패키지 안에 넣기 * refactor: data - fake -> 테스트 패키지 쪽으로 위치 변경 * refactor: meeting 패키지 만들고 meeting과 관련된 파일들 이동 * refactor: join 패키지 만들고 join과 관련된 파일들 이동 * refactor: DepartureFragment -> JoinDepartureFragment로 프로그래먼트 명 변경 * style: ktlint * refactor: meeting, join -> meetingcreation, meetingjoin으로 패키지명 변경 * refactor: meetingcreation, meetingjoin, meetingroom -> creation, join, room 으로 패키지명 변경 * refactor: data - remote - thirdparty, core로 패키지 분리 * style: ktlint * style: ktlint * refactor: manifest tools 속성 제거 (#184) * refactor: manifest tools 속성 제거 * feat: SingleLiveData 추가 * refactor: Event -> SingleLiveData 변경 * style: ktLint 적용 * test: RouteClient Mock 테스트 (#177) * test: 길찾기 api 성공 restClient MockTest * test: 도착지와 출발지가 700m 이내인 테스트 추가 * fix: 500 에러 시에만 OdyServerErrorException 발생하도록 수정 * test: 잘못된 api-key 요청 시 예외 발생 테스트 추가 * test: 클라이언트 예외 발생 테스트 추가 * test: static 키워드 삭제 * refactor: RouteClient 인터페이스화 * test: service layer FakeRouteClient 적용 * test: controller layer FakeRouteClient 적용, @Disabled 제거 * test: RouteClient 관련 테스트 파일 디렉토리 이동 * refactor: URI 생성 로직 가독성 개선 * test: 불필요한 테스트 제거 * feat: NPE 체크 로직 추가 * test: 불필요한 RouteClient 설정 제거 * refactor: Event -> SingleLiveData로 개선 (#185) * feat: SingleLiveData 추가 * refactor: Event -> SingleLiveData 변경 * style: ktLint 적용 * chore: open 키워드 제거 * refactor: 모임 날짜를 LocalDate로 관리 (#186) * refactor: 매핑 메서드 Mapper.kt 에서 각 Model의 메서드로 이동 (#182) * refactor: 매핑 메서드 Mapper.kt 에서 각 Model의 메서드로 이동 * refactor: 매핑 메서드들 각 Mapper로 이동 * feat: 알림 생성 시점이 전송 시점보다 늦은 경우 예외 처리 (#166) * feat: 알림 생성 시점이 전송 시점보다 늦은 경우 예외 처리 * refactor: 생성자 접근제어자 수정, 주석 제거 * test: SpyBean 제거 * refactor: DepartureTime이 시간 비교하도록 수정 * test: assertThat 구문에서 when 절 분리 * test: findAny()로 변경 * test: 저장되었는지 검증하는 로직 수정 * test: 검증부 filter 조건 변경 * refactor: application에서 repository, datastore, retrofit service 인스턴스 관리 (#183) * refactor: 싱글턴 객체들 Application으로 이동 * refactor: 타입 이름 명시 * refactor: datastore 호출 부분을 repository 계층을 거치도록 변경 * refactor: ViewModelFactory 인스턴스를 각 액티비티에서 생성하도록 변경 * refactor: fcm 토큰 새로운 토큰 발급 시 repository에 저장 * chore: merge 작업 * refactor: fcm 토큰 새로운 토큰 발급 시 repository에 저장 (#193) * refactor: 2차 스프린트 구현 사항 리팩터링 (#189) * chore: 함수 이름 통일 initializeObservingData -> initializeObserve * refactor: SingleLiveData의 타입을 Boolean에서 Unit으로 변경 * refactor: 약속 날짜 유효성 검증을 ViewModel로 분리 * chore: 함수, 프로퍼티 순서 변경 * refactor: 매핑 메서드 Mapper.kt 에서 각 Model의 메서드로 이동 (#182) * refactor: 매핑 메서드 Mapper.kt 에서 각 Model의 메서드로 이동 * refactor: 매핑 메서드들 각 Mapper로 이동 * feat: 알림 생성 시점이 전송 시점보다 늦은 경우 예외 처리 (#166) * feat: 알림 생성 시점이 전송 시점보다 늦은 경우 예외 처리 * refactor: 생성자 접근제어자 수정, 주석 제거 * test: SpyBean 제거 * refactor: DepartureTime이 시간 비교하도록 수정 * test: assertThat 구문에서 when 절 분리 * test: findAny()로 변경 * test: 저장되었는지 검증하는 로직 수정 * test: 검증부 filter 조건 변경 * refactor: application에서 repository, datastore, retrofit service 인스턴스 관리 (#183) * refactor: 싱글턴 객체들 Application으로 이동 * refactor: 타입 이름 명시 * refactor: datastore 호출 부분을 repository 계층을 거치도록 변경 * refactor: ViewModelFactory 인스턴스를 각 액티비티에서 생성하도록 변경 * refactor: fcm 토큰 새로운 토큰 발급 시 repository에 저장 * chore: merge 작업 * refactor: Splash 화면 이동 판단 로직을 뷰모델로 이동 * style: ktLint 적용 * refactor: 약속 시간이 초기화되었는지 판단하는 로직을 변수로 분리 * chore: 함수명 변경 empty -> clear * chore: updateMeetingDate -> checkMeetingDateValidity 함수명 변경 --------- Co-authored-by: haeum808 <159797292+haeum808@users.noreply.github.com> Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Co-authored-by: aprilgom * refactor: RouteClient 응답 분기를 객체로 캡슐화 (#188) * refactor: RouteClient 응답 분기를 객체로 캡슐화 * chore: 패키지 디렉토리 변경 domain > dto * refactor : 응답 매핑 로직을 mapper로 이전 * refactor : 불필요한 static 객체 삭제 * refactor : 500에러 처리 로직 추가 * refactor : NPE 예외 처리 * refactor : 롬복으로 private 생성자 구현 * test: OdsayResponseMapperTest 작성 * style: message 개행 변경 Co-authored-by: H <99153215+hyeon0208@users.noreply.github.com> * refactor: OdsayRouteClient에 mapper 로직 반영 * fix: FutureOrPresentDateTimeValidatorTest 오류 개선 --------- Co-authored-by: coli-geonwoo Co-authored-by: H <99153215+hyeon0208@users.noreply.github.com> * design: 폰트, 컬러 xml 지정 (#219) * design: font 스타일 추가 * design: colors 네이밍 변경 * design: 컬러 추가 * refactor: 2차 스프린트 리팩터링 (#196) * refactor: FCMService와 NotificationHelper 분리 * refactor: 알림 권한이 이미 있을 시 early return, viewmodel 이름 수정 * refactor: NotificationLog Result 반환하도록 수정 * refactor: 이벤트 리스너 네이밍 수정 * refactor: MeetingRoomViewModel 초기화 init 블럭 내 실행, Timber 로그 내 toString 제거 * style: ktLintFormat * fix: NotificationLog repo 수정에 따른 FakeRepository 수정 * style: ktLintFormat * refactor: 2차 스프린트 구현 사항 리팩터링 (#218) * refactor: JoinCompleteActivity에서 방 만들고 방 참여하던 로직을 MeetingCreationViewModel로 이동 * refactor: clickListener들 메서드 앞에 on prefix 추가 * refactor: Repository 반환값 MeetingResponse들 -> Meeing로 변경 * refactor: JoinInfoRequest -> MeetingJoinInfo로 변경 * style: ktlint * refactor: MeetingRequest -> MeetingCreationInfo로 변경 * refactor: MeetingCreationNavigateAction 구현 * refactor: MeetingJoinNavigateAction 구현 * style: ktlint * style: ktlint * style: ktlint * fix: FakeMeetingRepository 오버라이드 반환값 변경 * style: ktlint * refactor: makeMeeting -> createMeeting, createMeetingResponse -> makeMeetingResponse 네이밍 변경 * refactor: name, date 널 체크 추가 * refactor: 좌표 압축 메서드 추가 및 data 계층으로 이동 * refactor: join nickname 널 처리 추가 * style: ktlint * fix: 모임 참여 안되던 버그 수정 * refactor: 서비스가 DTO 반환하도록 수정 (#181) * refactor: 서비스가 DTO 반환하도록 수정 * refactor: 하나의 스트림으로 dto 생성하도록 수정 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: 하나의 stream으로 dto 생성하도록 수정을 위한 import 추가 * refactor: FcmPushSender 내 Notification 알림 조회 로직 제거 - getNickname 반환 타입 수정 - `@Async` 제거에 따른 FcmEventScheduler 파일 삭제 - FcmSendRequest 필드 수정 Co-authored-by: hyeon0208 * fix: FcmSendRequest 변경에 따른 테스트 코드 수정 Co-authored-by: hyeon0208 * refactor: Nickname 객체 필드명 value로 수 Co-authored-by: hyeon0208 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Co-authored-by: hyeon0208 * refactor: BaseActivity, BaseFragment (#220) * feat: BindingActivity, BindingFragment 구현 * style: ktlint * refactor: showSnackbar 메서드 추가 및 binding by lazy 사용, application private 제거 * refactor: showSnackbar 메서드 message 타입 변경 및 application 추가 * refactor: BindingActivity, BindingFragment 적용 * style: ktlint * refactor: BindingActivity에 initializeBinding 추상 메서드 추가 * docs: 서비스 소개글 작성 (#242) * docs: 약속 참여 API 문서화 (#246) * docs: 404에러 문서화를 위한 커스텀 어노테이션 추가 * docs: Swagger 회원 참여 API 문서화 * refactor: AliasFor 어노테이션으로 ApiResponse 속성값 매핑 * refactor: api url 버전명 추가 * feat: 기존의 /mates 요청 메서드 추가 * docs: 약속 단건 조회 API 문서화 (#245) * docs: 약속 참여자 상태 목록 조회 API 문서화 (#243) * refactor: 서브 모듈 설정 * docs: 약속 참여자 eta 상태 목록 조회 API 문서화 * refactor: 도착 조건이 빠른 상태 순으로 상수 정렬 Co-authored-by: coli-geonwoo * docs: API 문서 상으로 도착지까지 남은 소요시간이 "분"임을 명시 Co-authored-by: coli-geonwoo * docs: 400에러 시 오류에 대한 이유 자세히 명시 Co-authored-by: coli-geonwoo * docs: 참여자 위치 상태 조회 요청 dto 위경도 변경 Co-authored-by: coli-geonwoo * chore: DTO명 MateEtaxx로 수정 * docs: 400에러 설명 상세화 * fix: MateResponse 파일 복구 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * docs: 약속 개설 API 문서화 (#249) * feat: 약속 개설 v1 api dto 구현 * docs: 약속 개설 v1 API 문서화 * style: 추가 개행 삭제 Co-authored-by: mzeong * docs: deprecated 옵션 추가 * refactor: dto renaming MeetingSaveV1Request > MeetingSaveRequestV1 MeetingSaveV1Response > MeetingSaveResponseV1 * docs : 모임 > 약속 수정 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * refactor : 약속 개설 API 구현 (#250) * feat: controller 약속 개설 v1 메서드 구현 * feat: 약속 개설 v1 메서드 구현 * style: 컨벤션 준수 * refactor : dto 이름 변경 반영 * refactor : 모임 > 약속 용어 통일 * style: 개행 제거 * test: statusCode 숫자로 표기 * test: deprecated 옵션 추가 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * design: 로그 화면 뷰 디자인 (#248) * chore: 오디 아이콘 추가 * design: 보라색 둥근 사각형 drawable 추가 * design: 로그 화면 오디? 버튼 디자인 * refactor: selector에 색상 제거 * design: 오디? 버튼 padding 10dp로 변경 * refactor: meeting_room_ody -> meeting_room_dashboard_button 네이밍 변경 * chore: 불필요한 파일 제거 * chore: rectangle_radius_0.xml 파일 추가 * design: 복사하기 버튼에 색상 추가 * chore: selector_button_color.xml 추가 및 Button -> AppCompatButton으로 변경 * design: 초대 코드 확인 버튼에 tint 추가 * design: 유저 현황 화면 디자인 (#252) * design: 유저 위치 현황 화면 item 디자인 구현 * design: xml 파일명 수정 * feat: 로그 툴바에 뒤로가기 버튼 추가 * design: 유저 현황 화면 구현 * chore: string resource 이름 변경 * fix: 뱃지 중앙 정렬되지 않는 현상 수정 * refactor: layoutManager xml로 이동 * chore: meeting room 패키지 구조 변경 * feat: manifest에 현황 화면 추가 * chore: eta -> etadashboard 패키지명 변경 * style: ktLint 적용 * refactor: 모임 개설, 참여 api 분리하기 (#255) * refactor: 약속 개설 v1 api에 맞게 요청/응답 데이터 수정 * refactor: 약속 참여 v1 api에 맞게 요청/응답 데이터 수정 * refactor: 약속 참여/개설 뷰모델 분리 * fix: MeetingResponse mapping 버그 수정 * fix: 약속 참여로 이동하지 않는 버그 수정 * fix: 모임 참여 시 유효성 검증 제대로 되지 않는 버그 수정 * style: ktLint 적용 * chore: startingPoint -> departure 프로퍼티명 변경 * chore: 쓰이지 않는 indicator 제거 * design: 홈 화면 리스트 디자인 (#260) * design: 홈 화면 리스트 디자인 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * feat: 유저 현황 화면 api v1 연결 (#261) * feat: 유저 위치 현황 api dto 구현 Co-authored-by: haeum808 * feat: 유저 위치 현황 Repository 구현 Co-authored-by: haeum808 * style: ktLint 적용 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * feat: 약속 참여 V1 API 구현 (#247) * docs: 404에러 문서화를 위한 커스텀 어노테이션 추가 * docs: Swagger 회원 참여 API 문서화 * refactor: AliasFor 어노테이션으로 ApiResponse 속성값 매핑 * refactor: api url 버전명 추가 * feat: 기존의 /mates 요청 메서드 추가 * feat: 약속 참여 v1 API 구현 * style: 코드 컨벤션 적용 * chore: mate 패키지로 이동 * feat: 참여자 저장 응답 DTO 추가 및 지원하지 않는 메서드 제거 * docs: 리스트 형식 데이터를 @ArraySchema 사용해 표시 * refactor: 지원하지 않는 meeting 메서드 제거 * design: 홈 화면 리스트 없는 경우 디자인 (#262) * design: 모임이 없을 때 보이는 화면 * chore: 불필요한 코드 삭제 * fix: FakeMeetingRepository postMeeting 반환 값 수정 * style: ktlint * design: 홈 화면 플로팅 버튼 디자인 (#263) * chore: 하얀색 취소, 더하기 아이콘 추가 * design: 홈 화면 플로팅 버튼 디자인 * fix: FakeMeetingRepository postMeeting 반환 값 수정 * style: ktlint * fix: FakeMeetingRepository patchMatesEta 추가 * feat: 유저 현황 화면 리스트 어댑터 구현 (#265) * feat: Eta item에 대한 uiModel 구현 * feat: adapter 구현 및 데이터 바인딩 연결 * style: ktLint 적용 * refactor: 함수 분리 * feat: 위치 권한 팝업 띄우는 로직 구현 * refactor: missing tooltip 리스너를 바인딩 어댑터로 분리 * style: ktLint 적용 * refactor: Pair 대신 Point 객체 사용 * refactor: magic number 제거 및 DurationMinuteType 구현 * style: ktLint 적용 * feat: 내 약속 목록 조회 API 문서화 및 구현 (#251) * feat: 내 약속 목록 조회 API 문서화 - Swagger 문서화 코드 추가 및 이전 버전 API deprecated 설정 - 컨트롤러 단에 임시 반환을 위한 더미 데이터 추가 - 응답을 위한 dto 생성 및 문서를 위한 예시와 설명 추가 * feat: 내 약속 목록 조회 API * fix: fixture 객체 사용에 따른 unique 제약 조건 위반 코드 제거 * fix: cherry-pick 시 누락된 코드 추가 및 fixture member 객체 미사용 코드로 수 * fix: meetingService, mateService 순환 참조 해결 * fix: fixture meeting 객체 사용에 따른 unique 제약조건 위반 * refactor: `saveAndSendNotifications` 호출하는 MeetingService 메서드명 수정 * refactor: `findByMeetingAndMember` 메서드 제거 및 해당 로직 meetingService 내에서 직접 수행 * fix: 모임 구독 시 실패 * refactor: 약속 인원 수, 메이트로 응답 생성 로직 메서드 분리 * fix: 시간 데이터 초 제거 후 반환하도록 수정 (#270) * refactor: v1/mates 응답값 수정 (#268) * refactor: 모임 참여 시 응답 데이터 수정 * refactor: 모임 참여 시 응답 데이터 수정 * feat: LocalTime의 ss 제거 * feat: 플로팅 버튼 화면 이동 구현 (#271) * feat: 플로팅 버튼 눌러서 이동하는 로직 구현 * fix: 약속 참여 벼튼을 눌럿을 때 초대 코드 입력 화면으로 이동 * refactor: 함수 한줄로 변경 * feat: 홈 화면 리스트 어댑터 구현 (#272) * feat: ListAdapter 구현 * feat: item fold 구현 * feat: 약속 시간 바인딩 어댑터 * feat: 쓰이지 않는 리스트 제거 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * feat: 폴링 방식 스케줄링 구현 (#274) * config: WorkManager 의존성 추가 Co-authored-by: haeum808 * feat: WorkManager 작업 예약할 Worker 구현 Co-authored-by: haeum808 * feat: 작업 예약 하는 로직을 가진 Repository 추가 Co-authored-by: haeum808 * feat: 약속 참여 시 31번 작업 예약하는 기능 구현 Co-authored-by: haeum808 * feat: 유저 현황 화면에서 데이터 LiveData 받아오는 기능 구현 Co-authored-by: haeum808 * style: ktLint 적용 Co-authored-by: haeum808 * refactor: WorkRequest 생성하는 로직을 Worker로 이동 * refactor: 함수 분리 및 상수화 * feat: meetingId 전달하는 로직 구현 Co-authored-by: haeum808 * fix: 코루틴 캔슬되는 오류 수정 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * refactor: 약속 단건 조회 API 구현 (#256) * refactor: mates 필드 @ArraySchema로 수정 * refactor: ErrorCode404 어노테이션으로 수정 * feat: 날짜, 시간 JsonFormat 적용 * feat: 회원이 참여하고 있는 특정 약속의 참여자 리스트 조회 * test: 약속에 참여하고 있는 회원이 아니면 예외 발생 * feat: 약속과 참여자들 정보 조회 * test: 약속 조회 시, 약속이 존재하지 않으면 예외 발생 * refactor: meetingId primitive type으로 변경 * refactor: JsonFormat 불필요한 옵션 제거 * test: Fixture.MATE 제거 * fix: import 추가 * fix: 머지 과정에서 누락된 코드 추가 --------- Co-authored-by: mzeong * feat: 위치 권한 받아오는 기능 구현 (#276) * config: play service gms 의존성 추가 * chore: 위치 권한 메니페스트에 추가 * feat: 위치 권한 요청 기능 구현 * style: ktlint * refactor: 코드리뷰 반영 * fix: ImageView에 제약 걸기 * fix: 깃액셔 문제 * feat: 약속 목록 조회 api 연결 (#279) * feat: meetings/me api 연결 * feat: 시작 화면 변경, FloatingButton 통합 * feat: 시작 화면 변경, FloatingButton 통합 * refactor: 리뷰 반영 * feat: 로그 화면으로 navigate * fix: ciˆ * refactor: 리뷰 반영 * feat: 단일 약속 api 연결 (#281) * feat: 단일 약속 api 연결 * feat: 24시간 내 로그화면 이동 활성화/ 이외 비활성화 * fix: 안내 메시지 수정 * refactor: 리뷰 반영 * feat: gps 위경도 받아오는 기능 구현 (#282) * feat: 위치 경도 불러오는 기능 구현 * chore: log 제거 및 compress 메서드 추가 * feat: repository에서 compress 하게 변경 * style: ktlint * chore: 0..8 상수화 * refactor: 퍼미션 체크 함수화 * style: ktlint * chore: 함수 간소화 * chore: repository 요청 함수 분리 * chore: 한 줄로 변경 * feat: 약속 참여자 상태 목록 조회 API 기능 구현 (#277) * feat: 직선 거리 계산 기능 추가 Co-authored-by: coli-geonwoo * feat: 조건별 참여자 상태 반환 기능 추가 Co-authored-by: coli-geonwoo * feat: 참여자가 약속 참여시 최초로 Eta 저장 기능 추가 * refactor: 소요시간 출발시간 로직 분리 * feat: Eta, Mate 관련 DTO 추가 * refactor: 예상소요시간 필드 추가 * feat: 참여자 Eta 목록 반환기능 구현 * fix: Fixture 사용 개선으로 코드 오류 개선 * test: Eta Test 추가 * test: eta 테스트 추가 * refactor: service 로직 경량화 * refactor: 가독성 개선 * style: Fixture 변수 재할당 * feat: eta 목록 조회 컨트롤러 코드 추가 * fix: backend 패키지 하위 변경만 커밋 내역에 포 * refactor: 중복 Eta dto 제거 --------- Co-authored-by: coli-geonwoo Co-authored-by: mzeong * refactor: 유저 위치 현황 조회 시 자신의 닉네임 response로 받도록 수정 (#284) * refactor: 서버 응답에 자기자신의 닉네임 추가 Co-authored-by: eun-byeol * fix: 직렬화, 역직렬화 오류 수정 * style: ktLint 적용 * style: ktLint 적용 * style: ktLint 적용 * fix: 빌드 오류 수정 * style: ktLint 적용 --------- Co-authored-by: eun-byeol * fix: update 미반영 오류 문제 해결 (#287) * refactor: HomeActivity -> MeetingsActivity로 이름 변경 (#291) * refactor: HomeActivity -> MeetingsActivity로 이름 변경 * refactor: 기타 home 제거 * style: ktLintFormatˆ * fix: 유저 현황표 폴링 방식 수정 (#292) * refactor: 폴링 간격 수정 Co-authored-by: haeum808 * refactor: 가장 최신의 데이터를 observe하도록 수정 Co-authored-by: haeum808 --------- Co-authored-by: haeum808 * refactor: 데모데이 이슈 문제 해결 (#293) * refactor: 현재 위치로 소요시간 계산하도록 수정 * refactor: 참여자의 현재 위도 경도 null 처리 * refactor: 도착 상태에 따른 소요시간 반환 * refactor: etaService를 MeetingController가 의존하도록 변경 * refactor: 곧도착 조건 로직 메서드로 분리 * feat: 현황 화면 툴바 리스너 등록 (#304) * feat: 현황 화면 툴바 리스너 구현 * feat: 툴바에 모임 이름 전달하는 코드 추가 * feat: 초대 코드 입력에서 다른 화면으로 이동할 때 초대 코드 입력 화면 finish() (#305) * fix: 리스트 깜빡임 현상 해결 (#306) * fix: 리스트 깜빡임 현상 해결 * refactor: 아이템 애니메이션 제거 코드를 xml로 이동 * fix: 개설하기에서 뒤로가기 버튼 누르면 현 화면 없애기 및 오디 캐릭터 추가 (#301) * fix: 개설하기에서 뒤로가기 버튼 누르면 finish() * fix: 개설하기, 참여하기 후 돌아오면 메뉴 닫기 * style: ktlint * chore: 오디 캐릭터들 추가 * design: 약속 없을 때 오디 캐릭터 추가 * design: 약속 만들었을 때 오디 캐릭터 추가 * design: 약속 참여 했을 때 오디 캐릭터 추가 * chore: BindingAdapter 사용으로 변경 * chore: BindingAdapter 사용으로 변경 * test: 2차 스프린트 구현 사항 테스트 (#308) * config: 테스트 관련 의존성 추가 * test: 초대 코드 입력 화면 ui 테스트 구현 * test: 주소 유효성 검증 테스트 구현 * config: 프래그먼트 테스트를 위한 의존성 추가 * test: 약속 이름 입력 화면 테스트 구현 * test: 약속 이름 입력 테스트 수정 및 패키지 이동 * test: 닉네임 입력 화면 테스트 구현 * refactor: typeText -> replaceText로 변경 * chore: 불필요한 테스트 제거 * style: given/when/then 작성 * fix: unitTest 실행되지 않는 현상 해결 * feat: 로그에서 30분전이면 오디 버튼이 아예 안뜨게 구현 (#309) * fix: 약속 로그 관련 수정 사항 (#314) * fix: 로그 list가 깜빡이는 문제, 그림자가 listitem을 덮지 않는 문제 해결 * Update android/app/src/main/res/layout/activity_notification_log.xml Co-authored-by: kimhm0728 --------- Co-authored-by: kimhm0728 * feat: 내 약속 목록 조회 시 현재 이후 약속만 조회 (#302) * feat: 약속 시간을 기준으로 내 약속 목록 필터링 * fix: 24시간 전 약속도 포함되도록 수정 * fix: meeting fixture를 사용하지 않도록 코드 수정 * test: DisplayName 설명 구체화 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 테스트 안정성을 위해 LocalDateTime 변수로 선언 후 사용 * rafactor: 시간 비교 코드 수정 Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> * fix: 약속 리스트 관련 수정 사항 (#315) * refactor: 디자인 수정 및 클릭 위에 따른 navigation과 fold 수정, 깜빡임 수정 * refactor: 비활성화된 오디 버튼 클릭 시 표시 메시지 변경 * refactor: 리뷰 반영 * refactor: 리뷰 반영 * fix: 행방불명상태의 소요시간 응답 오류 해결 (#317) * refactor: isMissing 소요시간 반환 로직 추가 * refactor: 저장 및 업데이트 시점에 나노초 제거, createAt 변경 방지 옵션 추가 * refactor: prePersist 기능 사용 롤백 * test: isModified 테스트 오류 수정 * fix: 해방불명 오류 해결 (#320) * fix: 해결되지 않은 행방불명 오류 해결 (#323) * fix: compress 메서드 수정, gps 온오프 확인 (#321) * fix: compress 메서드 좌표 길이에 상관없이 안전하게 자르게 변경 * fix: 유저가 gps 껐는지 확인하는 로직 추가 * style: ktlint * style: ktlint * fix: 도착한 상태인 사람의 소요시간이 -1로 반환되고 있는 문제 해결 (#325) * fix: 확장 버튼 패딩 20dp 주기 (#329) * fix: 로그에서 오디? 버튼이 30분 전부터 계속 보이게 변경 (#327) * fix: 로그 화면에서 null이 잠깐 나타났다 사라지는 뷰 수정 (#332) * design: 초대 코드 item과 모임 정보 칸과의 간격을 늘림 (#334) * feat: 안드로이드 로깅 환경 구축 (#337) * feat: Analytics 기초 구현 * config: firebase crashlytics 의존성 추가 * feat: 네트워크 로깅 확장 함수 추가 * feat: 네트워크 로깅 구현 * feat: 약속 리스트 -> ETA 현황, 약속 방 -> ETA 현황 이동 버튼에 로그 추가 * feat: bindingFragment 체류시간, 이탈 시점 추적 로그 * style: ktLintFormat * fix: rollback --------- Co-authored-by: kimhyemin * feat: EtaDashboardViewModelTest 구현 (#338) * config: coroutine test 의존성 추가 * feat: FakeMatesEtaRepository 추가 * feat: ViewModel 테스트를 위한 클래스들 추가 * feat: EtaDashBoardViewModelTest 추가 * style: ktlint * chore: given, when, then 형식 추가 * fix: 로그 화면 닉네임들 길어지면 안보이는 버그 수정 (#341) * feat: 닉네임 길면 스크롤 되게 변경 * style: xml 코드 reformat code * refactor: response. requset api 순서에 맞게 맞추기, 패키지 위치 수정 (#340) * chore: MateEtaInfoResponse 위치 변경 * chore: 패키지 위치 변경 및 api 순서에 맞게 변경 * docs: test coverage report 스크립트 추가 (#254) * docs: test coverage report 스크립트 추가 * docs : 테스트 커버리지 워크플로우 추가 --------- Co-authored-by: coli-geonwoo * refactor : 나노초 제거를 직렬화 도구로 수행 (#303) * refactor: 시간 형식을 직렬화 도구로 통일 * style: 컨벤션 준수 * style: 첫번째 행 개행 추가 * test: 직렬화 도구 테스트 추가 * test: 테스트 검증 스트림으로 수정 --------- Co-authored-by: coli-geonwoo * refactor: 시간 비교 로직에서 초/나노초 단위 trim (#346) * refactor: 나노초/초 제거를 util 클래스로 수행 * style: 불필요한 import 문 삭제 * test: 24시간 이내 판단로직 테스트 오류 개선 * chore: 메서드명 변경 trim > trimSecondsAndNanos --------- Co-authored-by: coli-geonwoo * refactor: EtaStatus 매핑 로직 개선 및 테스트 코드 추가 (#351) * refactor: calculate()인자로 Location 타입을 받도록 수정 * refactor: eta 로직 가독성 개선 * refactor: eta 테이블에 isMissing 컬럼 추가 * test: Eta 예외 상황 테스트 추가 * refactor: 조건식 검증 순서 변경 * test: 테스트 코드 축약 --------- Co-authored-by: coli-geonwoo * config: 앱 출시를 위한 수정 (#350) * config: VERSION.1_8 -> VERSION_17 * config: versionCode 1 -> versionCode 4 * config: ad id에 대한 설정 무시하게 설정 * config: parcelize, kapt, crashlytics 버전 카탈로그에 맞게 변경 (#353) * refactor: 권한 체크, 권한 요청 분리 (#347) * refactor: PermissionHelper에 위치, 알림 권한 체크하는 로직 추가 * refactor: PermissionHelper에 위치, 알림 권한 체크하는 로직 추가 * refactor: coarse, fine location 권힌이 허용되면 백그라운드 location 요청하게 변경 * refactor: PermissionHelper에 권한 요청하는 로직 추가 * style: ktlint * refactor: 함수화 * refactor: 메서드 네이밍 변경 * style: ktlint * style: ktlint * refactor: 불필요한 코드 삭제 * refactor: requires API 어노테이션 삭제 * feat: 서버 응답 400, 500번대 예외 처리 (#359) * feat: ApiResultCallAdapter 구현 * feat: fetchMeetingCatalog2ˆ * feat: sample error handlingˆ * chore: renamed packageˆ * refactor: call adapter의 response type private로 변경 * test: FakeMeetingRepository 메서드 구현 * refactor: 네트워크 에러 시 출력 메시지 수정 * refactor: body null 체크 * chore: 패키지 변경 data -> domain * refactor: 서버 에러 리턴시 에러 메시지 파라미터 이름 변경 error -> errorMessageˆ * refactor: Extension의 람다 이름 변경, func -> blockˆ * refactor: nullable 포함 * refactor: sealed interface로 변경 * refactor: FakeMeetingRepository listOf() -> emptyList()로 변경 * refactor: ApiResultCall execute 미지원 메시지 한글로 변경 * refactor: 로깅 관련 코드 리팩터링 (#361) * feat: 로깅 인터페이스 및 구현체 구현 * refactor: 기존 firebaseAnalytics를 추상화한 객체로 수정 * style: ktLint 적용 * refactor: 기존 firebaseAnalytics를 추상화한 객체로 수정 * chore: 로깅 프레임워크 적용 및 모니터링 대시보드 구성 (#348) * chore: docker run 시에 volume 설정 추가 Co-authored-by: mzeong * chore: 불필요한 env 제거 Co-authored-by: mzeong * chore: 로그 파일 생성을 위해 Logback 설정 Co-authored-by: eun-byeol * chore: commons-logging 제외 Co-authored-by: eun-byeol * feat: exceptionHandler, interceptor 로그 추가 Co-authored-by: eun-byeol * chore: backend cd 스크립트 push 브랜치 수정 Co-authored-by: mzeong * chore: backend cd 스크립트 docker volume 수정 Co-authored-by: mzeong * chore: 로그 파일 gitignore에 추가 Co-authored-by: eun-byeol * chore: amount path 절대 경로로 수정 Co-authored-by: mzeong * chore: 로그 파일 절대 경로로 수정 Co-authored-by: eun-byeol * chore: 현재 작업중인 브랜치로 checkout하도록 임시 수정 Co-authored-by: mzeong * chore: profile에 따라 파일 경로 변경 Co-authored-by: eun-byeol * chore: 푸시 시 배포 적용되는 브랜치 수정 Co-authored-by: eun-byeol * chore: interceptor에서 request body 로그 출력 - wrapper, filter 생성 Co-authored-by: eun-byeol * chore: interceptor에서 response body 로그 출력 - wrapper 생성 Co-authored-by: eun-byeol * chore: 로그 개행 제거, 정상 요청에 대한 response body 로그 추가 Co-authored-by: eun-byeol * chore: ContentCachingResponseWrapper 사용해 response body 로그 추가 Co-authored-by: eun-byeol * chore: ContentCachingRequestWrapper 사용해 request body 로그 추가 Co-authored-by: eun-byeol * chore: cd workflow trigger 이벤트 수정 Co-authored-by: mzeong --------- Co-authored-by: eun-byeol * refactor: 현황 화면과 로그 화면을 하나의 activity로 관리 (#365) * refactor: 액티비티 xml 파일 추가 및 프래그먼트로 변경 * refactor: 로그, 현황 화면의 viewModel 제거, 하나로 합치기 * refactor: 현황 화면의 툴바, 복사 로직을 액티비티로 이동 * refactor: 로그 화면의 툴바, 복사 로직을 액티비티로 이동 * feat: 프래그먼트 화면 전환 로직 구현 * chore: eta -> etaDashboard, room -> notificationLog 함수명 변경 * style: ktLint 적용 * feat: 뒤로 가기 버튼 누르면 백스택 삭제하는 로직 구현 * test: 리팩터링에 따른 테스트 수정 * style: ktLint 적용 * design: 툴바 폰트 크기 줄이기 (#389) * fix: 정확한 위치 가져오게 getCurrentLocation로 변경 (#390) * feat: 약속 참여자 ETA 조회 시, 수도권 외 지역 예외처리 (#368) * feat: 커스텀 어노테이션으로 수도권 위경도 좌표 검증 로직 구현 * feat: 수도권 위경도 좌표 검증 로직 Request Dto에 적용 * test: 수도권 위경도 좌표 검증 테스트 코드 가독성 개선 * refactor: 불필요한 괄호 제거 * refactor: 변수명 수정 * fix: 컨트롤러에서 @SupportRegion 로직 타지 않는 문제 해결 * design: 로그인 화면 디자인 (#388) * design: 로그인 화면 디자인 * design: 올바른 해상도 이미지로 변경 * design: 쓰이지 않는 이미지 제거 * refactor: 리뷰 반영 * design: 로그인 이미지 뷰에서 scaletype 삭제 * test: InviteCodeViewModel 테스트 (#392) * test: SingleLiveData를 위한 getOrAwaitValue와 SingleLiveData가 한 번 Handled 되었는지 알기 위한 getIfHandled 구형 * test: checkInviteCode() 테스트 구현 * test: FakeAnalyticsHelper logEvent의 리턴 Unit으로 변경 * test: 리뷰 반영 * fix: 동일한 topic을 구독하여 참여하지 않은 메이트의 알림 받음 (#367) * refactor: 생성일시도 포함하여 주제 구독 - FcmTopic 객체에서 2)약속 아이디, 생성일시로 2)형식에 부합하는 주제 생성 - FcmSendRequest 필드로 FcmTopic 사용하여 잘못된 주제로 구독되는 것 방지 - 로그 메세지 상세화 * style: 어노테이션 순서 정렬 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 가독성 향상을 위해 `StringBuilder` 대신 `+` 사용 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: 부 생성자, 주 생성자 순으로 정렬 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * refactor: `Meeting`이 `FcmTopic`을 모르도록 코드 수정 --------- Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * test: 3차 스프린트 구현 사항 테스트 (#396) * test: MeetingJoinViewModel 테스트 작성 * test: AddressSearchViewModel 테스트 작성 * test: MeetingJoinViewModel given/when/then 순서 수정 * test: MeetingCreationViewModel 테스트 작성 * style: ktLint 적용 * refactor: FakeRepository의 반환값을 테스트 픽스처로 분리 * test: MeetingRoomViewModel의 로그 관련 함수 테스트 작성 * refactor: mapper 함수 타입 변경 * refactor: 프로퍼티 타입 변경 및 테스트 픽스처 분리 * style: ktLint 적용 * refactor: 테스트 픽스처 데이터 수정 * test: 약속 날짜를 오늘 날짜로 선택했을 때의 테스트 추가 * chore: 불필요한 코드 삭제 * test: MeetingsViewModel 테스트 작성 (#398) * test: MeetingsViewModel 테스트 작성 * refactor: meetingsViewModel 한 줄 메서드들 줄바꿈 후 중괄호 삽입 * refactor: Fixture 적용, MeetingCatalog -> MeetingCatalogUiModel 매핑 메서드명 수정 * chore: 뷰모델 테스트 패키지 변경 (#403) * design: 현황 화면 뱃지 애니메이션 추가 (#401) * design: 친구 현재 위치 현황표 닉네임 사이즈 줄이기 * feat: 지각, 지각 위기 바운스 애니매이션 추가 * chore: 맞춤법 수정 * chore: 프로덕션 서버에 서비스 띄우기 (#393) * chore: dev 전용 CD 파일 수정 Co-authored-by: eun-byeol * chore: prod 전용 CD 파일 추가 Co-authored-by: eun-byeol * chore: path 임시 주석 처리 Co-authored-by: eun-byeol * chore: prod name 수정 Co-authored-by: eun-byeol * chore: 이미지 태그명 수정 Co-authored-by: eun-byeol * chore: 도커 이미지 실행 이미지 태그명 수정 Co-authored-by: eun-byeol * chore: 이미지 pull, 제거 순서 변경 Co-authored-by: eun-byeol * chore: prod 서버 로깅 설정 추가 Co-authored-by: eun-byeol * chore: prod cd event branch 변경 Co-authored-by: Hyeon0208 * chore: prod ci 스크립트 추가 Co-authored-by: Hyeon0208 --------- Co-authored-by: H * design: 로그 화면 디자인 수정 (#409) * refactor: 현황 화면과 로그 화면의 툴바를 분리 * refactor: 로그 리스트 어댑터의 멀티 뷰 타입 제거 * style: ktLint 적용 * design: 로그 화면 툴바 디자인 수정 * design: 로그 리스트 아이템 디자인 수정 * design: 로그 햄버거 메뉴 디자인 구현 * feat: 햄버거 약속 친구 리스트 연결 기능 구현 * fix: 디자인 오류 수정 * fix: MeetingRoomActivity 백 버튼 리스너 버그 수정 * style: ktLint 적용 * design: 로그 리스트 아이템에 말줄임표 추가 * refactor: splash 라이브러리 사용으로 변경 (#406) * config: Splash Screen 의존성 추가 * chore: Splash 액티비티 삭제 * feat: MeetingsActivity에서 Splash 화면 뜨게 수정 * chore: 스플래쉬 로고 크기 수정 * refactor: 애니메이션 제거 및 함수 분리 * feat: 재촉하기 API 구현 (#394) * chore: 중복된 클래스 제거 * docs: 문서화 코드 작성 * feat: notificationType nudge 추가 * feat: 불변 값 객체로 전환 * feat: fetch join 활용한 mate 메서드 구현 * feat: 콕찌르기 구현 * feat: errorCode400 description 추가 * style: 쿼리 컨벤션 준수 * style: 개행 컨벤션 준수 * chore: 메서드 분리 * chore: api 수정 * chore: test DisplayName 수정 * test: test 가독성 개선 * refactor: meeting 변수 분리 삭제 * chore: 찌르기 > 재촉하기 * chore: api 수정 * docs: api 수정 * test: displayName 구체화 * fix: fcmTopic 값 객체 수정사항 반영 --------- Co-authored-by: coli-geonwoo * feat: 네트워크 오류, 서버 오류 시 스낵바/토스트 구현 (#411) * feat: 주소 검색 위경도 변환시 에러 핸들링 구현 * feat: 모임 개설 에러 핸들링 구현 * feat: 초대 코드 입력 에러 핸들링 구현 * feat: 약속 참여 에러 핸들링 구현 * feat: 참여 중인 약속 목록 조회 에러 핸들링 구현 * feat: 약속 로그, 현황 화면 에러 핸들링 구현 * chore: 불필요한 코드 삭제 * test: fake repository 반환타입 수정 * style: ktLint 적용 * refactor: 토스트를 스낵바로 수정 * refactor: 에러 핸들링 관련 코드를 BaseViewModel로 분리 * refactor: _errorEvent, _networkErrorEvent를 private으로 변경 * docs: 약속 참여자 도착 현황 조회 API 문서화 (#405) * config: 난독화 적용 (#415) * config: 코드 난독화 적용 * config: 카카오 로그인 난독화 예외 처리 추가 * config: retrofit 난독화 예외 처리 추가 * config: 디버그 빌드 시 난독화 추가 * refactor: ETA 조회 API 응답 수정 (#418) * refactor: ETA 조회 API 응답 수정 (#417) * feat: 약속 참여자 도착 현황 조회 API 응답 수정 - 응답에 requesterMateId, mateId 추가 - ETA 업데이트 로직 메서드 분리 - `EtaService` meetingId, memberId로 mate 조회하는 메서드 `MateService`로 이동 - 응답 DTO 교체에 따른 컨트롤러, 서비스 테스트 수정 - meetingId로 모든 mate 조회하는 메서드 이름 수정 - 약속 단건 조회 시 mate가 아닌 경우 400 대신 404 반환하도록 수 * fix: 문서화용 하드코딩 제거 * feat: 위치 현황 카카오톡 공유 기능 구현 (#426) * config: firebase storage 의존성 추가 * feat: 뷰를 캡쳐하고 byteArray로 변환하는 기능 구현 * feat: firebase storage에 이미지 업로드하는 기능 구현 * feat: 공유하기 클릭 시 이미지 업로드 기능 구현 * refactor: 화면 전체가 아닌 RecyclerView만 캡쳐되도록 수정 * config: 카카오 공유하기 의존성 추가 * config: 카카오 공유하기 기초 셋팅 * chore: 패키지명 변경 * feat: 카카오 공유하기 기능 구현 * feat: 카카오 공유하기 기능과 뷰모델 연결 * refactor: 이미지 사이즈 카카오 api에 전달하도록 수정 * refactor: 카카오 공유 api 호출을 코루틴으로 수정 * style: ktLint 적용 * test: 테스트 파라미터 수정 * chore: ci에 kakao native key 추가 * style: ktLint 적용 * config: 버전 카탈로그 이름 변경 * refactor: ByteArrayOutputStream use 사용으로 변경 * refactor: 코루틴 사용 방법 변경 * chore: 패키지 변경 * style: ktlint 적용 * feat: 로딩 중 ProgressBar 다이얼로그 띄우는 기능 구현 (#430) * design: 로딩 다이얼로그 구현 * feat: BindingActivity에 로딩 다이얼로그 show/hide 함수 추가 * feat: BaseViewModel에 isLoading 변경하는 함수 추가 * config: 프로가드 규칙 추가 * feat: 서버에서 데이터 받아오는 부분에 로딩 추가 * feat: 콕찌르기 기능 (#420) * feat: 콕 찌르기 알림 타입 추가 * feat: 콕 찌르기 기능 구현 * feat: FakeMeetingRepository에 fetchNudge 추가 * refactor: nudgeSuccess -> nudgeSuccessMate 네이밍 변경 * refactor: get -> fetch로 변경 * test: 친구 재촉하면 친구 재촉 성공하는지 테스트 * style: ktlint * style: ktlint * style: ktlint * feat: 초대 코드 카카오톡 공유하기 기능 구현 (#431) * chore: 리스너 패키지 이동 * feat: 초대 코드 공유하기 기능 구현 * style: ktLint 적용 * style: 이미지 url 수정 * style: ktLint 적용 * feat: 초대 코드 공유 기능에 loading 추가 * style: ktLint 적용 * refactor: Firebase Analytics 로깅을 비동기로 남기도록 수정 (#435) * refactor: 코루틴 스코프 내에서 로깅 함수 호출하도록 수정 * refactor: fragment 코루틴 스코프를 viewLifecycleOwner.lifecycleScope로 변경 * refactor: 재촉하기 API에 재촉한 사람 정보가 포함되도록 수정 (#437) * docs: 문서화 코드 수정 * feat: 같은 약속 참여자인지 확인하는 책임 추가 * feat: 재촉하는 mate의 닉네임이 포함되도록 로직 개선 * feat: nudgeRequest dto null 검증로직 추가 * style: 컨벤션 준수 * refactor: deviceToken 반환로직 작성 * chore: 메서드 명 변경 * refactor: mate로부터 디바이스 토큰 추출 * chore: 에러 메시지 수정 --------- Co-authored-by: coli-geonwoo * fix: fragment 로깅 찍는 시점 수정 (#441) * chore: MySQL DB를 실행할 EC2 생성 및 프로덕션 EC2 서버와 연결 (#419) * feat: eta entity NotNull 속성 추가 Co-authored-by: Hyeon0208 * chore: mySql DB 적용, ddl-auto 속성 validate로 변경 - schema sql 파일 추가 Co-authored-by: Hyeon0208 * chore: 스키마 오류 수정 * chore: 스키마 타입 오류 수정 * chore: defer-datasource-initialization 설정 제거 * fix: mate save메서드 트랜잭션 적용 * chore: test yml 설정에 defer-datasource-initialization 설정 제거 --------- Co-authored-by: eun-byeol * chore: HTTPS 적용 (#436) * chore: prod cd 포트포워딩 443 변경 Co-authored-by: Hyeon0208 * chore: cd docker 포트포워딩 변경 Co-authored-by: Hyeon0208 * chore: MsSQL 설정 추가 * fix: Swagger CORS 에러 해결 --------- Co-authored-by: Hyeon0208 Co-authored-by: mzeong * chore: 로그 관련 중복 코드 제거 및 로그 내 Request Body 개행 제거 (#422) * chore: console에 로그 레벨에 따른 색상 출력 기능 추가 * chore: log pattern 변수화, 로그 출력 시간 서울 기준으로 변경 * refactor: Interceptor 내 로그 메시지 중복 코드 Wrappers Dto로 분리 * refactor: Wrapping 전용 Filter 클래스명 수정 * refactor: record class에서 일반 class로 변경 * chore: deprecated API 제거 (#438) * refactor: deprecated된 api 제거 * refactor: deprecated api test 수정 --------- Co-authored-by: coli-geonwoo Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: manifest에서 MAIN, LAUNCHER 인텐트 필터와 data 인텐트 필터를 분리 (#445) * refactor: 약속 참여 API 응답 수정 (#439) * refactor: 약속 참여 API 응답 수정 - 닉네임 중복 체크 로직 제거 - 참여자의 `estimatedMinutes`로 RouteTime 생성 * refactor: `Meeting` 내 `getMeetingTime` 메서드 사용 Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> * refactor: 테스트 편의를 위해 `MateSaveResponse` 스웨거 예시를 미래 날짜로 수정 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * style: 한 줄 최대 길이 초과로 개행 Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * fix: 누락된 LocalDate, LocalTime 임포트 추가 --------- Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> Co-authored-by: eun-byeol <62530884+eun-byeol@users.noreply.github.com> * chore: dev 서버 DB MySQL 교체 작업 (#446) * chore: dev 서버 MySQL DB로 교체 Co-authored-by: eun-byeol * chore: 주석 처리 및 연결 테스트 Co-authored-by: eun-byeol * chore: 주석 처리 및 연결 테스트 Co-authored-by: eun-byeol * chore: 주석 제거 Co-authored-by: eun-byeol * chore: 컨테이너 명 변경 및 포트 포워딩 포트번호 변경 Co-authored-by: eun-byeol Result 반환값 변경 * refactor: 예외 메세지 상수화 * fix: 카카오 맵에서 좌표로 못찾을 때 null 반환하게 변경 * refactor: fusedLocationProviderClient by lazy로 초기화 * refactor: MeetingJoinActivity에서 getDefaultLocation 메서드 부르게 변경 * style: ktlint * style: ktlint * refactor: 초대코드 검증 시 참여여부 확인하도록 수정 (#644) Co-authored-by: coli-geonwoo * feat: 출발지 입력할 때 현재 위치 눌러서 가져오기로 변경 (#659) * feat: 현재 위치 아이콘 눌러서 현재 위치 가져오는 기능 * refactor: 현재 위치 아이콘 오른쪽 마진 추가 * feat: 에러 메시지 구체화 (#661) * feat: 이미 참여한 약속 초대 코드 입력시 참여 못하는 기능 * style: ktlint * fix: FakeMeetingRepository 404 반환하게 변경 * refactor: 안 쓰는 코드 삭제 (#660) * refactor: 네이밍 변경, 불필요한 파일 삭제, 불필요한 메서드 삭제 * style: ktlint * refactor: fetchAddressesByCoord -> fetchAddressesByCoordinate 메서드 명 변경 * refactor: xml reformat code * del: compress 함수 제거 (#664) * chore: 로그 volume 설정 변경 (#674) * feat: Odsay, Google Maps 호출 시 DB 저장 (#669) * feat: ApiCall entity 구현 * feat: ApiCall 조회 쿼리 메소드 추가 * feat: ApiCallService 구현 * feat: ApiCallController 구현 * remove: 사용하지 않는 클래스 제거 * chore: 불필요한 코드 라인 제거 * refactor: google client name 변경 * feat: RouteClient 구현체에 따라 ClientType 반환하는 메서드 추가 * feat: RouteClient에 따라 count 저장 기능 구현 * feat: RouteClient 호출 성공 후 ApiCall count 저장하는 로직 추가 * test: 개행 컨벤션 적용 * refactor: 이번달 1일 가져오는 로직 개선 * refactor: 리플렉션 대신 RouteClient에서 ClientType 가져오도록 개선 * test: containsExactly으로 검증 개선 * test: Mockito.verifyNoInteractions() 사용하여 검증 개선 * test: ApiCallServiceTest DisplayName 구체화 * refactor: 유니크 제약조건 sql 구문 형식 통일 * chore: Private 서브넷의 EC2가 오디세이 API 응답 받지 못하는 문제 해결 (#679) * refactor: 재촉 요청을 한 사람이 log에 기록되도록 수정 * test: sender 기준으로 log가 저장되는지 검증 * chore: prod 배포 yml 트리거 release 브랜치 PR로 변경 * chore: merge 조건 추가 * Revert "test: sender 기준으로 log가 저장되는지 검증" This reverts commit bf699002b24757f654f676bf6650917ad063c240. * Revert "refactor: 재촉 요청을 한 사람이 log에 기록되도록 수정" This reverts commit 01491e94006c65666a3a6625e5421e4ca744cd1d. * chore: 개행 제거 및 이벤트 명 형식 수정 --------- Co-authored-by: coli-geonwoo * feat: NoResourceFoundException error handling (#687) * refactor: 상수 분리 및 코드 정리 (#684) * design: 주소 입력 화면의 windowSoftInputMode 속성 추가 (#682) * design: 출발지 입력되어 있으면 현재 위치 아이콘 숨기기 (#688) * design: 출발지 입력되어 있으면 현재 위치 아이콘 숨기기 * style: ktlint * refactor: 약속 개설 시 입력 순서 변경 및 개설 완료 화면 제거 (#683) * refactor: 약속 개설 완료 하면 제거 * refactor: 약속 개설 시 화면 순서 변경 * refactor: 상수 분리 및 코드 정리 * Revert "refactor: 상수 분리 및 코드 정리" This reverts commit 4e7e808ca08025cc1fa1e60b370fd538c9b3c302. * chore: 사용하지 않는 아이콘 삭제 * refactor: 홈 화면, 로그 화면에서 주소가 아닌 상호명이 띄워지도록 수정 (#676) * fix: 난독화 오류 수정 * feat: versionName 1.0.0 변경 * config: 버전 코드 변경 * refactor: 상호명으로 화면에 띄우도록 수정 * refactor: 상호명 문자열 수정 * style: ktLint 적용 * refactor: refreshtoken 순환 참조 해결 (#675) * refactor: DefaultAuthTokenRepository에서 refreshTokenService를 생성자 주입으로 변경 * refactor: LoginViewModel에서 로그인 체크를 할 때 AuthTokenRepository에 직접 접근하는 대신 KakaoLoginRepository에서 접근하도록 수정 * refactor: 로그아웃 메서드 이름 변경 * refactor: KakaoLoginRepository에서 odyDatastore에 직접 접근하는 대신 AuthTokenRepository를 통해 접근 * refactor: Logined -> LoggedIn 메서드, 변수 이름 수정 * refactor: refreshAuthToken 메서드를 AuthTokenRepository에서 AccessTokenInterceptor로 이동 * chore: android cd 트리거 브랜치 네임으로 변경 (#690) - [x] android cd 트리거 브랜치 네임으로 변경 * test: test에 generator를 사용하도록 변경 (#685) * test: memberservicetest에 generator 도입 * test: meeting test에 generator 도입 * test: refreshToken을 포함한 member 생성 메서드 추가 * test: generator를 mate에 적용 * test: generator를 notification에 적용 * test: generator를 eta에 적용 * test: generator를 auth에 적용 * test: 불필요한 파라미터 제거 * test: embeddable이라 중복 match 되는 문제 해결 * test: embeddable이라 중복 match 되는 문제 해결 * test: memberRepository 접근 제어자 수정 * test: saveMember() FixtureGenerator로 이동 * test: 생성자와 같은 이름의 메서드 제거 * Revert "test: 생성자와 같은 이름의 메서드 제거" This reverts commit a50333aa60c351a148948104355210fc361f330a. * Revert "test: saveMember() FixtureGenerator로 이동" This reverts commit 31b769d79e518f71eb26f4f07a9f7422c6cc2030. --------- Co-authored-by: coli-geonwoo Co-authored-by: eun-byeol * fix: WorkManager 작업이 수행되지 않는 버그 해결 (#691) * refactor: WorkManager 예약 방식 리팩터링 * refactor: AlarmManager + WorkManager 로 변경 * refactor: Foreground Service 리팩터링 * chore: WorkManager 관련 코드 제거 * chore: 테스트를 위한 로그 제거 * chore: AlarmManager 네이밍 수정 * refactor: EtaDashboardAlarm 로직 정리 * refactor: Service의 Intent를 Service 내부에서 생성하도록 수정 * refactor: Service의 Notification 로직을 분리 * style: ktLint 적용 * refactor: EtaDashboardNotification 함수 분리 * test: fake repository 시그니처 변경 * style: ktLint 적용 * chore: 브로드캐스트 리시버에 있는 AndroidEntryPoint 제거 * refactor: alarmManager, notificationManager를 Hilt로 주입 * style: ktLint 적용 * refactor: Room에 eta info 갱신하는 로직을 repository로 이동 * fix: eta close 시기 수정 * test: fake repository 함수 추가 * design: foreground service 알림 메시지 수정 * fix: 약속방 로그 목록 조회 시 입장 로그가 출발 알림 로그보다 먼저 출력되도록 수정 (#680) * fix: BaseEntity 시간 필드가 나노초도 포함되도록 수정 * fix: 저장 순서대로 알림 목록이 조회되도록 수정 * test: findAllMeetingLogsById 테스트를 FixtureGenerator를 사용하도록 수정 * test: findAllMeetingLogsById 테스트명 실제 테스트 메서드와 동일하게 수정 * refactor: CreatedDate 어노테이션 소괄호 제거 * chore: timestamp 타입 나노초 추가 및 eta 시간 컬럼명 수정 * refactor: sentAt으로 정렬하도록 수정 * refactor: flyway 파일 개행 제거 * refactor: 변경된 쿼리에 맞게 테스트 수정 * refactor: mate 참여시 출발 알림 시간의 나노초 제거하지 않도록 수정 * refactor: sendImmediatelyIfDepartureTimeIsPast() 테스트 수정 및 Notification.now() 메서드 제거 * refactor: sendImmediatelyIfDepartureTimeIsPast() 테스트 가독성 개선 * refactor: sendAt의 null 제약조건에 @NotNull 사용 * test: 테스트명 수정 * style: 미사용 import 제거 * chore: V5 스크립트 주석 제거 및 필드명 수정 * chore: V5 스크립트 주석 추가 * feat: refresh token expiration 변경 (#694) * chore: 무중단 배포 적용 (#698) * chore: 우아한 종료 옵션 추가 * chore: 도커 헬스 체크 추가 * chore: 참조 브랜치 변경 * chore: 머지 조건 제거 * chore: 로그 출력 추가 및 컨테이너 명 지정 * chore: API 호출로 헬스 체크 * chore: 컨테이너 실행 전 sleep 하도록 수정 * chore: 헬스체크 에러발생 시 스킵 확인 * chore: 헬스체크 전 후 로깅 * chore: 트리거 원복 * chore: database 설정 원복 * chore: prod 배포 되도록 트리거 다시 수정 * chore: prod 배포 되도록 트리거 다시 수정 * chore: prod 배포 스크립트 원복 * chore: 헬스 체크 스크립트 개선 --------- Co-authored-by: H * refactor: BindingFragment에서 analytics 가능하게 수정 (#697) * refactor: BindingFragment가 FirebaseAnayticsHelper 가지고 있게 변경 * style: ktlint * refactor: analyticsHelper private 가시성 변경자 제거 * refactor: ViewModel의 LiveData를 Flow로 변경 (#695) * config: coroutine core 의존성 추가 * refactor: LoginViewModel LiveData -> StateFlow * refactor: SettingViewModel LiveData -> StateFlow * refactor: AddressSearchViewModel LiveData -> StateFlow * refactor: MeetingCreationViewModel LiveData -> StateFlow * fix: 테스트 코드 수정 * fix: 테스트 코드 수정 * refactor: isTure() -> isTrue * refactor: takeIf -> ifBlank로 변경 * refactor: 5000 상수화 * refactor: null 타입 최대한 제거 * refactor: asSharedFlow, asStateFlow 추가 * refactor: MeetingHour, MeetingMinute 디폴트 값 상수화 * fix: 알림 권한 수정 (#723) * release: 안드로이드 1.1.1 출시 (#725) * chore: android ci 빌드 전 clean 추가 (#711) * design: 9인치, 12인치 화면에서 DatePicker, TimePicker 크기 수정 (#705) * design: 9인치 화면에서 날짜 선택 UI 정상 표시 및 크기 확대 * design: 9인치 화면에서 시간 선택 UI 확대 * design: 12인치 화면에 맞게 DatePicker 크기 수정 * design: 12인치 화면에 맞게 TimePicker 크기 수정 * design: TimePicker와 DatePicker 위치 조정 * design: DatePicker와 TimerPicker 뷰 중앙으로 이동 * refactor: 앱 메인 컬러들 primary, primaryVariant, secondary, secondaryVariant로 변경 (#728) * feat: 어드민 API CORS 설정 (#709) * feat: 어드민 API CORS 설정 * fix: test application.yml 추가 및 WebMvcConfigurer 통합 * refactor: 디버깅용 코드 제거 * refactor: allowed origins jasypt 적용 * fix: 시간 비교 시에 테스트 딜레이로 초가 변경되어 테스트 실패 * Revert "fix: 약속방 로그 목록 조회 시 입장 로그가 출발 알림 로그보다 먼저 출력되도록 수정 (#680)" (#739) This reverts commit 75475ebf * design: 재촉 문자열 수정 (#734) * design: 로그인 화면 새로운 디자인으로 수정 (#715) * design: 로그인 화면 수정 * design: 9인치 로그인 화면 * design: 12인치 로그인 화면 * design: 12인치 로그인 버튼 크기 수정 * chore: lintˆ * design: ody icon 추가 * design: 로그인 화면 텍스트 간단하게 -> 간편하게 * design: 리뷰 반영 * design: splash 로고 벡터로 변경 (#735) * refactor: ViewModel의 LiveData를 Flow로 변경 (#731) * refactor: InviteCodeViewModel Flow로 리팩터링 * refactor: MeetingJoinViewModel Flow로 리팩터링 * refactor: MeetingsViewModel Flow로 리팩터링 * refactor: MeetingsRoomViewModel Flow로 리팩터링 * style: ktLint 적용 * refactor: BaseViewModel Flow로 변경 및 repeatOnLifecycle로 수정 * chore: 불필요한 클래스 제거 * test: flow 변경에 따른 테스트 수정 * fix: MeetingRoomViewModel이 생성되지 않는 오류 해결 * style: ktLint 적용 * refactor: fragment viewLifecycleOwner 추가 * refactor: repeatOnLifecycle을 확장 함수로 분리 * feat: 다크모드 적용 (#737) * refactor: 공통 색 추가 및 black 색상코드 추가 * design: 다크테마용 색 추가 * design: 다크테마 적용 * fix: 라이트테마일때 약속 리스트 하얀 박스로 나오게 변경 * fix: 초대코드 작성시 잘안보이는 텍스트 색 수정 * fix: 시각 입력할 때 진한 보라색 -> 연한 보라색으로 변경 * Revert "Revert "fix: 약속방 로그 목록 조회 시 입장 로그가 출발 알림 로그보다 먼저 출력되도록 수정 (#680)" (#739)" (#749) This reverts commit a051bde7e5bee15affc186211f86ac85c828dc6a. * fix/feat: flyway V5 DML이 적용되지 않는 문제 해결 + 테스트 컨테이너 적용 (#729) * test: 테스트 컨테이너 적용 * style: 컨벤션 적용 * chore: gradle compose 플러그인 적용 * chore: local용 db 연결 설정 * test: ddl-auto 설정 변경 * test: 데이터 클리너 로직 수정 * chore: fly 스키마 파일 변경 * refactor: 테스트컨테이너 타임존 설정 추가 * chore: git action runner 타임존 출력 * chore: git action runner 타임존 한국으로 설정 * chore: 테스트 컨테이너 타임존 한국으로 설정 * chore: 애플리케이션 DB 컨테이너 TZ 한국으로 설정 * chore: DB 컨테이너 스크립트로 초기화되도록 수정 * chore: DB 컨테이너 실행 커맨드 수정 * chore: dev, prod ci jops 타임존 설정 * chore: 프로필 별 flyway 설정 적용 * chore: 의존성 컨벤션 적용 * test: h2를 사용한 테스트로 롤백 * chore: 테스트 컨테이너 설정 클래스 제거 * chore: 테스트 컨테이너 의존성 제거 * chore: ci/cd 스크립트 타임존 설정 및 시간 체크 * design: 주소 검색 item 디자인 수정 (#744) * fix: LoginActivity에서 startActivity 후 activity 종료 (#746) * fix: 새벽 4시에 약속 삭제 로직 Lazy 에러 해결 (#701) * fix: scheduleOverdueMeetings() 트랜잭션 적용 * test: 새벽 4시 스케줄링 테스트 추가 * style: overdue false인 약속 조회 메서드명 수정 * test: overdue true 변경 테스트 추가 * test: scheduleOverdueMeetings 테스트 구독 취소 검증 추가 * feat: 회원 탈퇴 시 fcmTopic 구독 취소 (#716) * chore: 테이블 변경사항 반영 안됨으로 local ddl-auto 임시 변경 * feat: 탈퇴한 회원의 fcmTopic 구독 취소 * style: 공백 제거 및 import 순서 재정 * test: Mockito 타입 검증 추가 * fix: 같은 약속에 있는 사람들이 탈퇴한 회원의 출발 알림 받는 문제 해결 (#733) * chore: 테이블 변경사항 반영 안됨으로 local ddl-auto 임시 변경 * feat: 탈퇴한 회원의 fcmTopic 구독 취소 * style: 공백 제거 및 import 순서 재정 * test: Mockito 타입 검증 추가 * feat: 푸시 알림 전송 실행 시, DB에서 Notification 조회하여 검증 * refactor: FirebaseMessaging 빈 등록 후 사용 * test: 불필요한 import문 삭제 * test: import 되지 않아 깨지는 테스트 해결 * chore: 주석 수정 * Merge branch 'develop' into feature/654-1 * refactor: InstantConverter util 클래스 분리 * fix: 서비스가 종료될 때 모든 작업이 종료되는 버그 해결 (#761) * feat: 서드파티 제어 및 조회 API 구현 (#732) * feat: 제어 API 구현 * feat: 서드파티 제어 값 조회 로직 구현 및 디비 저장 - ApiCall state 컬럼 추가 - 서드파티 제어 값 조회 API 구현 - ApiCallService 내 state 조회, 수정 로직 구현 * fix: 로컬 환경 동작을 위해 수정했던 sql script 롤백 * refactor: - state 필드명 enabled로 변경 - api-call count api에 path variable 적용 - countOdsayApiCall, countGoogleApiCall 일반화 - client-type enum 내 reset date 결정하는 필드 추가 - fix: google enabled 값 조회하는 로직 논리적 에러 - 누락된 enabled 필드 추가 fiyway script 추가 * refactor: RouteService `@RequiredArgsConstructor` 사용 * refactor: ClientType 내 필드명 및 타입 변경 * refactor: ApiCallRepository 내 메서드 카디널리티 고려해 네이밍 * refactor: `findOrSaveFirstByClientTypeAndDateBetween` 메서드명 변경 * refactor: RouteClientMapper 내 from 메서드 변수명 가독성 개선 * refactor: `findOrSaveFirstByClientTypeAndDate`에 옵셔널 체이닝 사용 * refactor: `findFirst/AllByDateBetweenAndClientType` 테스트 DisplayName 수정 * refactor: `findFirstByDateBetweenAndClientType` 테스트 변수명 구체화 및 정렬 * feat: AlarmManager 작업들 Local DB에 저장 (#762) * fix: 백그라운드 예약이 겹치면 서비스가 종료될 때 모든 예약들이 종료되는 버그 해결 * feat: 예약된 작업을 Room에 저장하는 기능 구현 * refactor: 예약된 작업을 Room에 저장하는 기능을 repository로 이동 * feat: 실행된 예약 작업인 경우 Room에서 삭제하는 기능 구현 * feat: 로그아웃, 탈퇴 시 예약을 취소하는 기능 구현 * feat: 로그인 시 예약을 다시 수행하는 기능 구현 * test: fake repository 수정 * style: ktLint 적용 * feat: Room 마이그레이션 코드 추가 * chore: 불필요한 코드 제거 * fix: 로그아웃 후 로그인 시 다시 예약이 수행되도록 수정 * style: ktLint 적용 * Revert "fix: 백그라운드 예약이 겹치면 서비스가 종료될 때 모든 예약들이 종료되는 버그 해결" This reverts commit 05a009a99daaa7fb487ac721332efd6004415669. * chore: reserve -> reservation 네이밍 수정 * feat: database name 상수화 및 네이밍 변경 * refactor: service getIntent 수정 * style: ktLint 적용 * design: 약속 개설하기, 약속 참여하기 버튼 누르면 면적 넓히기 (#778) * refactor: 약속 개설하기, 약속 참여하기 버튼 누르는 면적 넓히기 * refactor: 다시 gone으로 바꾸기 * refactor: 빈칸으로 약속 생성 못하게 변경 (#780) * refactor: 사용 안하는 파일 제거 (#777) * del: 불필요한 파일 제거 * refactor: 복사하기 -> 클립보드 복사 변경 * refactor: 클립보드 복사 -> 복사하기 * fix: 현위치 가져올 때 무한 로딩되는 버그 해결 (#765) * design: 현위치 아이콘 크기 키우기 * feat: 5초 타임아웃 초과 시 ApiResult.Unexpected 에러 반환 구현 * feat: 위치를 불러올 수 없는 경우 스낵바 띄우는 기능 구현 * feat: 약속 장소 입력 시에도 현위치 불러오는 기능 구현 * style: ktLint 적용 * test: 테스트 fake repository 반환타입 수정 * design: 새로운 로그인 화면 다크모드 추가 (#788) * design: 약속 이름이 길 때 말줄임표 대신 약속 이름을 최대한 보여줄 수 있도록 수정 (#775) * fix: indicator 클릭으로 이동하지 못하도록 수정 (#768) * fix: 로그인 여부에 refresh token 만료 여부 확인 추가 (#767) * feat: 외부 API 어드민 페이지 구축 (#717) * feat: 어드민 페이지 html, js, css 작성 - thymeleaf 의존성 추가 * refactor: js 내에서 사용하지 않는 메서드 제거 * style: spring-boot-starter 정렬 * style: css 내 주석 제거 * refactor: ApiCallPageController 메서드 이름 유의미하게 변경 * refactor: 버튼 이름 의미 부여, enabled 조회해 버튼 갱신하도록 수정 * feat: 어드민 페이지 주소 환경 변수 설정 * refactor: axios 제거 * fix: ApiCallPageController profile 설정 * fix: 응답값 변환 * chore: ci/cd 롤백 전략 구축 (#736) * chore: dev cd 과정에 health check 추가 Co-authored-by: coli-geonwoo * chore: 기존 컨테이너 백업 및 롤백 Co-authored-by: coli-geonwoo * chore: cd dev 스크립트에 롤백 전략 적용 Co-authored-by: coli-geonwoo * chore: 롤백 테스트 Co-authored-by: coli-geonwoo * chore: checkout branch 변경 후 롤백 테스트 Co-authored-by: coli-geonwoo * chore: export 추가 후 롤백 테스트 Co-authored-by: coli-geonwoo * chore: docker inspect 추가 후 롤백 테스트 Co-authored-by: coli-geonwoo * chore: dev cd 스크립트 작성 Co-authored-by: coli-geonwoo * chore: prod cd 스크립트 작성 Co-authored-by: coli-geonwoo * chore: 롤백을 위한 작업을 별도의 워크플로로 구분 * feat: docker-compose.yml 파일 제거 --------- Co-authored-by: coli-geonwoo * refactor: 햄버거바 왼쪽 하얀 부분 제거 (#796) * design: 약속 개설하기 -> 약속 만들기로 변경 (#776) * fix: 약속 참여 후 로그 화면으로 navigate되지 않는 버그 해결 (#764) * fix: 약속 참여 후 로그 화면으로 navigate되지 않는 버그 해결 * refactor: replay -> conflate 사용으로 변경 * style: ktLint 적용 * design: 오디 버튼 비활성화 토스트 메시지 변경 (#779) * refactor: 오디 버튼 활성화 되지 않았을 때 스낵메시지 내용 변경 * refactor: ux 라이팅 변경 * refactor: eta 서버 응답 mapping 로직 리팩터링 (#803) * chore: 불필요한 코드 제거 * refactor: eta status 매직 넘버 제거 및 리팩터링 * fix: sealed interface 직렬화 버그 해결 * style: ktLint 적용 * test: etaType -> etaStatus 테스트 수정 * refactor: 상태에 따라 소요시간을 mapping 해주는 로직 삭제 (#793) * refactor: 상태에 따라 소요시간을 mapping 해주는 로직 삭제 * style: 불필요한 import문 삭제 --------- Co-authored-by: coli-geonwoo * refactor: RouteClient 생성 로직 통일 (#781) * refactor: RouteClientProperties 추가 및 RouteClient 생성 방식 통일 * test: mockServer reset * test: 불필요한 AfterEach 삭제 * style: 개행 제거 * refactor: 알림 누르고 뒤로가면 약속 목록으로 가게 변경 (#800) * refactor: 앱이 꺼져있을 때 알림 누르고 뒤로가면 약속 목록으로 가기 * refactor: 알림으로 들어와도 약속 목록 화면으로 갈 수 있게 변경 * design: DatePicker, TimePicker 9인치, 12인치 다크모드 수정 (#804) * design: DatePicker 9인치, 12인치 다크 모드 * design: TimePicker 9, 12인치 다크모드 * fix: 다크모드일 때 스플래시 화면 색상 제대로 보이지 않는 문제 수정 (#806) * refactor: 약속 시간 이후 30분까지 nudge가 가능하도록 수정 (#798) * refactor: 약속 시간 이후 30분까지 nudge가 가능하도록 수정 * chore: displayName 수정 * chore: displayName 수정 --------- Co-authored-by: coli-geonwoo * feat: RouteClient 외부 API 요청 응답 로깅 (#782) * refactor: RouteClientProperties 추가 및 RouteClient 생성 방식 통일 * test: mockServer reset * feat: RouteTime 로깅 추가 * feat: RouteClient 요청, 응답 로깅 * fix: develop 충돌 해결 * refactor: ObjectMapper 의존성 주입하도록 개선 * refactor: 리플렉션 대신 enum 사용한 로깅으로 수정 * chore: RouteTime 로깅 시, mateId 추가 * chore: jasypt 비밀번호 변경으로 인한 재 암호화 (#743) * chore: 비밀번호 최신화 (#818) * feat: 약속방 나가기 기능 추가 (#792) * style: 미사용 import문 제거 * feat: 참여자 약속 방 나가기 기능 추가 * refactor: 약속 방 나가기 url 수정 * feat: LEAVE 타입 알림 저장 * refactor: 참여자 나가기 시 추가 처리 * refactor: 내부 사용 메서드 private * chore: leave 타입 체크 제약조건 추가 * fix: 출발 도착지가 가까운 경우 0으로 반환되는 문제 해결 (#794) * feat: mateService 내에서 10L 처리 * refactor: mateService에서 10분 반환로직 삭제 * refactor: 가까울 경우 odsayResponse가 -1을 반환하도록 수정 * refactor: 가까울 경우 10L을 반환하도록 수정 * refactor: -1을 상수로 관리 * fix: merge 충돌 해결 * fix: merge 충돌 해결 --------- Co-authored-by: coli-geonwoo * fix: 탈퇴한 회원 알림 로그 제외 (#799) * refactor: 회원 탈퇴 시 전송 전 알림을 DISMISSED 상태로 벌크 업데이트 * refactor: 탈퇴한 회원의 탈퇴 이후 알림이 조회 되지 않도록 수정 * style: 알림 상태 변경 벌크 쿼리 네이밍 수정 * test: updateAllStatusPendingToDismissedByMateId() when 절 전 후 검증 * test: updateAllStatusPendingToDismissedByMateId() 테스트 수정 * fix: 충돌 해결 * fix: lazy 에러 해결 * fix: api-key 변경 (#820) * Revert "refactor: 약속 시간 이후 30분까지 nudge가 가능하도록 수정 (#798)" This reverts commit 21644145f4236fe13a1dc16548dbf5cff8473e67. * Revert "feat: RouteClient 외부 API 요청 응답 로깅 (#782)" This reverts commit f5c40cc1 * Revert "refactor: RouteClient 생성 로직 통일 (#781)" This reverts commit 0db68a57 * chore: AN, BE cd 특정 브랜치에서 PR 머지된 경우 배포되도록 수정 * chore: be cd workflow 오류 수정 --------- Co-authored-by: mzeong Co-authored-by: hyeon0208 Co-authored-by: haeum808 <159797292+haeum808@users.noreply.github.com> Co-authored-by: kimhm0728 Co-authored-by: H <99153215+hyeon0208@users.noreply.github.com> Co-authored-by: coli-geonwoo Co-authored-by: coli-geonwoo <148152234+coli-geonwoo@users.noreply.github.com> Co-authored-by: aprilgom Co-authored-by: haeum808 Co-authored-by: coli-geonwoo Co-authored-by: coli-geonwoo --- .github/workflows/backend-cd-prod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/backend-cd-prod.yml b/.github/workflows/backend-cd-prod.yml index 52d5b35c8..b749d345f 100644 --- a/.github/workflows/backend-cd-prod.yml +++ b/.github/workflows/backend-cd-prod.yml @@ -129,7 +129,7 @@ jobs: - name: Tag successful deployment as latest if: success() run: | - docker tag ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:${{ github.sha }-prod ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:latest + docker tag ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:${{ github.sha }}-prod ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:latest docker push ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:latest - name: Check Docker Process