diff --git a/src/main/java/com/example/smartair/controller/homecontroller/HomeController.java b/src/main/java/com/example/smartair/controller/HomeController.java similarity index 95% rename from src/main/java/com/example/smartair/controller/homecontroller/HomeController.java rename to src/main/java/com/example/smartair/controller/HomeController.java index 24c3eb9..603980c 100644 --- a/src/main/java/com/example/smartair/controller/homecontroller/HomeController.java +++ b/src/main/java/com/example/smartair/controller/HomeController.java @@ -1,4 +1,4 @@ -package com.example.smartair.controller.homecontroller; +package com.example.smartair.controller; import ch.qos.logback.core.model.Model; import com.example.smartair.dto.TrackProgressDto; diff --git a/src/main/java/com/example/smartair/controller/StudentDataController.java b/src/main/java/com/example/smartair/controller/StudentDataController.java new file mode 100644 index 0000000..cb579ff --- /dev/null +++ b/src/main/java/com/example/smartair/controller/StudentDataController.java @@ -0,0 +1,4 @@ +package com.example.smartair.controller; + +public class StudentDataController { +} diff --git a/src/main/java/com/example/smartair/controller/TrackController.java b/src/main/java/com/example/smartair/controller/TrackController.java new file mode 100644 index 0000000..96f7a5a --- /dev/null +++ b/src/main/java/com/example/smartair/controller/TrackController.java @@ -0,0 +1,4 @@ +package com.example.smartair.controller; + +public class TrackController { +} diff --git a/src/main/java/com/example/smartair/dto/CourseStatusDto.java b/src/main/java/com/example/smartair/dto/CourseStatusDto.java new file mode 100644 index 0000000..05a476f --- /dev/null +++ b/src/main/java/com/example/smartair/dto/CourseStatusDto.java @@ -0,0 +1,19 @@ +package com.example.smartair.dto; + +import lombok.Getter; +import lombok.Setter; + +/** + * 과목 정보 DTO + * (title, year, semester, code, status) + */ +@Getter +@Setter +public class CourseStatusDto { + + private String title; // 과목명 (기존 courseName) + private String year; // 이수 학년 (예: "전학년") + private String semester; // 이수 학기 (예: "전학기") + private String code; // 과목 코드 (기존 courseCode) + private String status; // 이수 상태 ("COMPLETED", "SCHEDULED", "NONE") +} diff --git a/src/main/java/com/example/smartair/dto/TrackDetailDto.java b/src/main/java/com/example/smartair/dto/TrackDetailDto.java new file mode 100644 index 0000000..dea047b --- /dev/null +++ b/src/main/java/com/example/smartair/dto/TrackDetailDto.java @@ -0,0 +1,21 @@ +package com.example.smartair.dto; + +import lombok.Getter; +import lombok.Setter; +import java.util.List; + +/** + * 상세 UI 화면의 트랙 탭 하나의 전체 정보를 담는 DTO + * 새로 정의된 CourseStatusDto를 사용 + */ +@Getter +@Setter +public class TrackDetailDto { + + private String trackName; // 트랙 이름 + private int completedCount; // 이수한 과목 수 + private int requiredCount = 6; // 이수 필요 과목 수 + + // 리스트의 타입이 새로운 CourseStatusDto로 변경 + private List courses; +} diff --git a/src/main/java/com/example/smartair/entity/TrackCourse.java b/src/main/java/com/example/smartair/entity/TrackCourse.java index 968b5cd..986205b 100644 --- a/src/main/java/com/example/smartair/entity/TrackCourse.java +++ b/src/main/java/com/example/smartair/entity/TrackCourse.java @@ -11,9 +11,11 @@ public class TrackCourse { private Long id; private String courseName; // 현재 과목명 private String courseAlias; // 구(과거) 과목명 + private String courseCode; // 과목 코드 (DTO의 'code'에 해당) + private String academicYear; // 이수 추천 학년 (DTO의 'year'에 해당) + private String academicSemester; // 이수 추천 학기 (DTO의 'semester'에 해당) @ManyToOne @JoinColumn(name = "track_id") private Track track; - // Getters and Setters } diff --git a/src/main/java/com/example/smartair/repository/ScheduledCourseRepository.java b/src/main/java/com/example/smartair/repository/ScheduledCourseRepository.java new file mode 100644 index 0000000..6c1f48e --- /dev/null +++ b/src/main/java/com/example/smartair/repository/ScheduledCourseRepository.java @@ -0,0 +1,4 @@ +package com.example.smartair.repository; + +public class ScheduledCourseRepository { +} diff --git a/src/main/java/com/example/smartair/repository/UserRepository.java b/src/main/java/com/example/smartair/repository/UserRepository.java new file mode 100644 index 0000000..f9d6330 --- /dev/null +++ b/src/main/java/com/example/smartair/repository/UserRepository.java @@ -0,0 +1,4 @@ +package com.example.smartair.repository; + +public class UserRepository { +} diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql new file mode 100644 index 0000000..65a65bf --- /dev/null +++ b/src/main/resources/data.sql @@ -0,0 +1,140 @@ +-- 기존 데이터 초기화 (테스트 시 용이) +DELETE FROM track_course; +DELETE FROM track; + + +-- ================================================================================= +-- 1. 컴퓨터공학과 트랙 +-- ================================================================================= + +-- 1-1. '인공지능시스템' 트랙 (ID: 1) +INSERT INTO track (id, department, name) VALUES (1, '컴퓨터공학과', '인공지능시스템'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (1, 'K-MOOC:모두를 위한 머신러닝', NULL, 'CS1001', '2학년', '전학기'), + (1, 'K-MOOC: 생성형 인공지능 입문', NULL, 'CS1002', '4학년', '전학기'), + (1, '인공지능', NULL, 'CS3001', '3학년', '2학기'), + (1, '패턴인식', NULL, 'CS4001', '4학년', '2학기'), + (1, 'Human-Al Interaction', 'HCI 개론', 'CS4002', '4학년', '1학기'), + (1, '지능형 정보검색', '정보검색', 'CS4003', '4학년', '2학기'), + (1, '인공지능시스템', NULL, 'CS4004', '4학년', '1학기'), + (1, '지능형앱프로그래밍', NULL, 'CS3002', '3학년', '2학기'), + (1, '강화학습', NULL, 'CS4005', '4학년', '2학기'), + (1, '자연어처리', NULL, 'CS4006', '4학년', '1학기'), + (1, '고성능인공지능프로그래밍', NULL, 'CS4007', '4학년', '2학기'), + (1, '딥러닝', NULL, 'CS4008', '3학년', '1학기'); + +-- 1-2. '메타버스 플랫폼' 트랙 (ID: 2) +INSERT INTO track (id, department, name) VALUES (2, '컴퓨터공학과', '메타버스 플랫폼'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (2, 'K-MOOC:멀티미디어', NULL, 'CS1003', '1학년', '2학기'), + (2, '컴퓨터그래픽스', NULL, 'CS3003', '3학년', '1학기'), + (2, '디지털신호처리', NULL, 'CS3004', '3학년', '1학기'), + (2, '가상현실', NULL, 'CS4009', '4학년', '1학기'), + (2, '영상처리', NULL, 'CS4010', '4학년', '1학기'), + (2, 'Human-Al Interaction', 'HCI 개론', 'CS4002', '4학년', '1학기'), + (2, '웹기반시스템', NULL, 'CS3005', '3학년', '2학기'), + (2, '멀티코어프로그래밍', NULL, 'CS4011', '4학년', '1학기'), + (2, '컴퓨터비전', '컴퓨터비전시스템', 'CS4012', '4학년', '1학기'), + (2, '메타버스시스템', NULL, 'CS4013', '4학년', '2학기'), + (2, '메타버스데이터처리', NULL, 'CS4014', '4학년', '2학기'), + (2, '블록체인', NULL, 'CS4015', '4학년', '2학기'); + +-- 1-3. '클라우드 컴퓨팅' 트랙 (ID: 3) +INSERT INTO track (id, department, name) VALUES (3, '컴퓨터공학과', '클라우드 컴퓨팅'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (3, '웹프로그래밍', NULL, 'CS2001', '2학년', '1학기'), + (3, '문제해결및실습: JAVA', NULL, 'CS2002', '2학년', '1학기'), + (3, '운영체제', NULL, 'CS3006', '3학년', '1학기'), + (3, '데이터베이스', NULL, 'CS3007', '3학년', '2학기'), + (3, '컴퓨터네트워크', NULL, 'CS3008', '3학년', '2학기'), + (3, '리눅스프로그래밍및실습', 'Unix프로그래밍', 'CS3009', '3학년', '1학기'), + (3, '웹기반시스템', NULL, 'CS3005', '3학년', '2학기'), + (3, 'XML프로그래밍', NULL, 'CS3010', '3학년', '2학기'), + (3, '무선통신', NULL, 'CS4016', '4학년', '1학기'), + (3, '정보보호개론', NULL, 'CS4017', '4학년', '1학기'), + (3, '지능형네트워크프로그래밍', '네트워크프로그래밍', 'CS4018', '4학년', '1학기'), + (3, 'Al 네트워킹', NULL, 'CS4019', '4학년', '2학기'); + + +-- ================================================================================= +-- 2. 콘텐츠소프트웨어학과 트랙 +-- ================================================================================= + +-- 2-1. '공간비주얼 SW' 트랙 (ID: 4) +INSERT INTO track (id, department, name) VALUES (4, '콘텐츠소프트웨어학과', '공간비주얼 SW'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (4, '디지털이미지프로그래밍', '멀티미디어프로그래밍', 'CS2003', '2학년', '2학기'), + (4, '일반물리및시뮬레이션', NULL, 'CS2004', '2학년', '1학기'), + (4, '실시간컴퓨터그래픽스', '컴퓨터그래픽스', 'CS3011', '3학년', '1학기'), + (4, '응용수치해석및시각화', '수치해석', 'CS3012', '3학년', '1학기'), + (4, '실세계모델링 및렌더링', NULL, 'CS4020', '4학년', '1학기'), + (4, '컴퓨터애니메이션', NULL, 'CS4021', '4학년', '2학기'), + (4, '딥러닝개론', '인공지능', 'CS3013', '3학년', '1학기'), + (4, '가상현실', NULL, 'CS4009', '4학년', '1학기'), + (4, '컴퓨터비전및실습', '컴퓨터비전시스템', 'CS4022', '4학년', '1학기'), + (4, '생성형AI', NULL, 'CS4023', '4학년', '2학기'), + (4, '디지털트윈', NULL, 'CS4024', '4학년', '2학기'), + (4, '증강현실', NULL, 'CS4025', '4학년', '2학기'); + +-- 2-2. '인터렉티브 플랫폼' 트랙 (ID: 5) +INSERT INTO track (id, department, name) VALUES (5, '콘텐츠소프트웨어학과', '인터렉티브 플랫폼'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (5, '객체지향프로그래밍:C++', '문제해결및실습:C++', 'SW2001', '2학년', '1학기'), + (5, '객체지향프로그래밍: JAVA', '문제해결 및실습: JAVA', 'SW2002', '2학년', '1학기'), + (5, '실시간컴퓨터그래픽스', '컴퓨터그래픽스', 'SW3001', '3학년', '1학기'), + (5, '객체지향XR 프로그래밍', NULL, 'SW3002', '3학년', '2학기'), + (5, 'XR엔진개론', NULL, 'SW2003', '2학년', '2학기'), + (5, '웹기반프로그래밍', '웹프로그래밍', 'SW2004', '2학년', '1학기'), + (5, '딥러닝개론', '인공지능', 'SW3003', '3학년', '1학기'), + (5, '음성및오디오처리', '음성오디오처리', 'SW4001', '4학년', '1학기'), + (5, '생성형AI', NULL, 'SW4002', '4학년', '2학기'), + (5, 'UI/UX디자인개론', NULL, 'SW2005', '2학년', '2학기'), + (5, '메타버스시스템', NULL, 'SW4003', '4학년', '2학기'), + (5, 'HCI', 'HCI개론', 'SW4004', '4학년', '1학기'); + + +-- ================================================================================= +-- 3. 인공지능데이터사이언스학과 트랙 +-- ================================================================================= + +-- 3-1. '지능형에이전트' 트랙 (ID: 6) +INSERT INTO track (id, department, name) VALUES (6, '인공지능데이터사이언스학과', '지능형에이전트'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (6, '기계학습개론', NULL, 'SW3004', '3학년', '1학기'), + (6, '고급인공지능활용', NULL, 'SW4005', '4학년', '1학기'), + (6, '웹프로그래밍', NULL, 'SW2004', '2학년', '1학기'), + (6, '딥러닝실습', '파이썬기반딥러닝', 'SW3005', '3학년', '2학기'), + (6, '딥러닝개론', NULL, 'SW3003', '3학년', '1학기'), + (6, '시계열분석', '시계열분석및예측', 'SW4006', '4학년', '1학기'), + (6, '패턴인식', NULL, 'SW4007', '4학년', '1학기'), + (6, '자연어처리', NULL, 'SW4008', '4학년', '2학기'), + (6, '강화학습', NULL, 'SW4009', '4학년', '2학기'), + (6, '인공지능문제해결및실습', NULL, 'SW4010', '4학년', '2학기'); + +-- 3-2. 'AI 콘텐츠' 트랙 (ID: 7) +INSERT INTO track (id, department, name) VALUES (7, '인공지능데이터사이언스학과', 'AI 콘텐츠'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (7, '기계학습개론', NULL, 'AI3001', '3학년', '1학기'), + (7, '인공지능수학1,2', NULL, 'AI1001', '1학년', '1학기'), + (7, '디지털신호처리', NULL, 'AI3002', '3학년', '1학기'), + (7, '딥러닝실습', '파이썬기반딥러닝', 'AI3003', '3학년', '2학기'), + (7, '딥러닝개론', NULL, 'AI3004', '3학년', '1학기'), + (7, '영상처리', NULL, 'AI3005', '3학년', '2학기'), + (7, '컴퓨터그래픽스', NULL, 'AI3006', '3학년', '1학기'), + (7, '컴퓨터비전', NULL, 'AI4001', '4학년', '1학기'), + (7, 'AR/VR/MR', NULL, 'AI4002', '4학년', '2학기'), + (7, 'Human-Al Interaction', NULL, 'AI4003', '4학년', '1학기'); + +-- 3-3. '데이터인텔리전스' 트랙 (ID: 8) +INSERT INTO track (id, department, name) VALUES (8, '인공지능데이터사이언스학과', '데이터인텔리전스'); +INSERT INTO track_course (track_id, course_name, course_alias, course_code, academic_year, academic_semester) VALUES + (8, '기계학습개론', NULL, 'AI3001', '3학년', '1학기'), + (8, '데이터분석개론', NULL, 'AI2001', '2학년', '1학기'), + (8, '딥러닝개론', NULL, 'AI3004', '3학년', '1학기'), + (8, '데이터베이스', NULL, 'AI3007', '3학년', '2학기'), + (8, '시계열분석', '시계열분석및예측', 'AI4004', '4학년', '1학기'), + (8, '딥러닝실습', '파이썬기반딥러닝', 'AI3003', '3학년', '2학기'), + (8, '데이터시각화', NULL, 'AI4005', '4학년', '1학기'), + (8, '설명가능한인공지능', NULL, 'AI4006', '4학년', '2학기'), + (8, '대용량데이터처리', NULL, 'AI4007', '4학년', '2학기'), + (8, '데이터문제해결및실습', NULL, 'AI4008', '4학년', '2학기'); \ No newline at end of file