도서·자료 통합 관리 콘솔
작가·카테고리 N:M 매핑, 자료 등록과 노출 제어(상단 고정·순서), 가변 게시판 유형, 301 리다이렉트 매핑·검증, 단계별 컷오버 현황을 한 곳에서 다루는 관리자 콘솔을 Spring Boot + Thymeleaf + React 기반으로 설계·구현하는 확장 프로젝트입니다.
프로젝트 개요
작가·카테고리 N:M 매핑, 자료 등록과 노출 제어(상단 고정·순서), 가변 게시판 유형, 301 리다이렉트 매핑·검증, 단계별 컷오버 현황을 한 곳에서 다루는 관리자 콘솔을 Spring Boot + Thymeleaf + React 기반으로 설계·구현하는 확장 프로젝트입니다. 이용자 사이트 이후의 운영·이관 영역까지 함께 설계합니다.
작업 범위
- 작가·카테고리 매핑 관리: 작가 마스터를 통합 관리하고 도서와 작가, 도서와 카테고리를 N:M으로 연결합니다
- 자료 관리·노출 제어: 자료를 독립적으로 등록하고 도서와 연결하며 메인 노출 순서와 상단 고정을 제어합니다
- 가변 게시판 유형 관리: 일반형·갤러리형·파일 다운로드 전용 등 게시판 유형을 선택해 새 게시판을 생성합니다
- 301 리다이렉트·컷오버 현황: 기존 도메인 경로를 신규 통합 도메인으로 301 연결하는 매핑표와 단계별 이관 현황을 확인합니다
주요 업무
- 작가·카테고리 매핑 관리 화면: 도서 한 권에 여러 작가와 여러 장르를 지정하고 매핑 현황을 보드로 확인합니다
- 자료 관리·노출 제어 화면: 기본은 최신순 자동 정렬이고 필요한 자료만 수동으로 상단 고정하거나 순서를 바꿉니다
- 가변 게시판 유형 관리 화면: 유형별 필드 구성과 목록 표시 방식을 설정 값으로 정의하여 코드 수정 없이 게시판을 추가합니다
- 301 리다이렉트·컷오버 현황 화면: 리다이렉트 검증 결과와 1차 단행본, 2차 교과서·참고서 이관 단계 진행 상태를 보드로 보여주고 롤백 이력을 남깁니다



프로젝트 핵심 과제
인쇄된 QR 경로처럼 되돌릴 수 없는 접점
매핑 누락이 곧 끊긴 링크가 되므로 전수 검증 배치와 단계별 점검 기준으로 대응합니다
동일 인물이 표기만 다르게 등록된 작가 데이터가 있을 수
이름·생년 기반 중복 후보 감지와 수동 병합 단계로 대응합니다
게시판 유형을 바꿀 때 기존 게시글 필드가 호환되지 않을 수
사전 검증 API와 변환 규칙으로 대응합니다
이관 도중 실패 시 두 시스템의 데이터가 어긋날 수
단계별 롤백 스크립트와 이력 기록으로 대응합니다
핵심 기능 상세
작가·카테고리 매핑 관리
작가 마스터를 통합 관리하고 도서와 작가, 도서와 카테고리를 N:M으로 연결합니다. 도서 한 권에 여러 작가와 여러 장르를 지정하고 매핑 현황을 보드로 확인합니다.
- JPA 다대다 관계를 명시적 매핑 엔티티로 풀어 정렬 순서와 역할(저자·역자) 컬럼 보유
- React 다중 선택 콤보박스와 낙관적 UI 업데이트로 매핑 편집 반응 구성
- 작가 CSV 업로드 시 중복 작가를 이름·생년 기준으로 감지하는 검증 단계 설계
작가 마스터 통합과 도서 매핑을 한 화면에서 처리하는 편집 보드와 중복 후보 감지 로직을 구현합니다.


자료 관리·노출 제어
자료를 독립적으로 등록하고 도서와 연결하며 메인 노출 순서와 상단 고정을 제어합니다. 기본은 최신순 자동 정렬이고 필요한 자료만 수동으로 상단 고정하거나 순서를 바꿉니다.
- 정렬 가중치 컬럼과 고정 플래그를 조합한 노출 순서 쿼리 설계
- dnd-kit 기반 드래그 앤 드롭 순서 편집과 일괄 저장 API 구성
- 자료 파일 업로드 시 확장자·용량 검증과 저장 경로 규칙 적용
자동 최신순과 수동 고정·순서를 하나의 정렬 규칙으로 합치는 노출 제어 모델을 구현합니다.


가변 게시판 유형 관리
일반형·갤러리형·파일 다운로드 전용 등 게시판 유형을 선택해 새 게시판을 생성합니다. 유형별 필드 구성과 목록 표시 방식을 설정 값으로 정의하여 코드 수정 없이 게시판을 추가합니다.
- 게시판 유형 정의를 JSON 스키마로 저장하고 폼 필드를 동적으로 렌더링
- Thymeleaf 프래그먼트를 유형별로 분리하여 목록 템플릿을 설정에 따라 선택
- 유형 변경 시 기존 게시글 필드 호환성을 검사하는 사전 검증 API 구성
게시판 유형을 설정 데이터로 표현하여 새 유형 추가 시 템플릿 한 벌만 더하는 구조를 설계합니다.


301 리다이렉트·컷오버 현황
기존 도메인 경로를 신규 통합 도메인으로 301 연결하는 매핑표와 단계별 이관 현황을 확인합니다.
- Spring Interceptor 기반 경로 매핑표 조회와 301 응답 처리, Redis 캐시로 매핑 조회 단축
- 매핑표 전체를 순회하며 응답 코드와 도착 경로를 비교하는 검증 배치 구성
- 단계별 이관 스크립트 실행 결과와 롤백 지점을 이력 테이블에 기록
인쇄된 QR 경로까지 포함한 리다이렉트 매핑을 검증 배치로 점검하고 단계별 컷오버·롤백 상태를 한 보드에 모으는 구조를 구현합니다.


프로젝트 진행 단계
매핑 모델 및 관리자 권한 설계 · 2026.10
작가·카테고리·자료 N:M 매핑 엔티티와 관리자 역할별 접근 범위를 설계합니다
자료·노출 제어 모듈 개발 · 2026.10
자료 등록, 도서 연결, 상단 고정과 순서 편집 API 및 편집 화면을 구현합니다
가변 게시판 엔진 구현 · 2026.10
유형 정의 스키마와 동적 폼, 유형별 목록 템플릿을 구현합니다
리다이렉트 검증·이관 스크립트 개발 · 2026.10
301 매핑 검증 배치와 단계별 이관·롤백 스크립트, 정합성 점검 리포트, 현황 보드를 구현합니다
개발 결과
기술적 주안점
- 작가 마스터 통합과 도서 매핑을 한 화면에서 처리하는 편집 보드와 중복 후보 감지 로직을 구현합니다
- 자동 최신순과 수동 고정·순서를 하나의 정렬 규칙으로 합치는 노출 제어 모델을 구현합니다
- 게시판 유형을 설정 데이터로 표현하여 새 유형 추가 시 템플릿 한 벌만 더하는 구조를 설계합니다