Closed jiin-kim109 closed 1 year ago
위 Issue는 storage.js에서 두개의 functinon을 export 할 것을 요구하고 있습니다. (물론 export 하지 않는 function은 몇개든 상관 없습니다)
(1)번 JSON은 courses.js가 storage에 저장하는 JSON 입니다.
참고하실 수 있는 링크 입니다. https://github.com/jumbosushi/ubc-rmp/tree/master/src/data https://github.com/jumbosushi/ubc-rmp/blob/master/src/data/2019_W_UBC_courseToInstrID.json
즉 저희로 치면 https://www.sfu.ca/students/calendar/2023/spring/courses.html 페이지를 JSON으로 가공한다고 보면 될 것 같습니다.
여기는 instructor id를 사용했는데 저희는 session 코드(D100, D200 등)과 professor name 형태로 보관하면 좋을 것 같습니다.
courses.js가 storage에 저장하는 JSON의 주 목적은 이름 찾기 입니다. goSFU나 mySchedule의 교수님 이름들은 축약된 이름이 많아서 그대로 RMP 검색에 사용하기는 무리가 있을 것 같습니다.
가령 Steve Ko라는 이름이 Steve. K로 나와있고는 합니다. 당연히 이런 이름으로 RMP에 검색하면 결과가 잘 나오지 않습니다. 교수님을 특정할 수 있는건 그 외에는 유일하게 course session이 있는데 RMP는 이름으로 검색을 하니 바로 사용할 수 없습니다.
따라서 goSFU나 mySchedule에 RMP rating 정보를 그려줄 때 사이트 위 교수님 이름을 사용하기 보단, 먼저 storage로 부터 아래 JSON을 불러온 뒤 Course Session 코드를 사용하려 합니다 (D100, D200) 등. Academic Calander로 부터 course와 session을 모두 수집해 정리하는건 courses.js의 역활이고 storage.js는 그 결과를 저장할 JSON의 포맷, 저장을 위한 함수를 export, 그리고 validation만 수행하면 됩니다.
즉 goSFU session code(D100) -> professor name (courses.js가 저장한 JSON) -> RMP 검색 형태 입니다.
JSON 포맷은 대충 아래 정도로 만들면 될 것 같습니다. Format은 편하신대로 만들어 주세요. 저장할때 Validation이 수행되어야 할 점과 program name, course number, session code가 들어가면 괜찮습니다.
{ "ECON": { "110": [ { "D100": "prof name 1" } ] }, "CMPT": [ "300": [ { "D100": "prof name 2" }, { "D200": "prof name 3" } ] ] }
(2)번은 RMP 검색 결과 JSON 입니다.
https://www.ratemyprofessors.com/search/teachers?query=jason&sid=U2Nob29sLTE0ODI=
rmp.js가 전달 받은 세션 코드(e.g. CMPT300-D100)을 위 (1)번 JSON을 사용해 professor name을 뽑아낸 후, 위 링크처럼 rmp에 검색합니다.
그리고 그 결과를 다시 goSFU나 mySchedule에 렌더링하기 위해 돌려주는데, 다음번에 똑같은 이름으로 조회가 오면 다시 RMP까지 가서 검색하는건 낭비임으로 JSON형태로 storage에 일종의 캐시 형태로 저장합니다.
e.g.
{ "name": "Jason Bell", "quality": 3.7, "difficulty": 3.2, "would_like_to_retake_ratio": 0.26 }
똑같이 저장을 위한 함수를 export해주고 validation을 수행하는 코드를 넣으면 될 것 같습니다.
의존성 문제로 storage.js는 chrome.storage wrapper 역활만 수행합니다.
Description: storage access interface to provide access to chrome local storage providing a wrapper function of chrome.storage API.
JSON data to store:
Required features)
Acceptance Criteria: