중복 없이 가장 필요한 책만 사서 담는 '도서관 희망도서 신청 & 중복 검증 시스템'
📖 교내 도서관 행정 및 학생 독서 교육 — 교직원과 학생들이 희망하는 책 제목과 ISBN을 입력하면, 파일 안에 심어둔 기존 보유 도서 목록(EMBED_BOOKS)과 실시간 대조하여 중복 신청을 즉시 차단합니다. 사서교사는 분기별 구매 목록을 원클릭 CSV로 추출하여 교무행정의 연간 도서 구매 예산 낭비를 원천 봉쇄합니다.
📖 한 줄 정의
심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).
학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.
1. 3대 핵심 분석 비교표
| 무엇이 바뀌었나요? / 영역 | 초보자를 위한 쉬운 설명 | 이렇게 한번 써보세요! |
|---|---|---|
| ISBN 중복 즉시 검증 | 책 표지 뒷면의 ISBN 코드를 입력하는 순간, 보유 목록 상수와 대조하여 "이미 보유 중" 빨간 경고를 즉시 띄웁니다. |
학생이 신청한 도서와 사서의 신규 구입 희망 도서가 겹치지 않도록 서버 전송 0으로 검증. |
| 분기별 구매 목록 자동 추출 | 승인된 희망 도서를 분기별로 묶어 콤마 분리(CSV) 서식으로 내보내는 기능을 제공합니다. | '1분기 구매 예정 15권' 목록을 클립보드 복사하거나 파일로 다운로드하여 행정 즉시 전달. |
| 보유 도서 데이터 파일 내장 | 외부 데이터베이스 연동 없이, 교내 보유 도서 정보를 상수 내부에 수 백~수천 건 내장해도 브라우저 즉시 검색이 가능합니다. | 초기 세팅 시 학교 보유 도서 명단이 담긴 CSV를 직접 파일 안 상수로 심는 방식. |
2. 핵심 아키텍처 해설
① 보유 도서 및 신청 목록 상수
const BOOKS = [
{ isbn: "9788954623507", title: "코알라 일기", author: "정유미", year: 2018 },
{ isbn: "9788954612345", title: "가입인사", author: "기타" }
];
const WISHES = []; // 새로 신청된 희망 도서 목록
교내 보유 도서 목록을 ISBN 기준으로 파일 상단에 내장하고, 학생들의 신규 신청 요청을 배열에 담아 실시간 비교 분석합니다.
② 중복 도서 실시간 감지 로직
function checkDuplicate(isbn) {
const exists = BOOKS.some(b => b.isbn === isbn);
if (exists) {
const found = BOOKS.find(b => b.isbn === isbn);
return { dup: true, msg: `${found.title} (${found.author})은 이미 보유 중입니다.` };
}
return { dup: false };
}
입력된 ISBN과 내장 보유 데이터를 some() 함수로 빠르게 대조하여 중복 여부를 즉시 반환합니다.
③ 구매 확정 목록 CSV 출력
function exportCSV(approvedList) {
const csv = "제목,저자,ISBN,신청자\n" +
approvedList.map(b => `${b.title},${b.author},${b.isbn}`).join("\n");
const blob = new Blob(["\ufeff" + csv], { type: "text/csv;charset=utf-8;" });
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "희망도서_구매목록.csv";
link.click();
}
UTF-8 BOM 헤더를 붙여 엑셀에서 한글이 깨지지 않도록 안전한 CSV를 생성합니다. 학생 신청자 정보는 실명 대신 학년·반·번호와 닉네임으로 표기됩니다.
3. 초보자를 위한 바이브 코딩 실전 사용 예시
- 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
- 역질문 답변 — 제미나이가 묻는 교내 도서관 보유 도서 수와 학년별 신청 단위에 답합니다.
- HTML 파일 실행 — 메모장에 붙여넣고
희망도서신청.html로 저장하여 도서관 홈페이지에 배포합니다.
제미나이 전용 에러 제로 프롬프트
[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 백엔드 서버 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const BOOKS = [...] 상수에 교내 보유 도서 10권 이상의 예시 데이터(ISBN, 제목, 저자)를 내장하여 즉시 검증 기능이 작동하도록 한다.
3. ISBN 중복 검사: 사용자가 입력한 13자리 ISBN이 기존 보유 목록과 겹치면 즉시 붉은 경고창으로 차단하고, 미보유 도서만 대기 목록에 추가한다.
4. CSV 구매목록 원클릭 내보내기: BOM 헤더를 포함한 UTF-8 CSV로 변환하여 엑셀에서도 한글이 안 깨지도록 설계한다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.
[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 아래 3가지 질문을 먼저 나에게 던져줘:
1. 신청자 표기는 학년·반·번호와 닉네임 기준으로 할까요? (실명 제외 권장)
2. 신청 가능한 도서 갯수에 분기별 제한(예: 1인 2권)을 둘까요?
3. 검증 화면 디자인 테마를 도서관 느낌의 페이퍼 크림 톤으로 갈까요?
🎯 에디터 한줄평
"중복으로 사진 찍힌 책이 몇 권이겠어? 싶었지만, 1년 도서 구매 예산 속 중복 구입 책이 몇십 권씩 쌓였을 때 사서교사의 안타까움은 눈물로 바뀝니다. ISBN 13자리 숫자만 입력하면 서버 통신 없이도 즉시 '보유 중'과 '신규 희망'을 가려주는 이 도구는 학교 도서관 행정의 낭비를 단기간에 끝내주는 훌륭한 스마트 워크입니다."
📚 기술·교육 참고 링크
- 국립중앙도서관 및 교육과정 연계 : 국내 도서관 자료 협력 도우미 정보 참고
- 교육과정 연계: 초등 3~6학년 독서 및 도서 이용 교육, 교내 도서관 활용 교육, 초등 실과 정보 처리 기초