Skip to content

📆 Daily Scrum

yangsooplus edited this page Dec 16, 2022 · 62 revisions

기록하는 사람

image

✅ Daily 01

Wiki

  • Ground Rule
    • 몇시부터 몇시를 코어 타임으로 할지
    • 밥시간 등등
  • Convention
    • Git, Resource, Kotlin 컨벤션
  • Setting
    • ktlint 적극 활용

프로젝트

  • 멀티모듈 활용
  • 클린 아키텍처 기반
  • gradle -> kts 마이그레이션 적용
    • 여러 import 구문들 List로 합쳐서 Boilerplate Code 제거

리뷰어님과의 만남

  • 첫주는 수요일 20시에 만남을 갖기로 결정
  • 현재 우리가 구현 예정인 프로젝트에 대해서 간략하게 설명

✅ Daily 02

위치 권한

  • 사용자가 인증을 하게 되면 권한을 요청
  • 권한을 받지 않은 경우
    • 홈 화면 상단에 위치 정보를 요청하는 UI
  • 위치 권한이 있는 경우
    • 홈 화면 상단에 거리에 따른 기프티콘 목록 UI
    • 기프티콘 추가와 동시에 해당 브랜드를 DB에 저장

기프티콘 추가

  • 카카오톡, 메세지 등에서 이미지 전달을 통해 추가
  • 앱 내에서 + 버튼을 통해 추가
    • 갤러리로 이동
  • 바코드 번호를 이용하여 중복된 기프티콘 확인
  • 자동완성
    • 카카오톡, 키프티쇼, 시럽, 삡의 기프티콘 이미지에서 자동 추출
    • 성공시, 이미지가 마음에 들지 않으면 수동으로 수정 가능
    • 실패시, 이미지를 직접 드래그를 통해 이미지 추가
    • 모든 텍스트 긁어 와서 AutoCompleteTextView

기능 명세서 작성

  • 화면 > Epic > Story > Task - 개발 우선순위 - 예상 소요시간 - 스프린트

✅ Daily 03

모델 정의

  • 도메인 모델(공통)
  • 각자 사용할 모델
  • 조율

알람

  • 알람매니저
  • 워크매니저

✅ Daily 04

  • Android Studio 이슈 연동
  • Projects 사용법 공유
  • Milestone 사용법 공유
  • Projects, Milestone 사용하기로 결정
  • PR approve 테스트
  • PR Template 추가
  • 모듈에 따른 Model 이름 컨벤션 정의
  • Domain 모듈의 Model과 Usecase 정의

이슈 라벨 추가

- feat : 기능 개발
- refactor : 리팩토링
- fix : 버그 / 요구사항 변경으로 인한 수정
- bug : 버그 존재
- style : 레이아웃, 컨벤션 작업
- chore : 잡일 ex) gradle dependency
- test : 테스트코드 작성
- docs : 문서 작업

PR Template

resolved #number

## 작업 내용

> 어떤 작업을 했는지 적어주세요!

## 체크리스트
- [ ] Assignees 설정
- [ ] Labels 설정
- [ ] Projects 설정
- [ ] Milestone 설정

## 동작 화면

> 존재하지 않는다면 패스해주세요!

## 버그

> 존재하지 않는다면 패스해주세요!

모델 이름 컨벤션 정의

Data
Model (Room) / Data (Retrofit, Firebase)

Domain
PostFix 가 없음

Presentation 
UIModel
sealed class 의 자식은 UIModel 을 안붙임 

✅ Daily 06

각자 이번주 어떤 것을 할지 스프린트 계획을 대략적으로만 이야기를 해봤습니다!

이지훈

  • 월 : 카카오 서치로 찾은 브랜드 위치들 네이버 맵에 마크 해주기 / Beep Tech에 Mockk 관련 정리 글 올리기
  • 화 : 맵 하단 ViewPager2 적용 (기프티콘 카드 뷰)
  • 수 : 카드를 클릭했을때 detail 페이지 이동 / 카드뷰 스크롤할때 브랜드가 변경 되면 map에서 위치도 변경
  • 목 : 현재 위치에 따라서 브랜드를 보여줘야 하는데 각 section을 어떻게 나눌지 고민하고 flow 그려보기

박명범

  • 월 - (기프티콘)세부화면 xml 작성 + 기프티콘 FakeRepository
  • 화, 수 - 세부화면 관련 Room DB 구축
  • 목 - 세부화면과 Room 연동

양수진

  • 월: 스플래시 화면, 구글 로그인 보완
  • 화: 지문 인식
  • 수: 지문 인식
  • 목: PIN 설정 관련 고민 후 구현시작 (어디에 저장해야 하는가? 암호화는 어떻게 해야하는가?)

김명석

  • 월 : 갤러리 페이징 및 선택 구현
  • 화 : 테스트케이스 junit5
  • 수 : image crop ui 구현시작
  • 목 : 구현 정리 및 보강

스크럼에 나온 이야기

  • 각 폰트들 string font styles 만들기

image

✅ Daily 07

새벽 내에 올라온 PR들에 관한 이야기를 했습니다.

  • 명석

    • PagingData cachedIn이 사용되는 이유가 뭘까
      • 안 붙여도 작동은 되는데, 여러번 왔다갔다 하면 앱이 터짐. 아마 캐시에 접근하려고 하면 터지는 것 같음
      • 어떻게 구현되어 있는지 살펴봤는데 shareIn으로 구현되어 있어서 stateIn으로 바꿔주는 의미가 있나 싶더라고요
      • collect할 때 경고 뜨는 것은 코루틴 라이브러리 버전이 완전 예전 것이어서 그랬던 거였음~
    • cacheIn은 뷰모델에서 하는 게 맞을까요?
      • 네. 그정도의 가공은 뷰모델이 맞을 듯
    • 왜 페이징은 콜드로 넘겨줄까요?
      • 핫일 때는 전부 다 갖고 있어야 하니까 콜드로 주는게 아닐까요? 콜드면 조금씩 들고 있어도 되니까요
      • BindingAdapter로 핫 스트림으로 변경했었던 것을 삭제
  • 명범

    • 상세화면에서 기프티콘 사용 버튼을 화면 하단에 붙이니 못생겨서 칩으로 변경. 버튼이 화면 아래에 있을 때 칩을 누르면 아래로 이동
    • isVisible이 setFlag가 될 때 invalidate 됨을 확인함
  • 지훈

    • LocationManager -> FusedLocationProvider
    • 시간 계산에 9시간의 오차가 있을 거에요 - 명석 -

✅ Daily 08

수진

  • 지문 인식 구현한 내용 공유
  • FingerprintManager의 경우 지문 인식 UI를 BottomDialog 로 만들고 show() 해줘야 지문 인증을 시작할 수 있다.
  • 바로 사용할 수 있는 형태로 수정할 예정

지훈

  • Mokk 관련 정리
  • 위치 캐싱한 이유 정리
  • 사용자 위치 중심으로 나눌 지 고민
    • 겹치는 영역이 발생한다
  • (수진) 좌표를 거리 단위가 아닌 모듈러 연산으로 그룹핑

명석

  • 갤러리 구현한 내용 공유
  • 사진 선택 시 선택된 사진 UI 고민
    • position 을 넘겨주고 NotifiItemChanged(position) 을 호출하면 되긴 하지만 이미지와 함께 하얗게 깜빡거리는 현상이 발생한다
    • xml 에 selection 객체를 다시 넘겨줘서 처리함 (멘토님께 질문 예정)

명범

  • 텍스트 스타일 추가
  • Material Theme 적용
    • 버튼 테마 안 먹던 문제 명석님 도움으로 MaterialButtonStyle 로 지정하여 해결
    • 툴바 타이틀에 colorOnPrimary 가 먹지 않는 문제 존재 -> 기본적으로 title 색상은 theme 을 따르지 않고 검정색만 사용하는 것을 확인. 따로 지정해야 한다
    • BottomSheetDialog 에서 Theme 이 안 먹는 문제 -> BottomSheetDialog 가 따로 Theme 을 관리하고 있는 것으로 추정

✅ Daily 09

  • DatePickerDialog 를 사용하던 도중 버튼의 색이 적용이 되지 않던 문제

    • 구글코드[https://android.googlesource.com] 를 확인
    • Dialog 를 show 하기 전에는 AlartController 에서 inflate 를 하지 않아 색을 show 이후에 적용하는 방식으로 해결
  • Handler(Looper.getMainLooper()) 를 이용하여 biometricPrompt.authenticate 를 실행 해야 하는 이유

    • 지문 인식을 요청 하는 코드가 Fragment 가 생성될 때 실행을 하다 보니 Fragment의 Transaction과 biometric 에서 FragmentDialog 의 Transaction 각각이 실행이되 앱이 죽는 현상을 방지하기 위해 biometric 의 실행을 미룸
    • 실행만 미루면 되기 때문에 CoroutineScope(Dispatchers.Main).launch 를 이용하여 대체하고 job 을 이용하여 정리
    • activity를 변수로 받고 있기 때문에 activity.lifecycleScope.launch(Dispatchers.Main) 을 사용하면 job을 정리 할 필요가 없음
    • activity.lifecycleScope.launch를 이용하게 된다면 Dispatchers.Main.immediate 이기 때문에 Transaction의 충돌이 일어납니다
    • 인증 방식이 바로 실행이 아니라 선택을 하는 플로우가 생겨서 이제 동작을 미룰 필요가 없어졌다.
  • 읽기 힘든 코드는 가능하면 주석과 플로우를 작성하자

/*
* CropWindow 의 가로와 세로가 화면의 50% 이하의 크기가 된다면,
* CropWindow 은 (1 <= a < 2) 의 값을 곱해도 화면 보다 크지 않기 때문에 scale 이 1 이상이 된다.
* 1.5 를 곱해 주는 이유는 한번에 너무 많이 커지는 것이 부담 스럽기 때문이다
*/
if (zoom < MAX_ZOOM && cropWidth < width / 2f && cropHeight < height / 2f) {
    val scaleW = width / cropWidth * 1.5f
    val scaleH = height / cropHeight * 1.5f
    newZoom = minOf(scaleW * zoom, scaleH * zoom, MAX_ZOOM)
}

✅ Daily 10

2주차 데모

  • 우리끼리의 기술 공유 && 서로의 로직이나 코드를 완벽하게 이해하는 시간을 정해보기

🐻 김명석

좋았던점

  • 기본적인 작업을 거의다 진행되어 4주차 부터는 다듬는 작업을 진행할 수 있을것 같다

아쉬운점

  • 작업한 내용에대해 정리할 시간이 적었고
  • 일반적이지 않은 내용에 대해 주석이 필요해 보였다
  • 그리고 로직에 대한 플로우에 대해 정리를 해둬야 좋겠다는 생각을 하게되었다

개선

  • 메모와 정리에 조금더 신경을 써야겠다

🐻‍❄️ 박명범

좋았던 점

  • 혼자 하는 것보다 같이 하는 팀원들이 있으니 더 몰두해서 할 수 있었다

아쉬운 점

  • UI 작업이 들인 시간에 비해 생각보다 더디고 이해되지 않는 부분이 많아서 답답했다

개선 사항

  • 비즈니스 로직 작업을 시작하면 좀 낫지 않을까?!

🐣 이지훈

좋았던 점

  • 팀원들과 거의 10시부터 새벽2시까지 모여서 같이 코딩을 하다보니 문제가 생겼을때 빠르게 회의도 가능했고 누군가와 같이 코딩을 하는 기분이 들어서 좋았습니다.

아쉬운 점

  • 처음에 계획했던 서로의 역할이 바뀌어도 구현이 가능해야 한다.
  • 나는 다른 사람의 파트를 들어가도 바로는 아니더라도 구현을 할 수 있을까? 생각이 들고 되게 사소한 것들도 정리하자 라고 했지만 잘 안지켜지는거 같아서 아쉬웠습니다.

개선 사항

  • 서로의 역할이 바뀌어도 구현이 가능할 수 있게 하기 위해서는 코드의 이해를 필요로 하는데 코드 리뷰 만으로 부족하다고 느껴 매주 특정 시간 동안 서로의 구현을 완벽하게 이해할 수 있는 정도가 될 수 있게 이야기를 하기로 했습니다.
  • 그리고 Tech 에 너무 부담을 갖지 말고 작은 단위도 올리고자 합니다.

👻 양수진

좋았던 점

  • 게더에서 하루죙일 붙어서 하니까 외롭지 않고 강제성도 부여되어서 좋았다
  • 이슈가 생기면 바로바로 의논할 수 있어서 게더타운 모각코가 좋다
  • 능지처참 리뷰를 받으니 개선점을 파악하고 보완할 수 있었다

아쉬웠던 점

  • 요구사항 설계서에 기한이랑 task 다 정해놓고 정작 개발할 땐 참고 혹은 상태 갱신을 하지 않았다
  • 작업을 할 때마다 이슈 하나씩 올리고 하고 올리고 하고 해서 계획을 철저히 짜지 못했던 것 같다

개선할 점

  • 다음주에는 월요일 스프린트 회의에서 작업할 이슈를 미리 등록하고 계획에 맞게 해봐야겠습니다
  • 실제로 걸린 시간도 체크해서 다른 작업의 예상 시간을 정하는데 참고해야겠습니다

✅ Daily 11

이지훈

  • 카카오 서치 결과 9개의 section으로 나눠서 저장
  • 카카오 서치 결과 테스트 코드 추가
  • 하단 기프티콘 ViewPager2로 전환시 근처에 있는 브랜드 추천
  • 네이버 맵에 브랜드 마커 클릭했을때 해당하는 쿠폰들 보여주기

김명석

  • 기프티콘 추가 화면 구현
  • 갤러리에서 가져온 이미지 자동 파싱
  • CropImageView를 이용하여 이미지 크롭
  • CropImageView의 Clip을 이요한 그림자 처리와 Zoom기능 추가

양수진

  • 지문 인증 Biometric Compat으로 Migration
  • PIN 암호화하여 DataStore에 저장
  • 설정 관련 작업
  • 앱 초기 실행 시 위치 권한 요청

박명범

  • DB에서 기프티콘 아이디로 기프티콘 정보를 불러온다.
  • 기프티콘 사용 완료 버튼 동작 구현
  • 기프티콘 공유 버튼 클릭시 기록 남기기

금일 스프린트 내용

✅ Daily 12

어제의 작업 보고

김명석

  • 사진 선택 화면 - RecyclerView의 Decoration 관련 수정
  • 사진 편집 화면
    • 터치범위 정의, 이동, 크기 조절 방식 설명
    • 이벤트 정의와 활용 방식 설명 (이동, 크기조절, NONE)
    • 화면 그리기 (섀도우, 엣지, 코너)
    • 줌 원리 설명 행렬 연산..

이지훈

  • 도분초 변환
    • 초로 변환한 후 계산하고 다시 변환하면 되지 않는가?
  • 섹션 별 캐싱과 검색
  • 명범님의 DbResult 와 UIState를 합칠 수 있지 않을까
  • SharedFlow test 할때의 이슈 (Turbin)

박명범

  • Room에서 기프티콘 가져오기
  • Intent로 기프티콘 키 값을 넣어서 상세화면을 열기
  • 목록, 지도, 알림에서 키를 넘겨주면 그거 띄워준다.
  • 유효하지 않은 상태도 관측하여 Dialog 출력

양수진

  • PIN UI 구성
    • UI 수정합시다
    • 다음 버튼을 없애고 6자를 쓰면 넘어가게 바꾸죠?
  • PIN을 String으로 관리

✅ Daily 13

이지훈

  • 검색을 현재 섹션보다 더 넓게 한 번에 검색한다
  • 검색 결과를 섹션 정보와 함께 DB 에 저장해야 하는데 검색 될 때마다 저장하는 방식에서 개선 방향을 함께 고민해 봄

양수진

  • PIN 저장을 AES256 으로 암호화 후 저장 (간단한 테스트 진행)
  • 위 로직을 데이터 레이어로 옮길 예정
  • 실제 PIN 정보를 암호화 후 저장하는 과정 수행할 예정

박명범

  • 기프티콘 사용 처리 Room 구축
  • 기프티콘을 Flow 로 받는 이유: 상세 페이지에서 기프티콘의 상태를 변화시키고, 바로 반영할 수 있도록 Flow 로 반환 받음

김명석

  • CropRect 가 움직일 수 있는 최대 범위 지정 (사진을 안 넘어가도록)
  • CropRect 의 최소 크기 지정 (최소일 때도 이동 가능해짐)
  • 이전 포인트와 현재 포인트를 비교해서 CropRect 이동
  • 끝으로 갔을 때 확대된 사진을 이동시켜줘야 하는데 2배 빠르게 이동
  • 3dp 이하로 사진 모서리에 붙으면 딱 붙는 snap 구현

✅ Daily 14

양수진

  • ProtoDataStore 적용이 kts 여서 실패 -> PreferenceDataStore 로 변경
  • iv 를 PreferenceDataStore 에 저장하면서 Exception 발생 -> 해결
  • Snackbar Animation 적용

박명범

  • 기존에 Mode 에 따라 화면을 다르게 보여주던 부분을 Fragment를 이용한 페이지 교체로 변경
  • 사용 기록을 reverse 를 이용하여 정렬 순서 변경

이지훈

  • 검색, Draw 를 번갈아가면서 진행하는 것보다 한번에 다운 받아 그리는게 더 효율적
  • Dark Mode 변경에 따라 Marker 를 다시 그려주지 않던 문제 해결

김명석

  • ActivePointerId 를 이용 하여 MultiTouch 를 해결
  • 내부 저장소를 이용하여 Crop된 이미지 저장 및 Uri를 setResult로 전달

✅ Daily 15

마스터클래스 프로젝트 리뷰

Why 부분 잘 보일 수 있게 변경

  • 토글 부분 안에 말고 밖에 보이게 하자. 이건 우리의 강점이다.
  • Readme 안에 기술 스택 적는 공간도 괜찮아보임

칸반보드

잘 쓰고 있다고 칭찬 받았다!~

CustomError

  • BeepError로 바꾸기
  • EmptyResults 는 Exception이 맞을까? UI레이어 에서만 바꾸는게 옳지 않을까?

🐻 김명석

좋았던점

  • 크롭을 드디어 완성
  • 라이프 사이클, 저장소에 대해서 좀 더 깊게 공부 해봤다

아쉬운점

  • 깊게 공부하다 보니 개발 속도가 느려졌다

개선

  • 일단 완성을 시키고 완성도를 높이는 방법을 택해야 겠다.

🐻‍❄️ 박명범

좋았던 점

  • 작업 내용을 좀 더 세분화 하여 더 작은 단위로, 더 자주 PR 을 올림
  • 기프티콘 상세 화면 구조를 좀 더 깔끔하게 개선 시킴
  • 아무튼 이번 주 잘 버팀

아쉬운 점

  • 작업 속도가 아쉽다. 좀 더 빠르게 해야하는데…
  • 시간은 많이 썼는데 집중력이 높지 않았던 것 같다

개선 사항

  • 좀 더 빠르게 작업하자. 당장 마음에 안드는 구현이라도 일단 동작은 시켜야하니…
  • 그리고 추후에 개선하자
  • 맥북에 익숙해지자 (오늘 맥북 옴)

🐣 이지훈

좋았던 점

  • 위치정보를 어느 레이어에 둘지 아니면 내 로직을 어떻게 구현을 해야 할지 팀원들이 계속 같이 고민을 해줘서 너무 고마웠다.

아쉬운 점

  • 하나의 Activity에 너무 많은 역할을 주고 있다는 생각이 드는데 어떻게 고쳐야 할지 모르겠다.
  • 고민 하는 시간이 너무 길어서 구현 속도가 너무 느리다.
  • 구현 속도가 느리다보니 나도 모르게 정리를 미루게 된다.

개선 사항

  • 당장 애매한 것들이 있으면 그건 우선 적어두고 구현을 끝내고 개선을 하자.

👻 양수진

좋았던 점

  • 칸반보드에 이번주의 backlog를 추가하고 작업하니 나의 이번주 작업 내에서의 진행도를 눈으로 볼 수 있었따.

아쉬웠던 점

  • 개발 속도가 너무 느려서 계획을 완수하지 못함
  • 밥먹고 쉬는 시간을 너무 길게 가졌다

개선할 점

  • 개발 속도를 더 내야함
  • 새롭고 낯선 내용을 익히기 위해 더 노력해야 함

✅ Daily 16

김명석

  • SharedFlow -> EventFlow (직접 만든 Flow 에어비엔비)
  • UiText용 클래스 생성

이지훈

  • 메인뷰 레이아웃 및 룸에서 갖고 오기

박명범

  • 금액 입력 받는 EditText 커스텀 뷰 구현
  • 금액에서 3글자마다 쉼표 추가

양수진

  • 핀 세팅 하는 부분 각각의 행동을 나눠서 재활용한 View 구현
  • UsePreferencesRepository 에 핀 관련 설정 정보가 전부 들어가있기에 Hilt로 주입을 받고 사용을 한다.

image

✅ Daily 17

박명범

  • 자바 설치가 너무 오래 걸렸다
  • 컴포즈 세팅도 너무 오래 걸렸다
  • State 관련 작업 했다. 오늘부터 UI를 짤거다

김명석

  • edittext: 바코드와 금액 둘 다 포맷이 있는 것은 똑같지만 바코드는 앞부터, 금액은 뒤부터 입력됨
  • 입력한 후 다음 칸으로 포커스. 유효하지 않은 칸으로 자동 이동
  • 사진이 없는 경우에는 추가하지 않도록 했는데.. 문자만 있는 기프티콘 때문에 사진 없이도 추가 되게 해야할 것 (명범: 원본 이미지 보기가 있기 때문에 상세 쪽에서도 고려해야 하네요)
  • 유효하지 못한 입력, 빈 입력이 있으면 등록할 수 없게끔 제한
  • 이제 데이터를 넣는 것을 해야 함

양수진

  • 설정 프래그먼트 레이아웃
  • 억지로 fragment에 낑긴 느낌 (명범: 설정 fragment 안에 fragment container 넣으면 안대여?)
  • Fragment에서 viewModel을 attach 전에 호출해서 찾을 수 없었던 오류

이지훈

  • 주말에 수진님이 그려주신 마커를 적용, 적용하기 위해 마커에 카테고리 정보 추가
  • 알고보니 28부터 지원되었던 FusedLocation과 Location 버전 분기
  • 10초간 주기적으로 위치를 받도록 했는데, 처음에도 10초가 걸려서 따로 수집

💥 저녁에 develop 브랜치의 내용이 꼬이는 사고가 나서 다같이 조율해서 충돌난 부분을 정리했다.

✅ Daily 18

김명석

  • 카카오 기프티콘 파싱 성공적
  • openCV 사용 안 하고 사진 부분과 정보 부분을 잘라서 파싱
  • 사진으로 추가, 직접 추가를 자연스럽게 진입하기 위해 당근마켓처럼 FAB 확장하는 방식 생각

이지훈

  • 근처의 기프티콘 거리 표시 (100m 단위. 100m 미만이면 근처에 있다는 문구로)
  • 같은 브랜드는 묶을 예정
  • 지도에서 뒤로가기 버튼을 어떻게 만들 지 고민
  • 홈 화면에서 기프티콘이 없는 경우에 어떻게 UI 를 보여줄 것인지 고민

박명범

  • 기프티콘에서 브랜드 정보 가져오는 부분 구현
  • 기프티콘 목록에서 뷰모델에서 가져온 데이터로 컴포즈를 통해 화면에 보여줌
  • 브랜드 별로 Chip 으로 만들어서 상단에 표시
  • 브랜드 전체 보기 아이콘을 누르면 다이얼로그 띄우기 (+ FlowLayout)

양수진

  • 복잡해진 인증 흐름을 정리해야 할 듯
  • 보안 세팅 정리 예정
  • 위치 권한 처리할 예정
  • 알람 관리 고민할 예정 (알람 이후에 설정 다룰 예정)

✅ Daily 19

김명석

  • GifticonRecognizer Flow 작성 및 구현

이지훈

  • Shimmer 도입
  • 홈 화면 Lottie
  • 홈 화면 데이터 유무에 따른 분기

박명범

  • Brand 로 필터링
  • hashMap 를 이용하여 add/remove 를 하여 Recomposition이 일어나지 않는 현상 해결

양수진

  • 설정에서 들어가면 터지던 오류 해결
  • ViewModelScope.launch 살해 사건 수사

✅ Daily 21

  • Location 코드 분리 / 권한 처리 분기
  • 권한 처리

알람 구현

  • Hilt 적용하는데 많은 어려움이 있었음
  • 만료 기한이 지나지 않았고, 3일 7일 14일 기준으로 알림을 보내줌
  • GroupNumber를 지정 -> 좀 더 알아봐야 함
  • 26이상부터는 Channel 만드는게 필수
  • PendingIntent를 사용할때 code를 넣을 수 있는데 PendingIntent Flag에 구분자로 사용이 된다.
  • barcode를 기준으로 했다. -> barcode가 같을 수는 없으므로
  • 0~6자로 사용을 했는데 이것은 겹칠수도 있다 -> 9자리로 늘리는 방향으로
  • 게스트 로그인 UI 변경 및 로직 변경

상세페이지

  • 금액 입력 부분 구현 -> EditText -> 머터리얼 -> compose로 구현하게 됐음
  • 글자 길이, 필요 없는부분 필터링
  • focus 부분을 어떻게 구현을 했는지

주간 계획

김명석

  • 이력서
  • 기프티콘 자동파서 (수요일까지는 무조건)
  • 갤러리 마무리
  • Payload 이용하여 RecyclerView 개선
  • UI 상태처리 적용

이지훈

  • 앱 위젯 구현 (월화)
  • 홈화면 (수목금)

박명범

  • 이력서

  • 기프티콘 상세 화면에 사진 달기 (화)

  • 기프티콘 목록에 사진 달기 (화)

  • 이력서

  • 기프티콘 상세 화면에 사진 달기 (화)

  • 기프티콘 목록에 사진 달기 (화)

  • 기프티콘 사용 로직 정리 (수)

  • 이후 스타일 정리, 버그 픽스, 기프티콘 공유 (목/금)

양수진

익명 로그인 (월/화)

  • 설정 메뉴 변경
  • 설정에서 로그인 되도록, 로그인 시 guest 설정과 db update PIN (월/화)
  • 설정에서 겁나 빠르게 눌렀을 때 버그
  • 키패드가 눌리는 듯한 연출 (누르면 진해졌다가 다시 허얘지는)

파이어베이스에 기프티콘 백업 (수/목/금)

✅ Daily 22

지훈

  • 위젯 만들어서 띄웠다
  • WorkManager로 onetimework 예약
  • 새로고침을 누르면 미친듯이 위치 정보를 뱉어내는 오류
  • 컴포즈 문제인가 플로우 문제인가 위젯 문제인가....

명석

  • 사진 추가 시 상단에 리스트 표시
  • 사진 추가 순서도 원에 표시

수진, 명범

  • 이력서 이슈

✅ Daily 23

이지훈

  • 위젯 작업 (Gliance 사용)
  • 앱을 실행하지 않았을 때 카카오 검색이 되지 않아서 새로고침을 눌러도 위젯에 표시되지 않다가 앱을 켜면 그때 표시가 되는 문제
  • 위치를 계속 수집하고 있기 때문에 백그라운드로 넘어가도 계속 수집하던 문제가 있었다
    • 백그라운드로 가면 Job 을 Cancel 하고, 포그라운드로 넘어오면 Job 을 새로 만들어서 해결

박명범

  • 기프티콘 사용 로직 작성
  • 기프티콘 수정 - 날짜 수정 동작 수정

✅ Daily 24

김명석

  • 자동 파싱기능 추가
  • 여러 개를 등록할 경우 중지 됩니다
  • 템플릿이 아닌 사진을 등록하면 중지 됩니다.
  • barcode, balance format 에서 문제가 발생하는 것으로 파악

이지훈

  • Glance 로 Widget 작업
  • Location Callback 코드 수정
  • 위젯 클릭으로 네이버 맵 이동
  • 브랜드 자동 포커싱

양수진

  • 보안 설정 미설정 시 다이얼로그 출력
  • 밖에 클릭시 터짐
  • Splash Animation 추가
  • Guest 로그인 추가
  • Guest 로그인시 구글 계정으로 데이터 이동

박명범

  • 필터 다이얼로그에 만료기프티콘 표시 추가
  • 핕터 다이얼로그에 ContentPadding 추가
  • 보안 인증 추가
  • 보안 인증 성공시 다이얼로그 띄우기
  • 사용 완료 처리

✅ Daily 25

🐑 양수진

좋았던 점

하루 하루가 행복하다.

좋지 못했던 점

지난 5주간 주말까지 모두 투자해서 작업했는데도 새벽까지 허겁지겁 작업하게 된 것이 억울했다 일정과 프로젝트 진척도에 대해 더 돌아보고 얘기를 많이 해봤어야 함 이력서, 노션 소개 페이지 작성 등 신경쓸 것이 많았다.

개선할 점

버그 잡을 시간이 적다보니 토요일 하루 내내 투자해야 할듯 일요일에는 밀린 학습 정리를 할 것

🐣 이지훈

좋았던 점

내 이력서를 모두가 보고 템플릿 처럼 써줘서 고마웠다.

아쉬운 점

확장을 너무 고려하지 않고 구현을 했던거 같다.
당장에 기능에 급급해서 빠르게 구현을 쳐낼려고 했던 것이 독이 됐다.

개선 사항

기능이 급해서 어쩔 수 없던 결과라고는 생각하고 다음번에는 이 경험을 살려서 좀 더 정교하게 짜는 연습을 해봐야겠다.

👾 박명범

잘한 점

어찌어찌 기본적으로 돌아가는 동작은 구현했다 5시간씩 자면서 빡세게 코딩했다 이슈를 적당한 단위로 잘 쪼개서 작업했다 적어도 앱이 터지지는 않게 예외처리를 잘 했다

아쉬운 점

이쯤 되면 출시 준비하고 있을 줄 알았다... 결과물에서 디테일들이 아쉬운 부분이 많이 보인다 이력서를 더 미리 적지 못해서 아쉬웠다

개선할 점

디테일을 잡자!! 미처 못 한 기능도 추가해보자 이력서 첨삭 받은 내용 반영하기

👨‍🔧 김명석

잘한 점

결국 자동 파싱 최초 버전을 만들었다 팀원의 도움으로 이력서를 읽을만 하게 만들었다

아쉬운 점

이력서에 시간을 너무 많이 썼다 자동 파싱 성능이 만족스럽지 못하다

개선할 점

오류, 사용성을 더 잡아야겠다 학습정리를 주말동안 열심히 해야겠다

✅ Daily 26

주말동안 했던 내역

  • 자동로그인 시점 변경

    • onCreate에 담기
  • 사용완료 기프티콘 탭 개선

    • 사용 완료 표시
  • 백키 눌렀을때 설정으로 나가기

  • 기프티콘 상세화면 개발

    • 기프티콘 이미지 수정 버그 있음
    • 수정해도 홈화면에서 개선이 안됨

발표 영상 시나리오 및 간단하게 정리

  • 1분짜리는 아주 간략하게만
  • 10분 짜리는 기본적으로 우리가 공통되서 사용했던 내용들 및 관련 이야기 하기
  • 그 다음은 각자 맡은 부분에서 기술적인 부분 이야기하기.

팀 노션 정리하기

  • 기능소개 페이지 스크롤 너무 심한거 같아서 줄이기
    • gif 활용하고 정리할 부분들 정리하기
  • 기술 스택 부분 다른 방법으로 적어보기

✅ Daily 27

  • 기술 발표 영상 어떻게 구성할까?
  • 공통의 고민 + 개인별 고민으로 구성하다
  1. 어떠한 이유로 도입하게 되었고
  2. 이렇게 도입했고
  3. 도입해서 이런 이득을 봤다.
  • 공통 고민으로는 무슨 얘기를 다룰까?
    • 테마: 구현 중 필요가 느껴졌고, 팀 전체가 도입하여 개발 효율을 up
    • UiState
    • DbResult
    • EventFlow
    • Fragment Binding Delegate (무조건 Base를 상속 받는게 좋냐?)
    • UiText
  • UiState와 DbResult는 일관성을 지키는 비슷한 내용이니까 하나로 묶어도 되겠다.
  • UiText는 수진의 애니메이션 AnimInfo와 비슷하니까 제외하자
  • 일단 개인별로 주제를 하나씩 뽑아보자
    • 지훈: 장소 데이터 캐싱
    • 명범: 6중 combine 만들어서 하나의 상태로 관리
    • 명석: 기프티콘 추가할 때 사용자의 편의를 고려했던 내용
    • 수진: View의 애니메이션 코드를 줄여보려 했던 시도

✅ Daily 28

  • 어제 만들었던 개인별 피피티를 합쳐서 서식 맞추기
  • 공통 주제
    • 일관성을 위하여: UiState, DbResult
    • 기능적으로 해결한 방법: EventFlow
  • 오후에는 녹음까지 해서 피피티 합치기로

🏖 Daily 29

  • 휴가

✅ Daily 30

  • 발표 자료 점검
  • CI/CD 재시도 (Firebase Distribution 실패)

✍️ BEEP Tech Blog

박명범

양수진

김명석

이지훈

👾 BEEP

🗣 Ground Rule

✏️ Conventions

⚙️ Setting

🌱 Daily Scrum

week 1
week 2
week 3
week 4
week 5
week 6
Clone this wiki locally