Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

133 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KLAP CLI

소개

광운대학교 KLAS(종합정보시스템)를 대체하기 위한 크로스 플랫폼 CLI입니다. 현재는 one-shot 명령 중심으로 시작하며, 추후 Bubble Tea 기반 TUI와 앱 코어를 공유하는 하이브리드 앱으로 확장할 계획입니다.

기술 스택

  • Go
  • Swift (bridges/macos — macOS 연동 브리지)
  • macOS 26 이상의 Apple Speech.framework (강의 음성 전사)

주요 기능

  • 인증: 학번/비밀번호로 KLAS 로그인 검증, 비밀번호와 세션 쿠키는 OS 보안 저장소에 저장
  • 대시보드 / TUI: 학기별 현황을 한 번에 확인
  • 통합 검색: 과목·과제·공지·온라인 강의·학사일정을 한 번에 검색
  • 마감 관리: 과제, 미완료 온라인 강의/학습활동, 학사일정을 마감순으로 통합 조회
  • 과목/성적/출결/등수 조회
  • 강의평가: 기본은 미리보기만 출력, --yes가 있어야 실제 제출
  • 온라인 강의 다운로드: 동시 다운로드 수·저장 폴더 설정 가능, macOS 26+에서는 강의 음성 전사(.txt)까지 지원
  • Reminder(미리 알림) 연동: 마감 1일 전 알림 자동 생성
  • 디스크 캐시: 대시보드/목록 조회는 기본 5분 캐시, --refresh로 즉시 갱신

설치 및 개발 실행

go run ./cmd/klap --help

명령어

인증 / 사용자

klap auth
klap user list
klap user select <학번>
klap user rm <학번>

대시보드 / 통합 검색 / 마감

klap dashboard
klap dashboard --refresh
klap tui
klap search <키워드>
klap search <키워드> --type assignment
klap due
klap due --week
klap due --days 30

학기 / 과목

klap term list
klap term select <학기번호|학기값>
klap course list
klap course list --refresh
klap subject search --name 컴퓨터그래픽스 --professor 김동준
klap syllabus <과목명|과목번호|학정번호>
klap syllabus I040-3-3951-01 --term 2026-1

학사일정

klap academic list
klap academic list --year 2026
klap academic list --refresh

출결 / 성적 / 등수

klap attendance
klap attendance list
klap attendance detail <과목명|번호|학정번호>
klap attendance cdp
klap grade
klap grade list
klap grade 2025-1
klap rank
klap rank list
klap rank 2025-1

강의평가

klap evaluation list
klap evaluation submit all
klap evaluation submit all --yes
klap evaluation submit <과목명|번호> --yes

과제 / 공지

klap assignment list
klap assignment list --course <과목명|번호>
klap assignment list --refresh
klap assignment detail <과목번호:과제번호>
klap assignment open <과목번호:과제번호>
klap assignment remind
klap assignment remind --auto
klap notice open <과목번호:게시판번호:글번호>

온라인 강의

klap lecture list --course <과목명|번호>
klap lecture status
klap lecture status --course <과목명|번호>
klap lecture status --refresh
klap lecture download status
klap lecture download open
klap lecture download <과목명|과목번호>
klap lecture download <과목번호:강의콘텐츠ID>
klap lecture open <과목번호:강의콘텐츠ID>
klap lecture attend <과목번호:강의콘텐츠ID>
klap lecture attend <과목번호:lrn-학습활동번호>
klap attend <과목명|번호>
klap attend all

설정

klap config reminder
klap config reminder --name "광운대학교"
klap config list
klap config set term 2026-1
klap config set reminder.name "광운대학교"
klap config set reminder.use-existing-list true
klap config download
klap config download --dir ~/Downloads/KLAP
klap config download --concurrency 8

동작 방식 하이라이트

  • klap auth는 학번/비밀번호를 입력받아 KLAS 로그인 API로 즉시 검증하며, 검증에 성공한 계정만 저장합니다.
  • klap term select로 선택한 학기는 course, assignment, notice, timetable, lecture, attend 명령에 공통 적용되며, 선택하지 않으면 KLAS가 반환하는 최신 학기를 사용합니다.
  • klap evaluation submit은 기본적으로 미리보기만 하고, --yes가 있을 때만 실제 저장 API를 호출합니다 (공학인증 추가 문항은 기본 제외).
  • 캐시는 특정 scope 단위로 지울 수 있습니다 (예: klap cache clear assignment).
  • klap lecture download는 CLI 출력으로 직접 다운로드하거나, klap tui의 Lectures 화면에서 d → Space로 대상 선택 → 전사 여부 선택 후 진행률을 보며 다운로드할 수 있습니다.
  • Reminder 기본 목록 이름은 Kwangwoon Univ.이며, --use-existing-list를 쓰면 새 목록을 만들지 않고 지정한 기존 목록만 사용합니다.

아키텍처

TUI 확장을 고려한 패키지 경계와 마이그레이션 계획은 docs/ARCHITECTURE.md를 기준으로 합니다.

About

광운대학교 LMS(KLAS)를 대체하는 학사정보 크로스 플랫폼 CLI (Go)

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages