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

Team 9 상호평가 #42

Open
b1lly13 opened this issue Jan 25, 2025 · 1 comment
Open

Team 9 상호평가 #42

b1lly13 opened this issue Jan 25, 2025 · 1 comment

Comments

@b1lly13
Copy link

b1lly13 commented Jan 25, 2025

전체적으로 기능 구현이나 코드 구조 등 많이 배워가는 것 같습니다. 아래 내용은 궁금했던 점, 또는 추가하면 좋을 것 같은 점을 몇가지 작성하였는데, 도움이 됐으면 좋겠습니다.

프로젝트 마무리까지 화이팅하세요!

User

  1. 비밀번호가 공백을 허용하는 것 같습니다. 의도된 것이 아니라면 한번 확인해보시는 것도 좋을 것 같습니다.
  2. Sign up 시에 college를 enumerate로 구현하면 백엔드 API만 봤을때 이해하기 더 쉬울 것 같습니다.
  3. 현재 사용자가 데이터베이스에 존재하지 않을 경우 NotLinkedNaverAccountError 또는 NotLinkedKakaoAccountError를 발생시키고 있는데, 만약 사용자가 처음으로 네이버/카카오 로그인을 시도할 때 자동으로 회원 가입을 진행하고 싶다면, “링크”하는 과정을 별도로 거치도록 강제하는 대신, 소셜 로그인만으로 계정을 생성하게 하는 것도 유저 입장에서는 편할수도 있을 것 같습니다
  4. 현재는 네이버/카카오 계정을 연동하는 API만 제공되고, 계정 연동을 해제하는 API는 별도로 구현되어 있지 않는 것 같은데, 이런 API도 구현이 되어 있다면 사용자가 어떤 이유에서든 원할 때 언제든지 소셜 계정 연동을 해제할 수 있어서, 유저에게 좀 더 편한 기능이지 않을까 싶습니다.

Votes

  1. User는 college field가 있는 것 같습니다. 혹시 Vote는 없는걸까요? 또한, 본인의 College 대상인 투표만 볼 수 있는 필터링이나 기능이 있으면 좋을 것 같습니다.
  2. store.py에 database operation 관련 에러 핸들링 + rollback이 없는 것 같습니다. 나중에 디버깅 용도로라도 추가하는 것도 좋을 것 같습니다.
  3. views에 get_vote_by_vote_id 같은 함수들을 자주 쓰는 것 같은데, 에러 핸들링을 store에서 하면 redundant code 를 많이 없앨 수 있을 것 같습니다.
Image
  1. 민감한 사안일수도 있지만, 지금은 vote를 delete하거나 edit 하는 기능은 없는 것 같습니다. 특정 유저는 투표 종료 전까지 표를 수정하고 싶을 수 있을 것 같은데, 투표 수정 가능 기능을 만드는 것도 좋을 것 같습니다. 뭐 추가적으로 수정을 할 때 투표가 어느 정도 진행되었는지, 마감 시간이 임박했는지 등의 상태에 따라 수정을 허용할지 말지를 고려하는 것도 좋을 것 같아요.
  2. 댓글에 댓글을 달 수 있는 대댓글 구조도 있으면 좋을 것 같습니다. 카카오나 네이버로 연동도 하시니 댓글에다가 대댓글을 작성하면 댓글을 작성한 유저에게 어떤 알림이 가는 것도 추가 기능으로 해보면 좋을 것 같습니다.
  3. CreateVoteRequest
    • 의도된 건지는 모륵겠습니다만, participation_code에 공백을 허용하는 것 같습니다. 의도된 것이 아니라면 한번 확인해보시는 것도 좋을 것 같습니다.
    • 혹시 choices에 duplication test가 있을까요?

DB

  1. 비동기 방식을 사용하지 않는 것 같은데 특별한 이유가 있으신지 궁금합니다.
  2. 투표의 특성 상 마감 시간 직전에 요청이 많아질 것 같은데, 결과 확인 요청이 블로킹 되지는 않을까요?
@odumag99
Copy link
Collaborator

odumag99 commented Feb 2, 2025

안녕하세요! 성심성의껏 코드 리뷰해주셔서 감사합니다.

  1. 비밀번호나 참여코드에 공백이 허용되는 버그를 찾아주셔서 감사합니다. 해당 버그는 이번 총회를 기점으로 수정하였습니다.
  2. DB 관련 에러 핸들링의 경우 get_db_session 함수에서 에러가 발생했을 때 해당 트랜젝션을 rollback 하도록 보완하였습니다.
  3. Choices에 Duplication Test를 언급해주셨는데, 안 그래도 기능을 점검하는 중에 특정 사용자가 API를 조작해서 한 투표 선택지에 여러 번 참여하는 방식으로 선택자 수를 조작할 수도 있다는 문제점을 발견하였습니다. 이 버그 또한 이번 총회를 기점으로 수정하였습니다.
  4. 비동기 방식을 사용하지 않은 이유에 대해서 물어봐주셨습니다. 프로젝트 운영상 필수 기능 구현에 우선 초점을 맞추어 동기와 비동기를 불문하고 코드 작성을 진행했었습니다. 그러나 리뷰를 받고 성능 개선의 차원에서 모두 비동기 방식으로 전환하였습니다.
  5. 그 외 기능들도 제안해주셔서 감사합니다. Vote를 Delete하거나 Edit하는 기능은 일부로 고려하지 않았었습니다. 사용자가 투표에 참여한 뒤에 투표 내용이 수정된다면 투표 참여자의 의사가 왜곡될 수 있는 문제 때문입니다. 다만 투표 종료 전까지 투표 참여자가 자신이 던진 표를 수정하거나 취소할 수 있는 기능, 카카오톡 투표 기능과 유사하게 투표를 조기 종료할 수 있는 기능을 도입하였습니다. 대댓글이나 소셜 계정 연동 취소 등의 기능들도 제안해주셔서 감사합니다. 인력과 기간의 한계상 이번 총회까지 이러한 기능을 도입하지는 못했지만, 추후 장기 프로젝트로 전환된다면 말씀해주신 기능도 도입을 검토해보겠습니다.

감사합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants