Skip to content

I‐CURRICULUM ADMIN Wiki

Yeongggg edited this page Oct 10, 2024 · 6 revisions

01 소개 🌟

초기에는 데이터 “curriculum” 등을 DataBase에 집어넣을 필요가 있습니다.
학과별 교과 과정이 변경됨에 따라 수정할 필요가 있습니다.

따라서 "관리자 페이지"를 통해 curriculum 데이터를 효율적으로 관리하고자 합니다.


02 기능 🔧

기능 소개에 앞서, 관리자 페이지의 흐름에 대해 설명드리겠습니다.

  1. 저장하기: 작업하고 싶은 curriculum 데이터가 DB에 존재하지 않을 경우, "저장하기" 버튼을 통해 데이터를 저장합니다.
  2. 조회하기: 데이터가 이미 존재하거나 저장한 경우, "조회하기" 버튼을 통해 데이터를 불러옵니다.
  3. 수정하기: 불러온 데이터에 대해 자신이 조사한 과 curriculum에 맞게 수정 후 "수정하기" 버튼을 통해 데이터를 업데이트합니다.
  4. 삭제하기: 데이터 삭제가 필요할 경우, "삭제하기" 버튼을 통해 삭제합니다.

저장하기 (Save) 💾

자신이 저장하고자 커리큘럼데이터를 전공, 학과, 년도를 선택한 후 JSON 형태의 커리큘럼 데이터를 다음과 같이 필드에 입력합니다.

  1. 복사 붙여넣기: 입련란에 JSON을 복사하여 붙여넣기 하면 됩니다.
  2. 파일 업로드하기: 로컬 환경에 해당 전공, 학과, 년도에 대한 JSON 파일이 존재한다면, 파일 업로드를 통해 자동으로 필드를 채울 수 있습니다.
  3. 크롤링 API 호출: 크롤링 버튼을 누르면, 3~5초 후 자동으로 필드가 채워집니다. 이때 주의사항: 불러온 데이터의 맨 위와 아래의 '['와 ']'를 제거해야 합니다.

1

위와 같이 정상적으로 JSON 파일을 필드에 입력하셨다면, "커리큘럼 등록하기" 버튼을 통해 새로운 데이터를 저장할 수 있습니다.

[결과] 📊

  • Case 1: 기존 데이터가 존재하지 않는 경우

    2

  • Case 2: 해당 전공, 학과, 년도에 대한 데이터가 존재하는 경우

    3

    이 경우에는 "조회하기" 버튼을 통해 데이터를 조회한 후 수정하시길 바랍니다.


조회하기 & 수정하기 🔍✏️

자신이 조회하고자 하는 커리큘럼 데이터를 전공, 학과, 년도를 선택한 후 조회합니다.
불러온 데이터에 대해 해당 학과 커리큘럼에 맞는 데이터를 필드값에 채워넣습니다.

주의: 필드에 넣는 값은 ,를 구분자로 인식합니다. 오탈자 여부만 신경 써주시면 감사하겠습니다.
예시)

  • 핵심교양1, 핵심교양2 (O)
  • 핵심교양1,핵심교양2 (O)
  • 핵심고향1, 핵심교양2 (X)

스크린샷 2024-10-10 오후 11 06 54

엔티티별 채워야 하는 데이터 예시


입력값 안내 - core ⚙️

@Getter
@JsonProperty("영역_지정여부")
private Boolean isAreaFixed;

@Getter
@JsonProperty("요구학점")
private Integer requiredCredit;

@Getter
@JsonProperty("필수영역")
private Set<Category> requiredAreaSet = new HashSet<>();

@JsonProperty("영역별_지정과목")
private Map<Category, Set<String>> areaDeterminedCodeMap = new HashMap<>();

@JsonProperty("영역별_대체과목")
private Map<Category, Set<String>> areaAlternativeCodeMap = new HashMap<>();

@JsonProperty("추가정보")
private Map<String, Object> additionalInfoMap = new HashMap<>();
  • 영역 지정 여부:
    • true / false (예: 버튼 클릭)
  • 요구 학점:
    • 0 ~ 12 사이의 정수 (예: 12)
  • 필수 영역:
    • 해당 학과의 핵심교양 필수 영역
    • 예: 핵심교양1, 핵심교양2, 핵심교양3 ...

스크린샷 2024-10-10 오후 11 07 15

  • 영역별 대체 과목:
    • 해당 학과 커리큘럼에 핵심교양에 대한 영역별 대체 과목 데이터를 입력합니다.
    • 만일 존재하지 않으면 해당 필드는 공란으로 남겨두세요.
    • 예: CSE1234 (여러 개인 경우: CSE1234, CSE1235)

스크린샷 2024-10-10 오후 11 07 23

  • 영역별 지정 과목:
    • 해당 학과 커리큘럼에 핵심교양에 대한 영역별 지정 과목 데이터를 입력합니다.
    • 만일 존재하지 않으면 해당 필드는 공란으로 남겨두세요.
    • 예: CSE1234 (여러 개인 경우: CSE1234, CSE1235)

스크린샷 2024-10-10 오후 11 07 32


입력값 안내 - swAi ⚙️

@Getter
@JsonProperty("인정과목")
private Set<String> approvedCodeSet = new HashSet<>();

@Getter
@JsonProperty("영역대체과목")
private Set<String> areaAlternativeCodeSet = new HashSet<>();

@Getter
@JsonProperty("필요학점")
private Integer requiredCredit;

@JsonProperty("추가정보")
private Map<String, Object> additionalInfoMap = new HashMap<>();
  • 인정과목:
    • 해당 학과의 swAi 인정과목
    • 예: CSE1234 (여러 개인 경우: CSE1234, CSE1235)
  • 영역대체과목:
    • 해당 학과의 swAi 대체과목
    • 예: CSE1234 (여러 개인 경우: CSE1234, CSE1235)
  • 필수학점:
    • 해당 학과의 swAi 필수 학점
    • 예: '0' / 필수학점 (int)

스크린샷 2024-10-10 오후 11 07 41


입력값 안내 - Creativity ⚙️

    @Getter
    @JsonProperty("인정과목")
    private Set<String> approvedCodeSet = new HashSet<>();

    @Getter
    @JsonProperty("요구학점")
    private Integer requiredCredit;

    @JsonProperty("추가정보")
    private Map<String, Object> additionalInfoMap = new HashMap<>();
  • 인정과목:
    • 해당 학과의 Creativity 인정과목
    • 만일 존재하지 않으면 해당 필드는 공란으로 남겨두세요.
    • 예: CSE1234 (여러 개인 경우: CSE1234, CSE1235)
  • 요구학점:
    • 해당 학과의 Creativity 요구학점
    • 만일 존재하지 않으면 0 으로 해주세요.
    • 예: 요구학점 (int)

스크린샷 2024-10-10 오후 11 07 48


입력값 안내 - RequireCredits ⚙️

   @JsonProperty("총필요학점")
    private Integer totalNeedCredit;

    @JsonProperty("단일전공_필요학점")
    private Integer singleNeedCredit;

    @JsonProperty("복수_연계_융합_전공_필요학점")
    private Integer secondNeedCredit;

    @JsonProperty("부전공_필요학점")
    private Integer minorNeedCredit;
  • 총 이수 학점:
    • 해당 학과의 총 이수 학점
    • 공란으로 남겨두면 안됩니다.
    • 예: 총 이수 학점 (int)
  • 단일 전공:
    • 해당 학과의 총 단일 전공
    • 공란으로 남겨두면 안됩니다.
    • 예: 단일 전공 (int)
  • 복수 연계 융합 전공:
    • 해당 학과의 복수 연계 융합 전공
    • 공란으로 남겨두면 안됩니다.
    • 예: 복수 연계 융합 전공 (int)
  • 부전공:
    • 해당 학괌의 부전공
    • 공란으로 남겨두면 안됩니다.
    • 예: 부전공 (int)

스크린샷 2024-10-10 오후 11 07 54


입력값 안내 - subjects ⚙️

    @Getter
    @JsonProperty("과목코드")
    private Set<String> codeSet = new HashSet<>();

    @JsonProperty("추가정보")
    private Map<String, Object> additionalInfoMap = new HashMap<>();
  • 전공필수과목:
    • 해당 학과의 전공필수과목
    • 공란으로 남겨두면 안됩니다.
    • 예: CSE1234, CSE1235, ...
  • 전공선택과목:
    • 해당 학과의 전공선택과목
    • 공란으로 남겨두면 안됩니다.
    • 예: CSE1234, CSE1235, ...
  • 교양필수과목:
    • 해당 학과의 교양필수과목
    • 공란으로 남겨두면 안됩니다.
    • 예: PYH1004, MTH1123, ...

스크린샷 2024-10-10 오후 11 08 02


입력값 안내 - AlternativeCourse⚙️

    @JsonProperty("대체과목코드")
    private Map<String, Set<String>> alternativeCourseCodeMap = new HashMap<>();
  • alternative:
    • 해당 학과의 특정 과목에 대한 대체과목 코드
    • 공란으로 남겨두면 안됩니다.
      • (추가) 버튼을 통해 새로운 과목코드에 대한 대체과목 코드를 저장할 수 있습니다.
      • (삭제) 버튼을 통해 기존의 과목코드에 대한 대체과목 코드를 삭제할 수 있습니다,
    • 만일 새로운 기준 과목코드와 대체과목코드를 저장했다면, 대체 과목 코드는 수정이 되지만, '기준과목코드'는 수정하면 안됩니다. 과목코드를 수정하는 경우 삭제 후 새로 만들길 바랍니다.
    • 예: 새로운 기준 과목코드 : CSE1234 (단일 값) , 대체 과목 코드 : CSE1111 (여러 개인 경우: CSE1111, CSE1235)

스크린샷 2024-10-10 오후 11 08 21

  • Case 1: + 버튼을 누른 경우

스크린샷 2024-10-10 오후 11 08 30

스크린샷 2024-10-10 오후 11 08 36

  • Case 2: - 버튼을 누른 경우

스크린샷 2024-10-11 오전 12 17 37

스크린샷 2024-10-11 오전 12 17 44


[결과] 📊

  • 변경사항 저장하기

스크린샷 2024-10-11 오전 12 17 54

스크린샷 2024-10-11 오전 12 18 00

삭제하기 🗑️

해당 커리큘럼 삭제하기 버튼을 누르면, 커리큘럼이 디비에서 삭제됩니다. 신중히 삭제하기 버튼을 누르시길 바랍니다.

스크린샷 2024-10-11 오전 12 18 15

스크린샷 2024-10-11 오전 12 18 19