콘텐츠로 이동

Pro Sejongpeia · 세종대 개발자들의 작은 유토피아

세종대 개발에 필요한
모든 것을 한 번에

학번 인증부터 학과·강의·학사일정·학식까지. 로그인 없이 받는 학교 공개 데이터도 Java · Python · Node.js에서 같은 메서드, 같은 결과로 받습니다.

가볍고 빠르게 · 요청은 아끼고 · 비밀번호는 저장하지 않고 · 매일 실제 포털로 점검

  • Maven Central
  • PyPI
  • npm
  • License: MIT
  • Live portal check

무엇을 해 주나요

학번 인증 하나와, 로그인 없이 받는 학교 데이터입니다. 카드를 누르면 메서드와 결과 필드가 나옵니다.

왜 이 라이브러리인가

네 가지를 약속하고, 약속마다 코드나 테스트로 확인할 수 있는 근거를 붙였습니다.

  • 빠르고 가볍게

    • Python, Node는 런타임 의존성 0개 (표준 라이브러리만 사용)
    • 같은 요청은 캐시에서 바로 답하고, 학교 서버를 다시 부르지 않습니다
    • 통합 인증은 포털 로그인 1번으로 DHC와 SIS를 모두 조회합니다
    동작 규칙 보기
  • 요청은 아끼고

    • 결과를 메모리에 24시간 캐시, 같은 인자의 동시 호출은 요청 1번으로 합침
    • 호출 하나당 요청 1번 (학식 식당 목록만 번호 범위만큼 순서대로)
    • 실패는 60초 기억, 캐시는 최대 500개 (기본값)
    캐시와 실패 격리
  • 안전하게

    • 비밀번호를 저장하지 않고 오류 메시지에도 담지 않음
    • 첫 실패에서 멈춰 계정 잠금을 피하고, 잠긴 계정은 ACCOUNT_LOCKED로 알림
    • SIS 부가 필드에서 세션값·접속 IP·주민번호·계좌·주소 등 민감 키를 항상 제외
    로그인 판정과 계정 보호
  • 믿을 수 있게

    • 매일 09:00(KST) 세 언어가 실제 포털에 로그인하고, 실패하면 이슈가 자동으로 열림
    • 세 언어 결과를 spec/contract.json 한 곳으로 맞추고, 어긋나면 테스트 실패
    • 공개 메서드 목록이 소스·문서와 같은지 CI가 검사
    매일 도는 실제 포털 점검

30초면 첫 호출

설치하고 두 줄이면 됩니다. 아래 코드를 그대로 붙여 넣으세요.

로그인 없이 학과 코드 받기

SejongPublicData publicData = new SejongPublicData(); // Spring 에서는 빈으로 주입
List<Department> departments = publicData.departments("20", "2026", "20"); // 학부, 학기 값은 학교 값

학번 인증

// build.gradle: implementation "kr.suhsaechan:sejongpeia:<version>" (latest: central.sonatype.com/artifact/kr.suhsaechan/sejongpeia)
SejongAuthResult result = sejongAuthEngine.authenticate("21011234", "비밀번호");
result.getName(); // "홍길동"
result.getMajor(); // "컴퓨터공학과"

서버에서만 호출하세요. 학번과 비밀번호를 브라우저나 앱에서 직접 보내면 제3자 코드에 노출됩니다.

지금 바로 체험하기

본인 세종대 포털 계정으로 라이브러리가 실제로 무엇을 돌려주는지 확인해 보세요.

조회 방식

입력값은 저장하지 않습니다. 데모 서버(lab.suhsaechan.kr)가 이 라이브러리로 세종대 포털에 한 번 로그인하고 결과만 돌려줍니다.

인증 결과

왼쪽에 학번과 비밀번호를 넣고 인증하기를 누르세요.

세 언어가 모두 지원합니다

기능, 결과 필드, 에러 코드, 값 규칙이 같습니다. 어긋나면 공통 계약 테스트가 실패하도록 해 두었습니다.

기능JavaPythonNode.js
통합 인증학생 정보 + 고전독서 + 연락처, 로그인 1회Java: 지원Python: 지원Node.js: 지원
DHC · SIS 개별 인증필요한 쪽만 조회Java: 지원Python: 지원Node.js: 지원
학사 업무 기간수강신청, 성적 조회 등 (로그인 필요)Java: 지원Python: 지원Node.js: 지원
원문 · extra 옵션학교 원문 응답과 나머지 필드Java: 지원Python: 지원Node.js: 지원
학과 · 학기 코드소속 분류, 학기, 학과, 이수 구분, 선택 영역Java: 지원Python: 지원Node.js: 지원
개설강좌 검색학과 · 과목명 · 교수명Java: 지원Python: 지원Node.js: 지원
교육과정학년 · 학기 · 학점 · 교과목 개요Java: 지원Python: 지원Node.js: 지원
학사일정학부 · 대학원Java: 지원Python: 지원Node.js: 지원
기숙사 식단 · 공지7일 식단, 공지 검색Java: 지원Python: 지원Node.js: 지원
학식 식당 · 메뉴식당 목록과 메뉴, 가격Java: 지원Python: 지원Node.js: 지원
캠퍼스 장소건물 · 편의시설, 위도 · 경도Java: 지원Python: 지원Node.js: 지원
비교과 프로그램기간별 일정Java: 지원Python: 지원Node.js: 지원
에러 코드 10종같은 코드, 같은 의미Java: 지원Python: 지원Node.js: 지원
메모리 캐시 · 실패 격리공개 데이터 기본 24시간Java: 지원Python: 지원Node.js: 지원

실행 환경은 다릅니다. Java는 17 이상 (Spring Boot 3.x 자동 설정), Python은 3.9 이상, Node.js는 18 이상이며 Python과 Node.js는 외부 의존성이 없습니다. 이름 표기만 Python snake_case, Node.js와 Java camelCase로 다릅니다.

직접 구현하면 어려운 것들

포털 로그인은 눈에 보이는 것보다 훨씬 까다롭습니다. 아래를 모두 라이브러리가 대신 처리합니다. 카드를 누르면 자세한 설명이 나옵니다.

더 알아보기

이 프로젝트는 세종대 학생이 만든 개인 오픈소스입니다. 하위 호환을 보장하지 않으니 버전을 고정해서 쓰세요.

이 프로젝트는 세종대학교의 공식 제품이 아니며 세종대학교와 제휴 관계가 없습니다. 세종대학교 교표의 권리는 세종대학교에 있습니다.