Skip to content

TODO: SSUrade 구조 재작성 및 문서화 #14

@nnnlog

Description

@nnnlog

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 documentationenhancementNew feature or requesthelp wantedExtra attention is neededtodo

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions