-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededtodo
Description
SSUrade를 누구나 기여할 수 있는 것을 목표로, 구조 재작성, 문서화를 진행하려고 해요. #1 의 우선 순위보다 높게 잡으려고 하고, 졸업 전에 하는 것을 목표로 두려고 해요.
상태 관리 프레임워크의 도입 (High Priority)
- 현재 SSUrade의 UI 화면(view)은 첫 개발 이후로 수정된 적이 없어요.
- 이로 인해서 화면과 전역 데이터(성적 정보 등)가 강결합되어 있고, 유지 보수 및 가독성을 저해해요.
- https://docs.flutter.dev/data-and-backend/state-mgmt/options
- 상태 관리 프레임워크는 Bloc을 사용하고, 전체적인 구조는 Hexagonal(Clean) Architecture를 사용해요.
- Hexagonal Architecture에 있어서는 Dependency Injection을 사용해요.
크롤링 로직의 고립 (Isolate) (High Priority)
- 현재는 메인 스레드에서 웹뷰를 통해 크롤링하고 있어요.
- 이로 인해서, 크롤링 도중 timeout 이후 강제 중지(interrupt) 불가능, 성능 저하 문제가 발생해요.
- isolate 기능을 통해 별도 스레드에서 크롤링을 진행하도록 변경할 예정이에요.
- PoC 작성이 필요합니다.
- (upd) 웹뷰 의존성을 인증 관련 로직으로부터 제거해야 할 것으로 보여요.
- 현재 각 요청이 자동적으로 로그인 요청을 하도록 하고 있어요. 이 때문에, 로그인 요청에 mutex가 걸려 있는데 Isolate 등 멀티 스레딩 기반으로 변경하면 mutex를 사용하는 것이 까다로워요.
- 따라서, 해당 인증 로직을 재구상할 필요가 있어요.
크롤링 로직의 혼재 (Low Priority)
- 이전에 크롤링 부분을 재작성하긴 했으나, 여전히 크롤링 로직이 자바스크립트(usaint-injector)와 Flutter에 나뉘어 작성되어 있는 문제가 있어요.
- Flutter에 작성되어 있는 대부분의 크롤링 로직은 웹 페이지를 열고, 리다이렉션하는 부분이에요. (LoginSession 같은 경우는 쿠키 저장 등도 처리해요.)
- 기존 Flutter에서 진행하던 크롤링 로직을 별도의 JSON 파일에 작성하고, Flutter에서는 해당 JSON 파일을 읽고 실행시키는 방식으로 변경하려고 해요.
- 즉, 크롤링 로직을 재사용 가능하도록 완전히 별도 분리하려고 해요.
SSUrade 문서화
- 어느 정도 코드가 정리되면, SSUrade의 기능(PRD), 테크 스펙(구조, 상세한 크롤링 방식), 기여 가이드 등을 작성해요.
- 학생들을 위한 공익 목적의 프로젝트는 코드를 공개해야 한다고 생각해요, 또한 원하는 누구든지 이 프로젝트에 기여했으면 해요.
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededtodo