Giter Club home page Giter Club logo

meetingtime's People

Contributors

dependabot[bot] avatar hyunsanghan avatar jaewoomaeng avatar tyj9327 avatar yeonnseok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

meetingtime's Issues

ChattingRoom 모델 만들기

필드는 chattingroom_url(URL필드), is_assigned(Boolean필드) 정도면 될 것 같고, Matching모델과 연결이 되어있으면 나중에 쓸모가 있을 듯 하네요.

어차피 matching에 chattingroom_url을 넣어줘야 하니, 여기서 연결하면 될 듯합니다.
matching에 현재 개발되어있는 것처럼 url을 그대로 넣는 게 아니라 ForeignKey로 ChattingRoom을 참조하여 is_assigned = False인 첫번째 chattingroom을 찾아서 그것을 current_matching API PATCH방식의 시리얼라이저 data에 넣는 식으로 구현하면 될 것 같은데 다들 어떻게 생각하시나요?

모델 일부 변경 필요

정회원 여부(?)도 Profile모델에 추가해야될듯. 이메일 인증을 거친 사용자인지에 대해 판별하기 위함

닉네임 validation

프로필수정 때 닉네임(team_name)을 수정하면 User모델의 username이 수정되게 되는데요.
이는 unique해야하므로 validation이 필요합니다.

username = request.data["team_name"]

위와 같이, request안에 team_name이라는 이름의 닉네임을 담은 request가 온다는 것을 감안하여 /profile API의 PATCH메소드에서 닉네임 중복 validation 로직을 추가해주세요.

camelCase

frontend쪽은 camelCase로 통일하는 작업을 해야 할 것 같습니다.

/current_meeting API PATCH방식 구현 필요

그러고보니 PATCH방식 하나 추가해야겠네요.
용도는 cutline이라는 필드를 채워주는 것이고, Join가능한 시간이 마감되어 cutline(남녀 중 적은 쪽 인원수)이 확정되었을 때 그 값을 PATCH를 통해 current_meeting에다가 넣어주면 될 듯합니다.

cutline이 생성된 후 join 취소 혹은 회원탈퇴하는 경우

커트라인이 생성되기 전에는 별 문제가 없는데,

  • 커트라인이 생성된 후 매칭이 진행되는 도중에 한 팀이 빠지면 빠르게 후순위 팀에 기회를 주어야할지?
  • 기회가 주어진다면 어떤 방식으로 주어야 지체 없이 서비스가 가능할지? (알림 방식, 강제 셔플 참여 등)
  • 커트라인을 두 성별 중 수가 적은 쪽이 가장 큰 랭크로 하는 것이 옳은 것인지? (후순위 팀이 없게 됨)
  • 커트라인 선정 방식을 바꾼다면 어떻게 바꿀지

에 대해 논의가 이루어져야 할 것 같습니다.

일괄반영 API콜 구현

  • 개개인+실시간이 아닌, 정해진 시간에 콜되어야 할 API 구현
    • 참고: 커트라인 넣는 API콜은, 일괄반영이 아니라 한 인스턴스를 PATCH하는 용도라 좀 역할이 애매할 수 있는데, 이것도 '정해진 시간'에 콜되어야 할 API이므로 재우담당입니다.

@choiyeonseok @HyunSangHan 여기에 필요한 State들 댓글로 요청합시다.

Profile에서 이메일 인증 클릭 시, 회사명 값 바뀜

예컨대 구글이라고 회사명이 등록되어있는 회원이 네이버로 회사명을 바꾸고 이메일 인증 버튼을 누르면, 회사명이 다시 구글로 바뀌어버립니다.

이 작업은 dev브랜치로 merge된 후에 시작해주시면 되겠습니다.

ref: #10

rank 넣는 로직, cutline 넣는 로직 개선 필요

CurrentMeeting API (PATCH) - Meeting모델에 cutline 넣기
Join API (POST) - JoinedUser모델에 rank 넣기


코너케이스에 대한 대응을 위해 로직 개선 필요

  • 코너케이스 : 번호표 뽑은 사용자(특히, 커트라인 안쪽에 들어있는 사용자)가 회원탈퇴를 한 경우
    1. 번호표를 뽑는 기간이 아직 끝나기 전 상황 - rank 로직 개선 필요
    2. 번호표를 뽑는 기간이 막 끝난 상황 - cutline 로직 개선 필요
    3. 셔플 1회차~3회차 사이 상황 - ?

JoinedButton 수정

  • fixed 해제 필요
  • 타이머에서 남은시간 2회 반복되는 케이스 존재하여 수정 필요

미팅정보 컴포넌트 (상단구역)

(PC버전 기준) 좌측상단구역에 들어갈 컴포넌트 구현.

  • 미팅정보 컴포넌트
  • 미팅정보 컴포넌트 > 각종 버튼 컴포넌트
    • 오픈대기중 버튼 (~ 오픈 전)
    • 번호표뽑기 버튼 (오픈 후 ~ join 전)
    • 현재순위 보여주는 버튼 (join 후 ~ 선착순join마감 전)
    • cutline in/out 표시 버튼 : 이건 넣을지 말지 고민중 (선착순join마감 후~)
  • 미팅정보 컴포넌트 > 각종 버튼 컴포넌트 > JoinedPopup.js

  • 필요 예상 API : current_meeting(get), join(post)

Social Login

1. 로그인기능 방향성

  • 자체로그인/회원가입 : 없음
  • 소셜로그인/회원가입 : 카카오 ONLY

2. 알아둬야 할 것

  • django-rest-auth(allauth기반)라는 패키지를 설치해야 함
  • kakao에서 js용 SDK를 받아도 되고, REST API를 활용해도 됨

3. 구현해야 할 것

  • 회원가입
  • 로그인 유지 및 각 내부API 호출 시 토큰을 통한 인증
  • 로그아웃

kakao login button 커스터마이징 필요

SDK통해서 이미 제작된 버튼을 쓰고 있는데, 우리 서비스에 맞게 커스터마이징 필요
(참고로, 이 경우 SDK사용이 불가하게 될 수도 있음)

current_matching API 수정 필요

#14 의 CurrentMatching API 관련하여 코드 오류 발견

  1. GET : current답게, (trial_time을 request에서 받지 말고) 시간을 통해 자동으로 구해주면 좋겠음. 지금은 임의의 회차 3이 들어가있음.
  2. PATCH : id를 통해 불러오는 게 아니라, current_meeting, trial_time을 통해 여러개의 매칭을 불러와야함.
    그 이후 for문을 돌려 PATCH해야함.

Front 리팩토링

  1. immutable 도입
  2. ducks 구조 적용
  3. component/container 구분
  4. redux-saga 도입(?)

매칭 결과 확인 화면

  • last_result_time필드 추가 필요(third_shuffle_time과 meeting_time 사이의 시간 gap때문에, 그 시작시간을 의미하는 시각 정의가 필요함)

  • 채팅방URL이 나오는 화면(최종 성공 시) / 안타깝게도 이번에는 매칭에 실패했다는 문구의 화면(최종 실패 시) 구현 필요

플레이어(프로필) 정보 컴포넌트 (하단구역)

(PC버전 기준으로) 좌측하단구역에 들어갈 컴포넌트 구현.

  • 내정보 컴포넌트
  • 내정보 수정 컴포넌트
  • 매칭후보(상대방) 정보 컴포넌트
  • 매칭후보(상대방) 정보 컴포넌트 > 각종 버튼 컴포넌트
    • gift On/Off 버튼
    • greenlight On/Off 버튼

  • 필요 예상 API
    • 필수 : profile(get, patch), matching(get, patch),
    • 선택 : counter_profile(get)
      • 사실 matching API를 get으로 호출하면 counter_profile의 데이터도 nested되어 따라오게 되어있으므로 그냥 matching API만 써도 충분함. 따라서 구현 시 불필요하다면 counter_profile을 굳이 안써도 됨. 안쓴다면 나중에 리팩토링할 때 API 삭제를 고려해보기.

Pull Request 타이틀 정리

현재 PR의 타이틀을 보면, 관리가 제대로 되지 않고 있습니다.
아마 다들 바쁘기도 하고 해커톤 기한이 타이트해서 신경쓰기 어려웠던 부분이었을 텐데요.

기존 타이틀 중 브랜치명 그대로 PR 타이틀을 달아둔 사례를,
히스토리 관리 차원에서라도 PR 내용에 맞게 제목을 수정했으면 합니다.

각자 작성한 PR에 대해 타이틀 수정해주시고, 완료했다면 이 이슈에 댓글 달아주세요.

메모리 누수(Unmount 단계에서 subscription 해제 필요)

뒤로가기 했을 때 발견되는 이슈임

index.js:1437 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
    in CountDown (at ControlTool.js:91)
    in div (at ControlTool.js:115)
    in div (at ControlTool.js:101)
    in div (at ControlTool.js:100)
    in ControlTool (created by ConnectFunction)
    in ConnectFunction (at Main.js:189)
    in div (at Main.js:175)
    in Main (created by ConnectFunction)
    in ConnectFunction (created by Context.Consumer)

gift 관련 구현

  1. 안주쏘기 팝업이 뭔가 깨진 것 같은데, 수정하거나 시스템얼럿을 활용하는 걸로 대체 필요해보입니다.
  2. 상대방(counter_player)이 안주를 쐈을 때 내 화면의 Main.js에서 "안주는 저희가 쏩니다!" 말풍선 나오도록 구현 필요합니다.(ToolTipDown이용. ToolTipUp을 Initpage.js에 넣기 위해 해커톤 때 한번 다듬은 바 있는데, 이를 참고하여 구현해보면 될 것 같네요)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.