DaleStudy / leaderboard

달레 스터디 리더보드
http://leaderboard.dalestudy.com/
3 stars 0 forks source link

전체 데이터 조회 흐름 정리 #10

Closed DaleSeo closed 1 month ago

DaleSeo commented 1 month ago

화면 별로 필요한 데이터 호출 정리

HC-kang commented 1 month ago
sequenceDiagram
    participant Client
    participant GitHub API

    Client->>GitHub API: Fetch all teams (with token)
    GitHub API-->>Client: Return list of teams

    loop For each team
        Client->>GitHub API: Fetch team members (with token)
        GitHub API-->>Client: Return team member lists
    end

    Client->>GitHub API: Query directory structure<br>(GET /repos/DaleStudy/leetcode-study/git/trees/main?recursive=1)
    GitHub API-->>Client: Return directory structure including files and folders

    Client->>Client: Process and gather cohort member lists
    Client->>Client: Calculate progress by analyzing matched files
    Client->>Client: Pass progress data to component for rendering

데이터 흐름은 간단하게 이렇게만 나오네요.

  1. 달레님께서 확인 요청하셨던 '레포지토리의 디렉토리를 필터링'할 수 있는 기능은 제공되지 않는것같습니다. 오직 특정 브랜치나 태그에 대한 조회만 가능해 보입니다.

  2. 또한 생각보다는 성능상 문제도 프리페칭 한다면 어느정도 감수할만 해 보입니다.

간단한 브라우저 테스트 기준으로는 아래와 같습니다.

fetched in 476ms (No throttle) fetched in 497ms (Fast 4G) fetched in 1060ms (Slow 4G) fetched in 3596ms (3G)

아래는 추가적으로 한번 서버에 붙여본 report API입니다..ㅎㅎ

DaleStudy report

DaleSeo commented 1 month ago

@HC-kang 님, Mermaid로 시각화도 해주시고 멋지십니다. 아래 피드백 드립니다.

HC-kang commented 1 month ago

@DaleSeo 님, 피드백 감사합니다

추가적으로 고려할만한 요소가 몇 가지 있습니다.

  1. 사용자 계정과, 제출하는 파일의 이름이 일치하지 않을 수 있습니다. 이러한 경우, 사용자 계정과 파일 이름을 매핑하는 정보를 추가로 관리해야 할 것으로 보입니다. +@) 현재는 중도에 제출 파일명이 변경되는 케이스는 처리하고있지 않습니다.

    {
        // 1기
        "meoooh": "han",
        "koreas9408": "seunghyun-lim",
        "leokim0922": "leo",
    
        // 2기
        "obzva": "flynn",
        "kim-young": "kimyoung",
        "kjb512": "kayden",
        "lymchgmk": "egon",
        "jeonghwanmin": "hwanmini",
    };
  2. 제출한 파일명의 오탈자나, 잘못된 파일명을 사용할 수 있습니다. 이 경우, 현재로서는 확인이 어렵습니다.

  3. 현재는 하나의 문제를 여러 언어로 제출한 경우에도 1문제 풀이로 처리하고있습니다. 이번이 아니더라도, 추후 리더보드에 다른 언어로 제출한 경우도 포함하면 좋을 것 같습니다.

DaleSeo commented 1 month ago

사용자 계정과, 제출하는 파일의 이름이 일치하지 않는 경우는 별도의 티켓으로 나중에 시간되면 처리