DB 테이블 정보 및 스크립트 수정(20260303)
This commit is contained in:
@@ -1,12 +1,595 @@
|
|||||||
-- 팀원들이 공통으로 사용할 초기 테이블 구조 생성
|
-- 컨텐츠 등록
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
CREATE TABLE `edu`.`contents` (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
`content_id` VARCHAR(20) NOT NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
username VARCHAR(50) NOT NULL,
|
`category_code` VARCHAR(20) NULL COMMENT '카테고리', -- 카테고리
|
||||||
email VARCHAR(100) NOT NULL,
|
`category_group` VARCHAR(20) NULL COMMENT '케테고리구분', -- 케테고리구분
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
`title` VARCHAR(200) NULL COMMENT '콘텐츠명', -- 콘텐츠명
|
||||||
);
|
`description` TEXT NULL COMMENT '콘텐츠설명', -- 콘텐츠설명
|
||||||
|
`description2` TEXT NULL COMMENT '콘텐츠설명2', -- 콘텐츠설명2
|
||||||
|
`content_url` VARCHAR(200) NULL COMMENT '콘텐츠url', -- 콘텐츠url
|
||||||
|
`thumbnail_url` VARCHAR(200) NULL COMMENT '썸네일url', -- 썸네일url
|
||||||
|
`base_year` CHAR(4) NULL COMMENT '기준년도', -- 기준년도
|
||||||
|
`start_date` DATE NULL COMMENT '기준일자', -- 기준일자
|
||||||
|
`end_date` DATE NULL COMMENT '종료일자', -- 종료일자
|
||||||
|
`sort_order` INTEGER NULL COMMENT '정렬순번', -- 정렬순번
|
||||||
|
`goal_code` VARCHAR(20) NULL COMMENT '학습목표코드', -- 학습목표코드
|
||||||
|
`image_name` VARCHAR(200) NULL COMMENT '대표이미지명', -- 대표이미지명
|
||||||
|
`image_path` VARCHAR(200) NULL COMMENT '이미지경로', -- 이미지경로
|
||||||
|
`is_offer` CHAR(1) NULL COMMENT '추천콘텐츠적용여부', -- 추천콘텐츠적용여부
|
||||||
|
`offer_id` VARCHAR(20) NULL COMMENT '제안ID', -- 제안ID
|
||||||
|
`issue_type_code` VARCHAR(20) NULL COMMENT '인사이트이슈구분', -- 인사이트이슈구분
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '컨텐츠 등록';
|
||||||
|
|
||||||
-- 초기 테스트를 위한 더미 데이터 삽입 (선택 사항)
|
-- 컨텐츠 등록
|
||||||
INSERT INTO users (username, email) VALUES
|
ALTER TABLE `edu`.`contents`
|
||||||
('test_user_1', 'user1@hmac-edu.com'),
|
ADD CONSTRAINT `PK_contents` -- 컨텐츠 등록 기본키
|
||||||
('test_user_2', 'user2@hmac-edu.com');
|
PRIMARY KEY (
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 마이클래스 학습목표 등록
|
||||||
|
CREATE TABLE `edu`.`learning_goals` (
|
||||||
|
`goal_code` VARCHAR(20) NOT NULL COMMENT '학습목표 코드', -- 학습목표 코드
|
||||||
|
`title` VARCHAR(200) NULL COMMENT '학습목표제목', -- 학습목표제목
|
||||||
|
`base_year` CHAR(4) NULL COMMENT '기준년도', -- 기준년도
|
||||||
|
`end_date` DATE NULL COMMENT '종료일', -- 종료일
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`sort_order` INTEGER NULL COMMENT '정렬순번', -- 정렬순번
|
||||||
|
`remarks` VARCHAR(200) NULL COMMENT '비고', -- 비고
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '마이클래스 학습목표 등록';
|
||||||
|
|
||||||
|
-- 마이클래스 학습목표 등록
|
||||||
|
ALTER TABLE `edu`.`learning_goals`
|
||||||
|
ADD CONSTRAINT `PK_learning_goals` -- 마이클래스 학습목표 등록 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`goal_code` -- 학습목표 코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 코드상세
|
||||||
|
CREATE TABLE `edu`.`codes` (
|
||||||
|
`group_code` VARCHAR(10) NOT NULL COMMENT '메인코드', -- 메인코드
|
||||||
|
`code` VARCHAR(10) NOT NULL COMMENT '서브코드', -- 서브코드
|
||||||
|
`base_code` VARCHAR(20) NOT NULL COMMENT '기준코드', -- 기준코드
|
||||||
|
`code_name` VARCHAR(250) NULL COMMENT '코드명', -- 코드명
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용구분', -- 사용구분
|
||||||
|
`desc01` VARCHAR(250) NULL COMMENT '설명1', -- 설명1
|
||||||
|
`desc02` VARCHAR(250) NULL COMMENT '설명2', -- 설명2
|
||||||
|
`desc03` VARCHAR(250) NULL COMMENT '설명3', -- 설명3
|
||||||
|
`desc04` VARCHAR(250) NULL COMMENT '설명4', -- 설명4
|
||||||
|
`desc05` VARCHAR(250) NULL COMMENT '설명5', -- 설명5
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '코드상세';
|
||||||
|
|
||||||
|
-- 코드상세
|
||||||
|
ALTER TABLE `edu`.`codes`
|
||||||
|
ADD CONSTRAINT `PK_codes` -- 코드상세 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`group_code`, -- 메인코드
|
||||||
|
`code` -- 서브코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 통합인사정보
|
||||||
|
CREATE TABLE `edu`.`users` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`name` VARCHAR(100) NULL COMMENT '성명', -- 성명
|
||||||
|
`dept_name` VARCHAR(100) NULL COMMENT '부서', -- 부서
|
||||||
|
`rank_name` VARCHAR(100) NULL COMMENT '직위', -- 직위
|
||||||
|
`join_date` DATE NULL COMMENT '입사일', -- 입사일
|
||||||
|
`belong_comp` VARCHAR(100) NULL COMMENT '소속회사', -- 소속회사
|
||||||
|
`working_cpmp` VARCHAR(100) NULL COMMENT '근무회사', -- 근무회사
|
||||||
|
`intra_pw` VARCHAR(20) NULL COMMENT 'password' -- password
|
||||||
|
)
|
||||||
|
COMMENT '통합인사정보';
|
||||||
|
|
||||||
|
-- 통합인사정보
|
||||||
|
ALTER TABLE `edu`.`users`
|
||||||
|
ADD CONSTRAINT `PK_users` -- 통합인사정보 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 댓글정보
|
||||||
|
CREATE TABLE `edu`.`comments` (
|
||||||
|
`id` VARCHAR(12) NOT NULL COMMENT '댓글ID', -- 댓글ID
|
||||||
|
`parent_id` VARCHAR(12) NULL COMMENT '상위댓글ID', -- 상위댓글ID
|
||||||
|
`sys_comp_code` VARCHAR(20) NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`comment` VARCHAR(255) NULL COMMENT '내용', -- 내용
|
||||||
|
`content_id` INTEGER NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '댓글정보';
|
||||||
|
|
||||||
|
-- 댓글정보
|
||||||
|
ALTER TABLE `edu`.`comments`
|
||||||
|
ADD CONSTRAINT `PK_comments` -- 댓글정보 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`id` -- 댓글ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 학습이력
|
||||||
|
CREATE TABLE `edu`.`learning_histories` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`content_id` VARCHAR(20) NOT NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
|
`first_viewed_at` DATETIME NULL COMMENT '최초시청일시', -- 최초시청일시
|
||||||
|
`last_viewed_at` DATETIME NULL COMMENT '최종시청일시', -- 최종시청일시
|
||||||
|
`watch_tm` DECIMAL(18) NULL COMMENT '영상시작길이', -- 영상시작길이
|
||||||
|
`content_tm` DECIMAL(18) NULL COMMENT '영상길이', -- 영상길이
|
||||||
|
`all_tm` DECIMAL(18) NULL COMMENT '누적시청시간', -- 누적시청시간
|
||||||
|
`completed_at` DATETIME NULL COMMENT '학습완료일시', -- 학습완료일시
|
||||||
|
`comment` VARCHAR(200) NULL COMMENT '한줄소감', -- 한줄소감
|
||||||
|
`is_watching` CHAR(1) NULL COMMENT '시청중컨텐츠여부' -- 시청중컨텐츠여부
|
||||||
|
)
|
||||||
|
COMMENT '학습이력';
|
||||||
|
|
||||||
|
-- 학습이력
|
||||||
|
ALTER TABLE `edu`.`learning_histories`
|
||||||
|
ADD CONSTRAINT `PK_learning_histories` -- 학습이력 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠저장
|
||||||
|
CREATE TABLE `edu`.`content_wishlist` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`content_id` INTEGER NOT NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
|
`favorited_at` DATETIME NULL COMMENT '찜한일시', -- 찜한일시
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '컨텐츠저장';
|
||||||
|
|
||||||
|
-- 컨텐츠저장
|
||||||
|
ALTER TABLE `edu`.`content_wishlist`
|
||||||
|
ADD CONSTRAINT `PK_content_wishlist` -- 컨텐츠저장 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 사용자 키워드
|
||||||
|
CREATE TABLE `edu`.`user_keywords` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`keyword_code` VARCHAR(20) NOT NULL COMMENT '키워드코드', -- 키워드코드
|
||||||
|
`keyword_name` VARCHAR(100) NULL COMMENT '키워드명', -- 키워드명
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '사용자 키워드';
|
||||||
|
|
||||||
|
-- 사용자 키워드
|
||||||
|
ALTER TABLE `edu`.`user_keywords`
|
||||||
|
ADD CONSTRAINT `PK_user_keywords` -- 사용자 키워드 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`keyword_code` -- 키워드코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠제안하기
|
||||||
|
CREATE TABLE `edu`.`content_offer` (
|
||||||
|
`offer_id` VARCHAR(20) NOT NULL COMMENT '제안ID', -- 제안ID
|
||||||
|
`type_code` VARCHAR(20) NULL COMMENT '제안구분', -- 제안구분
|
||||||
|
`title` VARCHAR(200) NULL COMMENT '제목', -- 제목
|
||||||
|
`reference_url` VARCHAR(255) NULL COMMENT 'URL', -- URL
|
||||||
|
`reason` TEXT NULL COMMENT '추천이유', -- 추천이유
|
||||||
|
`status_code` VARCHAR(20) NULL COMMENT '제안상태', -- 제안상태
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일', -- 수정일
|
||||||
|
`member_id` VARCHAR(20) NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NULL COMMENT '기준법인' -- 기준법인
|
||||||
|
)
|
||||||
|
COMMENT '컨텐츠제안하기';
|
||||||
|
|
||||||
|
-- 컨텐츠제안하기
|
||||||
|
ALTER TABLE `edu`.`content_offer`
|
||||||
|
ADD CONSTRAINT `PK_content_offer` -- 컨텐츠제안하기 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`offer_id` -- 제안ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 년도별학습레벨
|
||||||
|
CREATE TABLE `edu`.`yearly_learning_stats` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`stats_year` CHAR(4) NOT NULL COMMENT '년도', -- 년도
|
||||||
|
`learning_level` VARCHAR(20) NULL COMMENT '학습레벨', -- 학습레벨
|
||||||
|
`total_minutes` DECIMAL(18) NULL COMMENT '총학습시간(분)', -- 총학습시간(분)
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '년도별학습레벨';
|
||||||
|
|
||||||
|
-- 년도별학습레벨
|
||||||
|
ALTER TABLE `edu`.`yearly_learning_stats`
|
||||||
|
ADD CONSTRAINT `PK_yearly_learning_stats` -- 년도별학습레벨 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`stats_year` -- 년도
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠 키워드
|
||||||
|
CREATE TABLE `edu`.`content_keywords` (
|
||||||
|
`content_id` VARCHAR(20) NOT NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
|
`keyword_code` VARCHAR(20) NOT NULL COMMENT '키워드코드', -- 키워드코드
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '컨텐츠 키워드';
|
||||||
|
|
||||||
|
-- 컨텐츠 키워드
|
||||||
|
ALTER TABLE `edu`.`content_keywords`
|
||||||
|
ADD CONSTRAINT `PK_content_keywords` -- 컨텐츠 키워드 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`content_id`, -- 콘텐츠ID
|
||||||
|
`keyword_code` -- 키워드코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 접속이력
|
||||||
|
CREATE TABLE `edu`.`access_history` (
|
||||||
|
`accessed_at` TIMESTAMP NOT NULL COMMENT '접속일시', -- 접속일시
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT '사번', -- 사번
|
||||||
|
`sys_comp_code` VARCHAR(20) NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`ip_address` VARCHAR(20) NULL COMMENT '접속IP' -- 접속IP
|
||||||
|
)
|
||||||
|
COMMENT '접속이력';
|
||||||
|
|
||||||
|
-- 접속이력
|
||||||
|
ALTER TABLE `edu`.`access_history`
|
||||||
|
ADD CONSTRAINT `PK_access_history` -- 접속이력 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`accessed_at` -- 접속일시
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 코드마스터
|
||||||
|
CREATE TABLE `edu`.`code_group` (
|
||||||
|
`group_code` VARCHAR(10) NOT NULL COMMENT '메인코드', -- 메인코드
|
||||||
|
`group_name` VARCHAR(250) NULL COMMENT '코드명', -- 코드명
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용구분', -- 사용구분
|
||||||
|
`sort_order` INTEGER NULL COMMENT '정렬구분', -- 정렬구분
|
||||||
|
`comment` VARCHAR(250) NULL COMMENT '코멘트', -- 코멘트
|
||||||
|
`desc01` VARCHAR(250) NULL COMMENT '설명1', -- 설명1
|
||||||
|
`desc02` VARCHAR(250) NULL COMMENT '설명2', -- 설명2
|
||||||
|
`desc03` VARCHAR(250) NULL COMMENT '설명3', -- 설명3
|
||||||
|
`desc04` VARCHAR(250) NULL COMMENT '설명4', -- 설명4
|
||||||
|
`desc05` VARCHAR(250) NULL COMMENT '설명5', -- 설명5
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '코드마스터';
|
||||||
|
|
||||||
|
-- 코드마스터
|
||||||
|
ALTER TABLE `edu`.`code_group`
|
||||||
|
ADD CONSTRAINT `PK_code_group` -- 코드마스터 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`group_code` -- 메인코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 첨부파일
|
||||||
|
CREATE TABLE `edu`.`files` (
|
||||||
|
`content_id` VARCHAR(20) NOT NULL COMMENT '콘텐츠ID', -- 콘텐츠ID
|
||||||
|
`id` INTEGER NOT NULL COMMENT '파일ID', -- 파일ID
|
||||||
|
`file_name` VARCHAR(200) NULL COMMENT '파일명', -- 파일명
|
||||||
|
`file_type` VARCHAR(20) NULL COMMENT '파일구분', -- 파일구분
|
||||||
|
`file_path` VARCHAR(200) NULL COMMENT '저장위치', -- 저장위치
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '첨부파일';
|
||||||
|
|
||||||
|
-- 첨부파일
|
||||||
|
ALTER TABLE `edu`.`files`
|
||||||
|
ADD CONSTRAINT `PK_files` -- 첨부파일 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`content_id`, -- 콘텐츠ID
|
||||||
|
`id` -- 파일ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 선택학습목표
|
||||||
|
CREATE TABLE `edu`.`user_learning_goals` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`goal_code` VARCHAR(20) NOT NULL COMMENT '학습목표 코드', -- 학습목표 코드
|
||||||
|
`quarter` VARCHAR(20) NULL COMMENT '분기', -- 분기
|
||||||
|
`completed_date` DATE NULL COMMENT '학습완료일', -- 학습완료일
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '선택학습목표';
|
||||||
|
|
||||||
|
-- 선택학습목표
|
||||||
|
ALTER TABLE `edu`.`user_learning_goals`
|
||||||
|
ADD CONSTRAINT `PK_user_learning_goals` -- 선택학습목표 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`goal_code` -- 학습목표 코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 법인별키워드
|
||||||
|
CREATE TABLE `edu`.`recommend_keywords` (
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`keyword_code` VARCHAR(20) NOT NULL COMMENT '키워드코드', -- 키워드코드
|
||||||
|
`is_active` CHAR(1) NULL COMMENT '사용여부', -- 사용여부
|
||||||
|
`created_by` VARCHAR(20) NULL COMMENT '등록자', -- 등록자
|
||||||
|
`created_at` TIMESTAMP NULL COMMENT '등록일', -- 등록일
|
||||||
|
`updated_by` VARCHAR(20) NULL COMMENT '수정자', -- 수정자
|
||||||
|
`updated_at` TIMESTAMP NULL COMMENT '수정일' -- 수정일
|
||||||
|
)
|
||||||
|
COMMENT '법인별키워드';
|
||||||
|
|
||||||
|
-- 법인별키워드
|
||||||
|
ALTER TABLE `edu`.`recommend_keywords`
|
||||||
|
ADD CONSTRAINT `PK_recommend_keywords` -- 법인별키워드 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`keyword_code` -- 키워드코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 뱃지정보
|
||||||
|
CREATE TABLE `edu`.`user_badges` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`seq` INTEGER NOT NULL COMMENT '순번', -- 순번
|
||||||
|
`badge_code` VARCHAR(20) NULL COMMENT '뱃지코드', -- 뱃지코드
|
||||||
|
`issued_at` DATETIME NULL COMMENT '지급일자' -- 지급일자
|
||||||
|
)
|
||||||
|
COMMENT '뱃지정보';
|
||||||
|
|
||||||
|
-- 뱃지정보
|
||||||
|
ALTER TABLE `edu`.`user_badges`
|
||||||
|
ADD CONSTRAINT `PK_user_badges` -- 뱃지정보 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`seq` -- 순번
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 검색어이력
|
||||||
|
CREATE TABLE `edu`.`search_logs` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`sys_comp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`seq` INTEGER NOT NULL COMMENT '순번', -- 순번
|
||||||
|
`keyword` VARCHAR(50) NULL COMMENT '검색어', -- 검색어
|
||||||
|
`searched_at` DATETIME NULL COMMENT '등록일' -- 등록일
|
||||||
|
)
|
||||||
|
COMMENT '검색어이력';
|
||||||
|
|
||||||
|
-- 검색어이력
|
||||||
|
ALTER TABLE `edu`.`search_logs`
|
||||||
|
ADD CONSTRAINT `PK_search_logs` -- 검색어이력 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code`, -- 기준법인
|
||||||
|
`seq` -- 순번
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 알람이력
|
||||||
|
CREATE TABLE `edu`.`notifications` (
|
||||||
|
`member_id` VARCHAR(20) NOT NULL COMMENT 'id', -- id
|
||||||
|
`corp_code` VARCHAR(20) NOT NULL COMMENT '기준법인', -- 기준법인
|
||||||
|
`seq` INTEGER NOT NULL COMMENT '순번', -- 순번
|
||||||
|
`type_code` VARCHAR(20) NULL COMMENT '알람코드', -- 알람코드
|
||||||
|
`message` VARCHAR(255) NULL COMMENT '알람내용', -- 알람내용
|
||||||
|
`sent_at` DATETIME NULL COMMENT '알람일시' -- 알람일시
|
||||||
|
)
|
||||||
|
COMMENT '알람이력';
|
||||||
|
|
||||||
|
-- 알람이력
|
||||||
|
ALTER TABLE `edu`.`notifications`
|
||||||
|
ADD CONSTRAINT `PK_notifications` -- 알람이력 기본키
|
||||||
|
PRIMARY KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`corp_code`, -- 기준법인
|
||||||
|
`seq` -- 순번
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 코드상세
|
||||||
|
ALTER TABLE `edu`.`codes`
|
||||||
|
ADD CONSTRAINT `FK_code_group_TO_codes` -- 코드마스터 -> 코드상세
|
||||||
|
FOREIGN KEY (
|
||||||
|
`group_code` -- 메인코드
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`code_group` ( -- 코드마스터
|
||||||
|
`group_code` -- 메인코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 댓글정보
|
||||||
|
ALTER TABLE `edu`.`comments`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_comments` -- 통합인사정보 -> 댓글정보
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 학습이력
|
||||||
|
ALTER TABLE `edu`.`learning_histories`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_learning_histories` -- 통합인사정보 -> 학습이력
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 학습이력
|
||||||
|
ALTER TABLE `edu`.`learning_histories`
|
||||||
|
ADD CONSTRAINT `FK_contents_TO_learning_histories` -- 컨텐츠 등록 -> 학습이력
|
||||||
|
FOREIGN KEY (
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`contents` ( -- 컨텐츠 등록
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠저장
|
||||||
|
ALTER TABLE `edu`.`content_wishlist`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_content_wishlist` -- 통합인사정보 -> 컨텐츠저장
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 사용자 키워드
|
||||||
|
ALTER TABLE `edu`.`user_keywords`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_user_keywords` -- 통합인사정보 -> 사용자 키워드
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠제안하기
|
||||||
|
ALTER TABLE `edu`.`content_offer`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_content_offer` -- 통합인사정보 -> 컨텐츠제안하기
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 년도별학습레벨
|
||||||
|
ALTER TABLE `edu`.`yearly_learning_stats`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_yearly_learning_stats` -- 통합인사정보 -> 년도별학습레벨
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 컨텐츠 키워드
|
||||||
|
ALTER TABLE `edu`.`content_keywords`
|
||||||
|
ADD CONSTRAINT `FK_contents_TO_content_keywords` -- 컨텐츠 등록 -> 컨텐츠 키워드
|
||||||
|
FOREIGN KEY (
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`contents` ( -- 컨텐츠 등록
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 첨부파일
|
||||||
|
ALTER TABLE `edu`.`files`
|
||||||
|
ADD CONSTRAINT `FK_contents_TO_files` -- 컨텐츠 등록 -> 첨부파일
|
||||||
|
FOREIGN KEY (
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`contents` ( -- 컨텐츠 등록
|
||||||
|
`content_id` -- 콘텐츠ID
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 선택학습목표
|
||||||
|
ALTER TABLE `edu`.`user_learning_goals`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_user_learning_goals` -- 통합인사정보 -> 선택학습목표
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 선택학습목표
|
||||||
|
ALTER TABLE `edu`.`user_learning_goals`
|
||||||
|
ADD CONSTRAINT `FK_learning_goals_TO_user_learning_goals` -- 마이클래스 학습목표 등록 -> 선택학습목표
|
||||||
|
FOREIGN KEY (
|
||||||
|
`goal_code` -- 학습목표 코드
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`learning_goals` ( -- 마이클래스 학습목표 등록
|
||||||
|
`goal_code` -- 학습목표 코드
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 뱃지정보
|
||||||
|
ALTER TABLE `edu`.`user_badges`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_user_badges` -- 통합인사정보 -> 뱃지정보
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 검색어이력
|
||||||
|
ALTER TABLE `edu`.`search_logs`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_search_logs` -- 통합인사정보 -> 검색어이력
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 알람이력
|
||||||
|
ALTER TABLE `edu`.`notifications`
|
||||||
|
ADD CONSTRAINT `FK_users_TO_notifications` -- 통합인사정보 -> 알람이력
|
||||||
|
FOREIGN KEY (
|
||||||
|
`member_id`, -- id
|
||||||
|
`corp_code` -- 기준법인
|
||||||
|
)
|
||||||
|
REFERENCES `edu`.`users` ( -- 통합인사정보
|
||||||
|
`member_id`, -- id
|
||||||
|
`sys_comp_code` -- 기준법인
|
||||||
|
);
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* text - 텍스트 색상 */
|
/* text - 텍스트 색상 */
|
||||||
--text-intro-base: #1b1810;
|
--text-intro-base: #1b1810;
|
||||||
@@ -33,41 +34,32 @@
|
|||||||
--bg-base: #e4ddcf;
|
--bg-base: #e4ddcf;
|
||||||
--bg-primary: #ece3d2;
|
--bg-primary: #ece3d2;
|
||||||
--bg-secondary:
|
--bg-secondary:
|
||||||
radial-gradient(
|
radial-gradient(93.89% 93.89% at 49.32% 6.11%,
|
||||||
93.89% 93.89% at 49.32% 6.11%,
|
|
||||||
rgba(255, 255, 255, 0) 0%,
|
rgba(255, 255, 255, 0) 0%,
|
||||||
rgba(255, 255, 255, 0.11) 86.06%,
|
rgba(255, 255, 255, 0.11) 86.06%,
|
||||||
rgba(134, 114, 77, 0.2) 88.94%
|
rgba(134, 114, 77, 0.2) 88.94%),
|
||||||
),
|
|
||||||
linear-gradient(180deg, #f9f6f0 0%, #e6ddcc 100%);
|
linear-gradient(180deg, #f9f6f0 0%, #e6ddcc 100%);
|
||||||
--bg-main-card: rgba(255, 255, 255, 0.6);
|
--bg-main-card: rgba(255, 255, 255, 0.6);
|
||||||
--bg-intro-mask: #1b1810;
|
--bg-intro-mask: #1b1810;
|
||||||
--bg-intro: linear-gradient(
|
--bg-intro: linear-gradient(180deg,
|
||||||
180deg,
|
#f9f5f2 0%,
|
||||||
#f9f5f2 0%,
|
#fff 18.77%,
|
||||||
#fff 18.77%,
|
#fff 41.8%,
|
||||||
#fff 41.8%,
|
#ece8e4 100%);
|
||||||
#ece8e4 100%
|
|
||||||
);
|
|
||||||
--bg-main:
|
--bg-main:
|
||||||
linear-gradient(
|
linear-gradient(90deg,
|
||||||
90deg,
|
#0f3025 0%,
|
||||||
#0f3025 0%,
|
#194335 38%,
|
||||||
#194335 38%,
|
#0b221b 87.51%,
|
||||||
#0b221b 87.51%,
|
#0d231c 100%) top / 100% 114px no-repeat,
|
||||||
#0d231c 100%
|
|
||||||
)
|
|
||||||
top / 100% 114px no-repeat,
|
|
||||||
#ece3d2;
|
#ece3d2;
|
||||||
--bg-video: #1b1b1b;
|
--bg-video: #1b1b1b;
|
||||||
--bg-comment: #2a2a2a;
|
--bg-comment: #2a2a2a;
|
||||||
--bg-nav: linear-gradient(
|
--bg-nav: linear-gradient(90deg,
|
||||||
90deg,
|
#0f3025 0%,
|
||||||
#0f3025 0%,
|
#194335 38%,
|
||||||
#194335 38%,
|
#0b221b 87.51%,
|
||||||
#0b221b 87.51%,
|
#0d231c 100%);
|
||||||
#0d231c 100%
|
|
||||||
);
|
|
||||||
--bg-nav-depth: #fff;
|
--bg-nav-depth: #fff;
|
||||||
--bg-nav-alerts: #ff2200;
|
--bg-nav-alerts: #ff2200;
|
||||||
--bg-nav-alerts-hover: #188f6b;
|
--bg-nav-alerts-hover: #188f6b;
|
||||||
@@ -190,85 +182,111 @@
|
|||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes arrow-next {
|
@keyframes arrow-next {
|
||||||
0%, 100% {
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
right: 72px;
|
right: 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
right: 50px;
|
right: 50px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes bounce {
|
@keyframes bounce {
|
||||||
0%, 100% {
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
transform: translateX(-50%) translateY(0);
|
transform: translateX(-50%) translateY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
transform: translateX(-50%) translateY(-12px);
|
transform: translateX(-50%) translateY(-12px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes slideUp {
|
@keyframes slideUp {
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes scroll-down {
|
@keyframes scroll-down {
|
||||||
0% {
|
0% {
|
||||||
transform-origin: 50% 100%;
|
transform-origin: 50% 100%;
|
||||||
transform: scaleY(1);
|
transform: scaleY(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
transform-origin: 50% 100%;
|
transform-origin: 50% 100%;
|
||||||
transform: scaleY(0);
|
transform: scaleY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
50.1% {
|
50.1% {
|
||||||
transform-origin: 50% 0;
|
transform-origin: 50% 0;
|
||||||
transform: scaleY(0);
|
transform: scaleY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
transform-origin: 50% 0;
|
transform-origin: 50% 0;
|
||||||
transform: scaleY(1);
|
transform: scaleY(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
0%, 100% {
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
opacity: 0.2;
|
opacity: 0.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
opacity: 0.4;
|
opacity: 0.4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes borderFadeIn {
|
@keyframes borderFadeIn {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: scale(0.95);
|
transform: scale(0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes borderPulse {
|
@keyframes borderPulse {
|
||||||
0%, 100% {
|
|
||||||
|
0%,
|
||||||
|
100% {
|
||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
box-shadow: 0 0 20px rgba(255, 255, 255, 0.4);
|
box-shadow: 0 0 20px rgba(255, 255, 255, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
box-shadow: 0 0 30px rgba(255, 255, 255, 0.6);
|
box-shadow: 0 0 30px rgba(255, 255, 255, 0.6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "YeogiOttaeJalnan";
|
font-family: "YeogiOttaeJalnan";
|
||||||
src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_four@1.2/JalnanOTF00.woff") format("woff");
|
src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_four@1.2/JalnanOTF00.woff") format("woff");
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro {
|
.intro {
|
||||||
background: var(--bg-intro);
|
background: var(--bg-intro);
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .container {
|
.intro .container {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -286,12 +304,18 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .text-ani {
|
.intro .text-ani {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.intro .text-ani:has(.welcome span.show), .intro .text-ani:has(.update-line span.show), .intro .text-ani:has(.card.show), .intro .text-ani.animating {
|
|
||||||
|
.intro .text-ani:has(.welcome span.show),
|
||||||
|
.intro .text-ani:has(.update-line span.show),
|
||||||
|
.intro .text-ani:has(.card.show),
|
||||||
|
.intro .text-ani.animating {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .text-ani:has(.card.show) {
|
.intro .text-ani:has(.card.show) {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -301,83 +325,102 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .text-area {
|
.intro .text-area {
|
||||||
min-height: 160px;
|
min-height: 160px;
|
||||||
margin-bottom: 34px;
|
margin-bottom: 34px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .text-area:has(.greeting.hidden, .update-text.hidden) {
|
.intro .text-area:has(.greeting.hidden, .update-text.hidden) {
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .greeting {
|
.intro .greeting {
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 1024px) {
|
@media only screen and (min-width: 1024px) {
|
||||||
.intro .greeting {
|
.intro .greeting {
|
||||||
height: 656px;
|
height: 656px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .greeting {
|
.intro .greeting {
|
||||||
font-size: 2.8rem;
|
font-size: 2.8rem;
|
||||||
min-height: 15.8rem;
|
min-height: 15.8rem;
|
||||||
}
|
}
|
||||||
.intro .greeting p.welcome > *:nth-child(5) {
|
|
||||||
|
.intro .greeting p.welcome>*:nth-child(5) {
|
||||||
display: block;
|
display: block;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .name {
|
.intro .name {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .welcome span {
|
.intro .welcome span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(20px);
|
transform: translateY(20px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .welcome span.show {
|
.intro .welcome span.show {
|
||||||
animation: fadeInUp 0.4s forwards;
|
animation: fadeInUp 0.4s forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .welcome em {
|
.intro .welcome em {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .welcome {
|
.intro .welcome {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .update-text {
|
.intro .update-text {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .update-line {
|
.intro .update-line {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .update-line {
|
.intro .update-line {
|
||||||
font-size: 2.8rem;
|
font-size: 2.8rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .update-line:last-child {
|
.intro .update-line:last-child {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .update-line.bold,
|
.intro .update-line.bold,
|
||||||
.intro .update-line em {
|
.intro .update-line em {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.intro .update-line > span {
|
|
||||||
|
.intro .update-line>span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(100%);
|
transform: translateY(100%);
|
||||||
}
|
}
|
||||||
.intro .update-line > span.show {
|
|
||||||
|
.intro .update-line>span.show {
|
||||||
animation: slideUp 0.6s forwards;
|
animation: slideUp 0.6s forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-text {
|
.intro .cta-text {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
@@ -387,12 +430,14 @@
|
|||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .cta-text {
|
.intro .cta-text {
|
||||||
font-size: 2.8rem;
|
font-size: 2.8rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.intro .cta-text > div {
|
|
||||||
|
.intro .cta-text>div {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: var(--window-inner-height);
|
height: var(--window-inner-height);
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -400,34 +445,41 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.intro .cta-text > div:not(.mask) {
|
|
||||||
|
.intro .cta-text>div:not(.mask) {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
.intro .cta-text > div:not(.mask) .text-section {
|
|
||||||
|
.intro .cta-text>div:not(.mask) .text-section {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(20px);
|
transform: translateY(20px);
|
||||||
}
|
}
|
||||||
.intro .cta-text > div:not(.mask) .text-section:has(.show) {
|
|
||||||
|
.intro .cta-text>div:not(.mask) .text-section:has(.show) {
|
||||||
background-image: url(../images/intro/promise.svg);
|
background-image: url(../images/intro/promise.svg);
|
||||||
background-position: bottom;
|
background-position: bottom;
|
||||||
background-size: 586px auto;
|
background-size: 586px auto;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
animation: fadeInUp 0.5s forwards;
|
animation: fadeInUp 0.5s forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .cta-text > div:not(.mask) .text-section:has(.show) {
|
.intro .cta-text>div:not(.mask) .text-section:has(.show) {
|
||||||
background-size: 120% auto;
|
background-size: 120% auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.intro .cta-text > div:not(.mask) p {
|
|
||||||
|
.intro .cta-text>div:not(.mask) p {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(20px);
|
transform: translateY(20px);
|
||||||
}
|
}
|
||||||
.intro .cta-text > div:not(.mask) p.show {
|
|
||||||
|
.intro .cta-text>div:not(.mask) p.show {
|
||||||
animation: fadeInUp 0.5s forwards;
|
animation: fadeInUp 0.5s forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-text .text-section {
|
.intro .cta-text .text-section {
|
||||||
height: 260px;
|
height: 260px;
|
||||||
translate: 0 -35%;
|
translate: 0 -35%;
|
||||||
@@ -437,6 +489,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .cta-text .text-section {
|
.intro .cta-text .text-section {
|
||||||
width: calc(100% - 32px);
|
width: calc(100% - 32px);
|
||||||
@@ -445,12 +498,15 @@
|
|||||||
translate: 0 -40%;
|
translate: 0 -40%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-text .text-section.show {
|
.intro .cta-text .text-section.show {
|
||||||
animation: opacity 0.5s forwards;
|
animation: opacity 0.5s forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-text em {
|
.intro .cta-text em {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-btn {
|
.intro .cta-btn {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -472,6 +528,7 @@
|
|||||||
transform: translate(-50%, 25%) translateY(50px);
|
transform: translate(-50%, 25%) translateY(50px);
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .cta-btn {
|
.intro .cta-btn {
|
||||||
width: calc(100% - 32px);
|
width: calc(100% - 32px);
|
||||||
@@ -480,16 +537,19 @@
|
|||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 992px) {
|
@media only screen and (min-width: 992px) {
|
||||||
.intro .cta-btn {
|
.intro .cta-btn {
|
||||||
box-shadow: 0 -4px 4px 0 #e18d36 inset, 4px 4px 12px -4px rgba(220, 196, 172, 0.85);
|
box-shadow: 0 -4px 4px 0 #e18d36 inset, 4px 4px 12px -4px rgba(220, 196, 172, 0.85);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-btn.show {
|
.intro .cta-btn.show {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: translate(-50%, 25%) translateY(0);
|
transform: translate(-50%, 25%) translateY(0);
|
||||||
transition: all 0.3s linear;
|
transition: all 0.3s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-btn::after {
|
.intro .cta-btn::after {
|
||||||
content: " ";
|
content: " ";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -505,12 +565,13 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||||
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||||
-webkit-mask-composite: xor;
|
-webkit-mask-composite: xor;
|
||||||
mask-composite: exclude;
|
mask-composite: exclude;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .cta-btn .ico-arrow {
|
.intro .cta-btn .ico-arrow {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
@@ -526,6 +587,7 @@
|
|||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
animation: arrow-next 3s infinite ease-in-out;
|
animation: arrow-next 3s infinite ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .mask {
|
.intro .mask {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -554,6 +616,7 @@
|
|||||||
transition: mask-size 0.2s linear;
|
transition: mask-size 0.2s linear;
|
||||||
transition: mask-size 0.2s linear, -webkit-mask-size 0.2s linear;
|
transition: mask-size 0.2s linear, -webkit-mask-size 0.2s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .mask {
|
.intro .mask {
|
||||||
-webkit-mask-image: none;
|
-webkit-mask-image: none;
|
||||||
@@ -561,27 +624,33 @@
|
|||||||
clip-path: circle(0% at 50% 50%);
|
clip-path: circle(0% at 50% 50%);
|
||||||
transition: clip-path 3.5s ease-out;
|
transition: clip-path 3.5s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .mask.expand {
|
.intro .mask.expand {
|
||||||
clip-path: circle(300% at 50% 50%);
|
clip-path: circle(300% at 50% 50%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .mask .text-section {
|
.intro .mask .text-section {
|
||||||
background-image: url(../images/intro/promise_b.svg);
|
background-image: url(../images/intro/promise_b.svg);
|
||||||
background-position: bottom;
|
background-position: bottom;
|
||||||
background-size: auto;
|
background-size: auto;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .mask .text-section {
|
.intro .mask .text-section {
|
||||||
background-size: 95% auto;
|
background-size: 95% auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .mask .mask-text {
|
.intro .mask .mask-text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .mask .mask-text em {
|
.intro .mask .mask-text em {
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .content-area {
|
.intro .content-area {
|
||||||
margin-top: 34px;
|
margin-top: 34px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -589,6 +658,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .content-area {
|
.intro .content-area {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
@@ -597,6 +667,7 @@
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card {
|
.intro .card {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(60px);
|
transform: translateY(60px);
|
||||||
@@ -611,12 +682,14 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 992px) {
|
@media only screen and (min-width: 992px) {
|
||||||
.intro .card {
|
.intro .card {
|
||||||
flex: 0 0 calc(50% - 12px);
|
flex: 0 0 calc(50% - 12px);
|
||||||
padding: 60px 32px 48px;
|
padding: 60px 32px 48px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 1200px) {
|
@media only screen and (min-width: 1200px) {
|
||||||
.intro .card {
|
.intro .card {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
@@ -624,6 +697,7 @@
|
|||||||
padding: 86px 22px 68px;
|
padding: 86px 22px 68px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .card {
|
.intro .card {
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
@@ -640,26 +714,31 @@
|
|||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card.show {
|
.intro .card.show {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card-list {
|
.intro .card-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 1200px) {
|
@media only screen and (min-width: 1200px) {
|
||||||
.intro .card-list {
|
.intro .card-list {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .card-list {
|
.intro .card-list {
|
||||||
gap: 2.4rem;
|
gap: 2.4rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .card-list {
|
.intro .card-list {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -671,6 +750,7 @@
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card-num {
|
.intro .card-num {
|
||||||
font-family: YeogiOttaeJalnan;
|
font-family: YeogiOttaeJalnan;
|
||||||
font-size: 120px;
|
font-size: 120px;
|
||||||
@@ -682,11 +762,13 @@
|
|||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .card-num {
|
.intro .card-num {
|
||||||
font-size: 6rem;
|
font-size: 6rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card-title {
|
.intro .card-title {
|
||||||
margin-top: -46px;
|
margin-top: -46px;
|
||||||
margin-bottom: 42px;
|
margin-bottom: 42px;
|
||||||
@@ -694,30 +776,36 @@
|
|||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .card-title {
|
.intro .card-title {
|
||||||
font-size: 2.4rem;
|
font-size: 2.4rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .card-title {
|
.intro .card-title {
|
||||||
margin-top: -32px;
|
margin-top: -32px;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card-desc {
|
.intro .card-desc {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 1023px) {
|
@media only screen and (max-width: 1023px) {
|
||||||
.intro .card-desc {
|
.intro .card-desc {
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 991px) {
|
@media only screen and (max-width: 991px) {
|
||||||
.intro .card-desc {
|
.intro .card-desc {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.intro .card em {
|
.intro .card em {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
@@ -745,18 +833,22 @@
|
|||||||
gap: 24px;
|
gap: 24px;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-indicator.hidden {
|
.scroll-indicator.hidden {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-indicator.sec2 .bar {
|
.scroll-indicator.sec2 .bar {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-indicator span {
|
.scroll-indicator span {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: var(--text-intro-base);
|
color: var(--text-intro-base);
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-indicator .bar {
|
.scroll-indicator .bar {
|
||||||
width: 2px;
|
width: 2px;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
@@ -764,6 +856,7 @@
|
|||||||
background-color: rgba(0, 0, 0, 0.3);
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
transition: height 0.5s linear;
|
transition: height 0.5s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-indicator .bar::before {
|
.scroll-indicator .bar::before {
|
||||||
content: " ";
|
content: " ";
|
||||||
display: block;
|
display: block;
|
||||||
|
|||||||
@@ -1376,6 +1376,11 @@ class ContentManager {
|
|||||||
return CONFIG.IMAGE_PATHS.BASE;
|
return CONFIG.IMAGE_PATHS.BASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// type이 file인 경우 YouTube 썸네일 사용 불가 → 기본 이미지 반환
|
||||||
|
if (chapterInfo.chapter.type === 'file') {
|
||||||
|
return CONFIG.IMAGE_PATHS.BASE;
|
||||||
|
}
|
||||||
|
|
||||||
const firstLesson = chapterInfo.chapter.lessons[0];
|
const firstLesson = chapterInfo.chapter.lessons[0];
|
||||||
if (!firstLesson.url) {
|
if (!firstLesson.url) {
|
||||||
return CONFIG.IMAGE_PATHS.BASE;
|
return CONFIG.IMAGE_PATHS.BASE;
|
||||||
@@ -2934,7 +2939,7 @@ class PuzzleModalManager {
|
|||||||
static _createLearningList(modal, chapter, chapterIndex, modalState) {
|
static _createLearningList(modal, chapter, chapterIndex, modalState) {
|
||||||
try {
|
try {
|
||||||
const domUtils = typeof DOMUtils !== 'undefined' ? DOMUtils : null;
|
const domUtils = typeof DOMUtils !== 'undefined' ? DOMUtils : null;
|
||||||
const eventManager = typeof eventManager !== 'undefined' ? eventManager : null;
|
const _eventManager = typeof eventManager !== 'undefined' ? eventManager : null;
|
||||||
const errorHandler = typeof ErrorHandler !== 'undefined' ? ErrorHandler : null;
|
const errorHandler = typeof ErrorHandler !== 'undefined' ? ErrorHandler : null;
|
||||||
|
|
||||||
const list = domUtils?.$(".learning-list", modal) || modal.querySelector(".learning-list");
|
const list = domUtils?.$(".learning-list", modal) || modal.querySelector(".learning-list");
|
||||||
@@ -3040,8 +3045,8 @@ class PuzzleModalManager {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (eventManager) {
|
if (_eventManager) {
|
||||||
const listenerId = eventManager.on(link, "click", clickHandler);
|
const listenerId = _eventManager.on(link, "click", clickHandler);
|
||||||
// 리스너 ID를 modal에 저장하여 나중에 정리할 수 있도록
|
// 리스너 ID를 modal에 저장하여 나중에 정리할 수 있도록
|
||||||
if (!modal._learningListListenerIds) {
|
if (!modal._learningListListenerIds) {
|
||||||
modal._learningListListenerIds = [];
|
modal._learningListListenerIds = [];
|
||||||
@@ -3927,7 +3932,7 @@ function updatePieceGaugeByCompletion(pieceId) {
|
|||||||
function initializeOverlay() {
|
function initializeOverlay() {
|
||||||
try {
|
try {
|
||||||
const domUtils = typeof DOMUtils !== 'undefined' ? DOMUtils : null;
|
const domUtils = typeof DOMUtils !== 'undefined' ? DOMUtils : null;
|
||||||
const eventManager = typeof eventManager !== 'undefined' ? eventManager : null;
|
const _eventManager = typeof eventManager !== 'undefined' ? eventManager : null;
|
||||||
const errorHandler = typeof ErrorHandler !== 'undefined' ? ErrorHandler : null;
|
const errorHandler = typeof ErrorHandler !== 'undefined' ? ErrorHandler : null;
|
||||||
|
|
||||||
const overlay = domUtils?.$("#overlay") || document.getElementById("overlay");
|
const overlay = domUtils?.$("#overlay") || document.getElementById("overlay");
|
||||||
@@ -3947,8 +3952,8 @@ function initializeOverlay() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (eventManager) {
|
if (_eventManager) {
|
||||||
eventManager.on(overlay, "click", clickHandler);
|
_eventManager.on(overlay, "click", clickHandler);
|
||||||
} else {
|
} else {
|
||||||
overlay.addEventListener("click", clickHandler);
|
overlay.addEventListener("click", clickHandler);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
/>
|
/>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/lib/swiper11.min.css" />
|
<link rel="stylesheet" type="text/css" href="/css/lib/swiper11.min.css" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user