Skip to content

Repository files navigation

대학 시장 재적학생 트렌드

대학알리미 학과별 재적 학생 현황을 통합해 2019~2025년 대학·전문대학 시장을 살펴보는 대학교재 출판용 로컬 대시보드입니다. 학생 규모를 잠재 독자 규모의 참고치로 사용해 전공, 지역, 학교와 학과를 비교합니다. 실제 교재 채택·판매량이나 미래 수요를 뜻하지 않습니다.

구현 화면

  • 대학시장 요약: 종료연도 학생 규모, 시작연도 대비 증감, 운영 학교 수, 큰 대계열과 대학·전문대학 비교
  • 전공 시장: 공식 대·중·소계열 탐색과 최근·장기 학과군 상승·하락, 운영 학교 확산 분석
  • 지역·학교: 지역별 시작·종료연도 규모 비교, 종료연도 주요 학교, 장기 증가·감소 학교
  • 학교·학과 찾기: 종료연도 학교·학과, 전공 분류, 지역과 학생 규모 탐색
  • 사용 가이드: 질문형 메뉴 안내, 화면별 활용 예시, 주요 용어와 해석 주의사항
  • 분석 기간: 전체 기간, 최근 3년, 최근 1년 또는 직접 시작·종료연도 선택
  • 필터: 화면별 기본 조건과 접이식 상세 조건, 적용 칩, 지역·대학구분별 학교와 대·중·소계열 연동
  • 반응형 UI: 데스크톱 사이드바, 모바일 메뉴·접이식 조건·상세 카드

실행

요구 환경은 Node.js 20 이상과 pnpm입니다.

pnpm install
pnpm data:refresh
pnpm dev

pnpm data:refreshorigin_data의 원본 변환, 독립 검산, TypeScript, ESLint, 테스트와 프로덕션 빌드를 차례로 수행합니다. 하나라도 실패하면 갱신이 완료된 것으로 보지 않습니다.

갱신할 때는 실행 중인 개발 서버를 먼저 Ctrl+C로 종료하세요. 갱신이 끝나면 위의 pnpm dev 명령으로 다시 실행합니다. 빌드 준비 단계에서는 데이터와 무관한 .next/dev/types 생성 캐시만 안전하게 정리합니다.

브라우저에서 http://127.0.0.1:3000을 엽니다.

프로덕션 검사와 실행은 다음과 같습니다.

pnpm lint
pnpm test
pnpm typecheck
pnpm build
pnpm start

원본과 변환 데이터 위치

원본 XLSX는 수정하지 않으며 public/에 복사하지 않습니다. 프로젝트의 *.xlsx는 Git에서 제외됩니다.

  • 읽기 전용 원본: origin_data/*.xlsx
  • 압축 정규화 데이터: data/processed/enrollment.json.gz
  • 검산 보고서: data/processed/validation-report.json
  • 변환·비교 명세: data/processed/methodology.json
  • 스트리밍 전용 변환기: scripts/convert-enrollment.ts
  • 독립 재검산: scripts/validate-enrollment.ts

분석 API는 data/processed의 검산 완료 데이터만 읽습니다. 과거 관리자 기능에서 생성된 data/local-store/ 스냅샷은 안전한 보관을 위해 남아 있지만 애플리케이션에서는 읽지 않으며 Git에도 포함하지 않습니다.

새 원본 4개

현재 변환기는 다음 파일 구성을 읽습니다.

구분 기간 원본 열 변환 행
대학 2019~2022 45열 82,904행
대학 2023~2025 46열 45,263행
전문대학 2019~2022 45열 35,889행
전문대학 2023~2025 46열 21,474행
합계 2019~2025 185,530행

워크시트 사용 범위가 실제 데이터와 달리 A1로 기록되어 있어 일반적인 XLSX 범위 판독을 사용하지 않습니다. ZIP 내부 sheet1.xml을 스트리밍으로 풀면서 SAX 방식으로 행을 읽습니다. 새 원본은 학교·단과대학·학과·주야 값이 각 행에 이미 채워져 있으므로 병합 셀 채우기는 하지 않습니다.

통합 데이터 형식

두 기간의 공통 차원은 다음과 같습니다.

  • 학교: 공시연도, 기준연도, 학교코드, 학교명, 본분교, 대학구분, 학교종류, 설립구분·유형, 소재지유형, 지역, 학교상태
  • 학과: 단과대학, 학과코드, 학과명, 주야, 학과특성
  • 계열: 대학자체계열, 표준분류 대계열·중계열·소계열
  • 지표: 학생정원, 재학생, 휴학생, 학사학위취득유예학생, 재적학생

2019~2022년에는 학생정원 열이 없어 null로 보존합니다. 새 원본에는 학과상태 열이 없으므로 학교상태로 바꿔치기하거나 신설·폐과를 임의 추정하지 않습니다.

계산과 검산

모든 행에서 다음 산식을 적용합니다.

재학생 = 재학생_계_정원내 + 재학생_계_정원외
휴학생 = 휴학생_계_정원내 + 휴학생_계_정원외
학위취득유예학생 = 학사학위취득유예학생_계_정원내 + 정원외
재적학생 = 재학생 + 휴학생 + 학위취득유예학생

현재 185,530행에서 아래 오류는 모두 0건입니다.

  • 공시연도와 기준연도 불일치
  • 학교·학과·대학구분·지역·대중소계열 필수 차원 누락
  • 동일 연도·학교코드·본분교·학과코드·주야·학과특성 복합키 중복
  • 음수 또는 읽을 수 없는 학생 수
  • 정원내·외 각각의 계 = 남 + 여 소계 오류
  • 재적학생 = 재학생 + 휴학생 + 학위취득유예학생 오류
  • 파일별 45/46열 스키마 오류

시장 분석 방법론

시장 규모, 전년 대비, 장기 변화, 점유율 변화, 증감 기여, 지역별 장기 비교와 차트별 해석 기준은 시장 분석 방법론에 정리했습니다.

핵심 해석 제한은 다음과 같습니다.

  • 20192022와 20232025는 학과 행 구성 방식이 달라 원본 행 수를 장기 시장 지표로 비교하지 않습니다. 학생 수 합계를 동일 산식으로 비교합니다.
  • 2025년부터 광역계열이 관측되므로 일부 계열 점유율 이동에는 분류 변경 효과가 포함될 수 있습니다.
  • 정원 대비 재학생 비율의 재학생에는 정원외 학생이 포함되므로 공식 충원율이 아닙니다.
  • 학생 수 증가는 취업 전망, 수요 증가, 미래 유망성 또는 인과관계를 뜻하지 않습니다.

데이터 갱신

연 1회 새 원본 4개를 origin_data에 넣고 다음 명령 하나를 실행합니다.

pnpm data:refresh

다른 폴더에서 먼저 시험하려면 아래처럼 변환과 검산을 별도로 실행할 수 있습니다.

pnpm data:convert -- --input-dir "C:\새 원본 폴더"
pnpm data:validate
pnpm check

변환기는 입력 파일을 읽기만 하며 수정·이동·삭제하지 않습니다. 파일 수, 필수 열, 실제 열 수, 연도·대학구분, 숫자·합계 검사가 실패하면 품질 검사를 통과하지 못하고 명령이 중단됩니다.

권장 연간 절차는 다음과 같습니다.

  1. 기존 origin_data를 별도 보관하고 새 원본 4개로 교체합니다.
  2. pnpm data:refresh를 실행합니다.
  3. 로컬 브라우저에서 대학시장 요약·전공 시장·지역·학교·학교·학과 찾기를 확인합니다.
  4. 변환 데이터, 검산 보고서와 코드를 Git 커밋 또는 연도 태그로 저장합니다.

Git 커밋이 데이터 버전 이력이 되므로 별도의 로그인·업로드·게시·복구 서버는 운영하지 않습니다.

폴더 구조

origin_data/                 Git 제외 읽기 전용 원본 4개
data/processed/              압축 정규화 데이터·검산 보고서·명세
data/local-store/            Git 제외 과거 게시 스냅샷 보관본, 앱 미사용
scripts/                     변환·독립 검산 도구
src/app/api/dashboard/       공통 필터·KPI·순위·상세 API
src/app/api/market-analysis/ 시장 규모·구조·지역 추이 분석 API
src/app/api/department-trends/ 학과군·개별 학과·관측 이동 API
src/components/              분석 화면과 반응형 UI
src/lib/                     데이터 로더·분석·검산·테스트
docs/                        계산 방법론과 운영 가이드

공개 운영과 남은 작업

  • 운영 주소: https://university-enrollment-dashboard.vercel.app
  • Git main의 검산 완료 정규화 데이터와 애플리케이션만 Vercel에 배포합니다.
  • 다음 연도에는 원본 열·항목 변경 여부와 계열 분류의 장기 비교 연속성을 다시 확인합니다.

관리자 로그인, Supabase, 웹 업로드와 게시·복구 기능은 연 1회 갱신 주기에 비해 운영 비용이 커서 제거했습니다.

About

2019~2025년 대학·전문대학 재적학생 시장 분석 대시보드

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages