Skip to content

feat: university_info_for_apply 테이블에 JSON 컬럼 추가 및 대학별 추가 정보 관리 #728

@sukangpunch

Description

@sukangpunch

어떤 기능인가요?

university_info_for_apply 테이블에 JSON 컬럼을 추가하여 대학별 추가 정보를 유연하게 관리합니다.

  • 필수 정보: 시스템 기능 제공에 필요한 공통 정보는 기존 테이블 컬럼으로 유지
  • 추가 정보: 대학별로 상이한 선택적 정보는 JSON 컬럼으로 관리
  • JSON 스키마 강제화: 대학별 JSON 규격을 정의하고 유효성 검증 로직 추가

배경

각 대학(인하대, 인천대, 성신여대, 경희대, 중앙대 등)마다 지원 안내에 포함하는 필드가 달라, 별도 테이블로 관리하기엔 비용이 크고 유연성도 부족합니다.
JSON 컬럼을 활용하면 1차 마이그레이션으로 필수 정보를 먼저 반영하고, 서비스 중단 없이 추가 정보를 점진적으로 도입할 수 있습니다.

대학별 추가 정보 필드 예시

대학 주요 추가 필드
인하대 지원전공, 영어강의 리스트, 어학세부요건, 비고
인천대 수업내용, 파견지원금, 본교지원가능전공, 비고
성신여대 수강안내, 주요일정, Fact Sheet, 교류대학 담당자/연락처, 유의사항
경희대 Features, Departments, Factsheet, Nomination/Application Due, Course List
중앙대 대륙, TO

기술적 고려사항

  • JSON 컬럼에 조건 조회가 필요한 경우 가상 컬럼(Generated Column) + B-Tree 인덱스 방식 적용
    • MySQL JSON 타입에는 직접 B-Tree 인덱스를 생성할 수 없으므로 특정 JSON 키를 추출하는 가상 컬럼을 생성하고 해당 컬럼에 인덱스 적용
  • 특정 필드가 시스템 기능 제공에 사용되는 경우 테이블 컬럼으로 전환 검토

작업 상세 내용

  • 대학별 필수/추가 정보 필드 정의 및 분류
  • university_info_for_apply 테이블에 additional_info JSON 컬럼 추가 (Flyway 마이그레이션)
  • 대학별 JSON 스키마 정의 (유효성 검증 로직 구현)
  • Entity 및 Repository 업데이트
  • 추가 정보 등록/수정 API 구현 (어드민)
  • 추가 정보 조회 API 구현
  • 가상 컬럼 + 인덱스 적용 여부 검토 및 필요시 마이그레이션 추가
  • 테스트 코드 작성

참고할만한 자료(선택)

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions