Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 추억 목록 정렬, 필터링 API 구현 #546

Open
5 of 10 tasks
linirini opened this issue Nov 9, 2024 · 15 comments
Open
5 of 10 tasks

feat: 추억 목록 정렬, 필터링 API 구현 #546

linirini opened this issue Nov 9, 2024 · 15 comments
Labels
backend We are backend>< confirm need confirmation! feat 기능 (새로운 기능)
Milestone

Comments

@linirini
Copy link
Contributor

linirini commented Nov 9, 2024

🥸 어떤 기능인가요?

추가하려는 기능을 설명해주세요.

추억 목록을 정렬, 필터링 할 수 있는 API를 구현합니다.

✅ 작업 내용

(@hxeyexn : 어떤 기준 정렬인지 옆에 부연 설명 부탁드립니다! 감사해요 해나!)

  • 생성순 : 추억 생성일 기준으로 정렬(서버에서 들어오는 기본값)
  • 최신순 : 추억 시작일을 기준으로 내림차순 정렬
  • 과거순 : 추억 시작일을 기준으로 오름차순 정렬
  • 기간이 있는 추억 : 추억 기간이 있는 추억
  • 기간이 없는 추억 : 추억 기간이 없는 추억

(기간이 없는 추억들은 최신순, 과거순 정렬 시에 기간이 명시된 추억들보다 아래에 위치하도록 구현했습니다.)

😇 이때까지 끝낼게요!

기능 개발 완료 예상 날짜를 작성해주세요. 신중하게 생각해요!

😵 참고할만한 자료(선택)

🙇‍♀️ 이슈 확인했어요:)

팀원에게 이슈 확인을 부탁해요! 이슈를 확인한 팀원은 체크 표시를 해주세요!

@linirini linirini added backend We are backend>< feat 기능 (새로운 기능) labels Nov 9, 2024
@linirini linirini added this to the sprint-7 milestone Nov 9, 2024
@linirini linirini added the confirm need confirmation! label Nov 9, 2024
@BurningFalls
Copy link
Contributor

BurningFalls commented Nov 9, 2024

Note

정렬 항목 중에 ‘기간 있는/없는 추억’은 정렬보다는 필터링에 가까운 것 같아요

사용자 피드백 중에 위와 같은 내용이 있었습니다. 이를 반영한다면 버튼을 분리해야 할 것 같습니다.

  • 정렬(전체의 순서를 변경): 생성순, 최신순, 과거순
  • 필터링(일부만 보여줌): 기간이 있는 추억, 기간이 없는 추억

만약 버튼을 분리한다면, 두 기능이 동시에 적용되는 것도 고려해야 합니다. (ex. 기간이 없는 추억을 생성순으로 정렬) 이 경우, 클라이언트와 백이 어떤 식으로 api를 주고받아야 효율적인지 고민해봐야 할 것 같습니다. 아래는 생각해본 예시입니다.

필터링 조건 정렬 기준 API 요청 예시
기간이 있는 추억 생성순 GET /memories?sort=creation_date&order=asc&filter=period_set
기간이 있는 추억 최신순 GET /memories?sort=period&order=desc&filter=period_set
기간이 있는 추억 과거순 GET /memories?sort=period&order=asc&filter=period_set
기간이 없는 추억 생성순 GET /memories?sort=creation_date&order=asc&filter=period_unset
기간이 없는 추억 최신순 GET /memories?sort=period&order=desc&filter=period_unset
기간이 없는 추억 과거순 GET /memories?sort=period&order=asc&filter=period_unset

이때, 기간이 없는 추억은 최신순과 과거순이 의미가 없습니다. 이를 어떻게 처리할지도 고민해볼 부분입니다. 이 경우는 아래와 같이 UI를 구성해볼 수 있습니다.

  • 필터 드롭다운: [“전체”, “기간이 있는 추억”, “기간이 없는 추억”]
  • 정렬 드롭다운 (전체 추억 선택 시): [“생성순”, “최신순”, “과거순”]
  • 정렬 드롭다운 (기간이 있는 추억 선택 시): [“생성순”, “최신순”, “과거순”]
  • 정렬 드롭다운 (기간이 없는 추억 선택 시): [“생성순”]

그리고 제 근본적인 의문점이 있습니다. 어떤 상황에서 사용자가 기간이 있는 추억만 모아보거나 기간이 없는 추억만 모아보고 싶을까요? 저로서는 해당 기능이 아직 잘 납득이 되지 않습니다.

@s6m1n
Copy link
Contributor

s6m1n commented Nov 9, 2024

@BurningFalls
만약 저희가 의도한 대로 기간이 없는 추억을 '카테고리'로, 있는 추억을 '여행 기록'으로 사용하는 사용자가 있다면
평소에는 기간이 없는 추억만 필터링해 일상이나 취미들을 기록하다가, 새로운 여행을 시작하거나 지난 여행들을 돌아보고 싶을 때 다시 필터를 사용할 수 있을 것 같아요.
일상 / 비일상(여행)을 구분하고자 할 때 사용할 수 있을 것 같습니다.

@linirini , @hxeyexn
그리고 정렬에 '최근 수정 순'을 추가하는 것에 대해서 어떻게 생각하시나요?.?

@BurningFalls
Copy link
Contributor

BurningFalls commented Nov 9, 2024

Note

생성순은 이해가 가는데 최신순과 과거순은 어떤걸 기준으로 최신이고 과거라는 것인지 모르겠어요

위와 같은 사용자 피드백도 있었습니다. 최신순과 과거순이라는 단어로는 설명이 부족한 것 같다고 생각합니다.
"최근 시작일 순", "오래된 시작일 순"과 같이 좀더 명확하게 표기하는 것이 좋을 것 같습니다.

@BurningFalls
Copy link
Contributor

BurningFalls commented Nov 9, 2024

만약 저희가 의도한 대로 기간이 없는 추억을 '카테고리'로, 있는 추억을 '여행 기록'으로 사용하는 사용자가 있다면
평소에는 기간이 없는 추억만 필터링해 일상이나 취미들을 기록하다가, 새로운 여행을 시작하거나 지난 여행들을 돌아보고 싶을 때 다시 필터를 사용할 수 있을 것 같아요.
일상 / 비일상(여행)을 구분하고자 할 때 사용할 수 있을 것 같습니다.

@s6m1n
일상들만 돌아보고 싶거나 여행들만 돌아보고 싶을 때 해당 기능을 유용하게 사용할 수 있겠네요!
지금은 이렇게 구분하되 나중에는 추억에 태그를 달 수 있도록 해서, 태그별로 추억을 필터링하면 좀더 확실한 기능이 될 것 같아요. (ex. touroot)

@BurningFalls
Copy link
Contributor

BurningFalls commented Nov 9, 2024

그리고 정렬에 '최근 수정 순'을 추가하는 것에 대해서 어떻게 생각하시나요?.?

@s6m1n
이 부분도 어떤 상황에서 사용자가 필요하다고 생각할지에 대한 빙티의 의견이 궁금합니다.
제 생각에는 함께 추억을 공유하는 기능이 생겼을 때, 그룹의 구성원들이 업데이트된 내용을 바로 확인할 수 있다는 장점이 있을 것 같네요.

@BurningFalls
Copy link
Contributor

BurningFalls commented Nov 9, 2024

Note

어떤 정렬이 눌려있는지 알려주면 좋을 것 같아요

위와 같은 사용자 피드백도 있었습니다.
정렬을 누르고 특정 정렬을 선택하고 나면, 현재 추억들이 어떤 식으로 정렬되었는지 알 수 없다는 피드백이었습니다.
그래서 피드백을 주신 분은 정렬 버튼에 현재 '정렬'이라고 써있지만, 특정 정렬을 선택하면 거기에 '생성 순'과 같이 문구가 뜨면 한눈에 파악하기 쉬울 것 같다고 해주셨습니다.

@linirini
Copy link
Contributor Author

저도 폭포의 코멘트에서처럼 필터링과 정렬의 구분은 필요하다고 생각해요!
물론, 지난 번에 이 부분에 대해서 너무많은 정보가 상단에 위치하여 하나의 버튼으로 통일한 것이라고 했던 것으로 기억합니다.! 하지만 필터링과 정렬 중 선택하여 사용한다기보다는 조합하여 사용할 것이라고 생각하기 때문에 분리하면 좋을 것 같습니다.

@linirini
Copy link
Contributor Author

그리고 폭포가 말한대로 저도 저 정렬 기준들을 보았을 때 추억 기준인지, 스타카토 기준인지 명확하게 구분되지 않는 것 같아요!

@linirini
Copy link
Contributor Author

linirini commented Nov 10, 2024

빙티의 의견 너무 좋은 것 같습니다!

한 가지 더 의견을 내자면 결국 우리끼리 어떤 정렬 기준이 필요할 것 같아!라고 생각하는 거잖아요?
그렇기 때문에 이 부분은 클라이언트 측에서 로깅으로 사용자들이 어떤 정렬 기준을 더 많이 사용하는지 확인하고, 그 외에는 제거하는 방향으로 사용자의 선택지를 줄여주는 것이 사용자 경험 측면에서 좋겠다는 생각이 들었습니다!
이 부분은 추후 로깅 전략 회의에서 다시 한번 언급하겠습니다:)

@s6m1n 말씀하신 정렬 기준을 부연 설명과 함께 이슈 코멘트에 추가해주시겠어요?😊

@linirini
Copy link
Contributor Author

@s6m1n @Junyoung-WON @hxeyexn
추가로 궁금한 점이 있는데요! 사용자가 어플을 종료했다가 들어왔을 때 정렬 기준을 기억하고 있나요?
그게 아니라면 서버 측에서 어떤 기준으로 정렬하고 있는지 저장하고 있어야 하는걸까요🤔

@Junyoung-WON
Copy link
Contributor

@linirini

사용자가 어플을 종료했다가 들어왔을 때 정렬 기준을 기억하고 있나요?

아니요, 기억하고있지 않아요!
앱 종료 시에는 초기화됩니다.

그게 아니라면 서버 측에서 어떤 기준으로 정렬하고 있는지 저장하고 있어야 하는걸까요🤔

제 생각엔 정렬/필터 기준을 굳이 서버에서까지 저장하지 않고, 인증 토큰처럼 앱 내부 저장소에서 저장하고 있어도 좋을 것 같아요!

@hxeyexn
Copy link
Contributor

hxeyexn commented Nov 11, 2024

@BurningFalls

정렬 항목 중에 ‘기간 있는/없는 추억’은 정렬보다는 필터링에 가까운 것 같아요
사용자 피드백 중에 위와 같은 내용이 있었습니다. 이를 반영한다면 버튼을 분리해야 할 것 같습니다.

데모데이 시연을 앞두고 UX를 향상시키기 위해 급하게 추가한 기능이라 UI를 변경할 시간이 부족했습니다.
따라서 임시로 한 버튼에 모든 기능을 집어넣었습니다. 추후에 정렬과 필터링 기능을 각각 다른 버튼으로 분리할 계획입니다.


그리고 제 근본적인 의문점이 있습니다. 어떤 상황에서 사용자가 기간이 있는 추억만 모아보거나 기간이 없는 추억만 모아보고 싶을까요? 저로서는 해당 기능이 아직 잘 납득이 되지 않습니다.

@linirini @s6m1n @Junyoung-WON
이 부분은 A/B 테스트를 진행해보는 게 어떨까요?

@hxeyexn
Copy link
Contributor

hxeyexn commented Nov 11, 2024

@linirini

사용자가 어플을 종료했다가 들어왔을 때 정렬 기준을 기억하고 있나요?

아니요, 기억하고있지 않아요! 앱 종료 시에는 초기화됩니다.

그게 아니라면 서버 측에서 어떤 기준으로 정렬하고 있는지 저장하고 있어야 하는걸까요🤔

제 생각엔 정렬/필터 기준을 굳이 서버에서까지 저장하지 않고, 인증 토큰처럼 앱 내부 저장소에서 저장하고 있어도 좋을 것 같아요!

저도 호두 의견에 동의합니다. 정렬/필터 기준은 클라이언트가 내부 저장소에 저장하고 있는 게 좋을 것 같아요!

@hxeyexn
Copy link
Contributor

hxeyexn commented Nov 11, 2024

@linirini

(어떤 기준 정렬인지 옆에 부연 설명 부탁드립니다.!)

부연 설명 작성해두었습니다. 이해 안 되는 부분 있으시면 말씀해주세요!

@hxeyexn
Copy link
Contributor

hxeyexn commented Nov 11, 2024

@s6m1n

'최근 수정 순'을 추가하는 것에 대해서 어떻게 생각하시나요?.?

'최근 수정 순' 추가 아이디어 너무 좋네요!
제가 사용자라면 방금 수정했던 추억이나 스타카토를 다시 보거나, 잘못 기입한 내용이 있어서 수정이 필요할 때 용이할 게 사용할 것 같아요.


@linirini @BurningFalls @Junyoung-WON @s6m1n

한 가지 더 의견을 내자면 결국 우리끼리 어떤 정렬 기준이 필요할 것 같아!라고 생각하는 거잖아요?

리니의 의견에 동의합니다!
저도 한 가지 제안을 드리자면, '최근 수정 순' 정렬 옵션을 추가하는 것에 대해 저희끼리 논의하는 것보다는 A/B 테스트를 진행해보면 좋겠습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend We are backend>< confirm need confirmation! feat 기능 (새로운 기능)
Projects
Status: No status
Development

No branches or pull requests

5 participants