원칙 · 하지 않는 것 · 출처
상담일지에는 아이의 삶이 들어갑니다
이 서비스가 다루는 문서에는 학생의 실명·학교·상담 내용이 들어갈 수 있습니다. 그것은 편의를 이유로 서버에 올려도 되는 종류의 데이터가 아닙니다. 그래서 이 서비스는 서버를 쓰지 않는 쪽을 먼저 택했고, 그 선택을 코드로 강제했습니다.
1. "나가지 않는다"를 어떻게 증명합니까
말로만 하지 않습니다. 세 겹으로 막고, 그 사실을 기계가 검사합니다.
Content-Security-Policy
여섯 화면 모두 connect-src 'none' · form-action 'none' 을 문서 머리에 박아 두었습니다.
코드가 실수로 서버를 부르려 해도 브라우저가 거부합니다. 폼 전송도 원천 차단됩니다.
네트워크 차단기
assets/autodoc.js 가 fetch·XMLHttpRequest·sendBeacon·WebSocket·EventSource 를
전부 차단 함수로 바꿔 둡니다. 호출되면 던지고, 화면 위 배지의 숫자가 올라갑니다.
소스·실행 양쪽 검사
tools/verify_no_network.js 가 소스에 네트워크 호출이 있는지 훑고,
Playwright 로 여섯 화면을 실제로 띄워 발생한 요청을 전부 기록해 사용자 입력이 나가는 요청이 0건인지 확인합니다.
화면에 뜨는 요청은 이 폴더 안의 HTML·CSS·JS 와 글꼴 하나뿐입니다. 글꼴(Pretendard)은 EDUVERSE 정본 디자인 CSS 가 CDN 에서 불러오는 것으로, 사용자가 입력한 값과는 무관합니다. 입력값이 실린 요청은 한 건도 없습니다.
2. 왜 이름을 아예 받지 않습니까
받지 않으면 샐 수 없습니다
"안전하게 저장하겠다"는 약속보다 "받지 않는다"가 강합니다. 이름 입력칸이 없으므로 실수로 남길 곳도, 화면 캡처에 찍힐 곳도 줄어듭니다. 문서는 학생A·학생B·○○○ 로 완성되고, 실명은 종이 위에서 채워집니다.
붙여 넣은 명단도 바꿔 둡니다
반복 작업 화면은 CSV 를 받습니다. 거기에 실명이 섞여 들어올 수 있으므로, 한국 성씨로 시작하는 2~4자 한글을 실명 후보로 보고 자리표시자로 바꾸는 기능을 기본으로 켜 두었습니다. 판별이 완벽하지 않다는 것도 화면에 적어 두었습니다.
3. 저장하지 않는다 — 정말로 안 합니다
서버 저장이 없다는 말은 흔히 "브라우저에 저장한다"는 뜻으로 쓰입니다. 여기서는 그것도 하지 않습니다.
| 저장 통로 | 이 서비스 | 확인 방법 |
|---|---|---|
| 서버 DB | 없음 (백엔드 자체가 없음) | 배포물이 정적 HTML 뿐 |
| localStorage / sessionStorage | 쓰지 않음 | 소스 전문에 호출 0건 — tools/verify_no_network.js 가 검사 |
| IndexedDB | 쓰지 않음 | 동일 |
| 쿠키 | 쓰지 않음 | 동일 |
| 파일 | 사용자가 누를 때만 다운로드 | Blob → 로컬 저장. 사본을 남기지 않음 |
그래서 새로고침하면 사라집니다. 불편한 설계입니다. 그 불편을 감수하는 이유가 그다음 항목입니다.
4. 나중에 백엔드가 붙어도 이 원칙을 유지하는 근거
이 문단은 다음 담당자를 위한 것입니다. 로그인·저장·AI 문장 다듬기를 붙이자는 요구는 반드시 들어옵니다. 그때 아래를 근거로 판단하십시오.
근거 1 — 상담 기록은 민감정보에 준합니다
「개인정보 보호법」 제23조는 사상·신념, 건강, 성생활 등에 관한 정보를 민감정보로 두고 원칙적으로 처리를 금지합니다. 학생 상담일지에는 정서·건강·가정 상황이 사실상 함께 들어옵니다. 일반 개인정보와 같은 수준으로 다루면 안 됩니다.
확인 필요: 조문 원문은 국가법령정보센터에서 대조하십시오(이 세션에서는 robots 정책으로 원문을 열람하지 못했습니다). 학생 상담 기록이 제23조의 민감정보에 직접 해당하는지에 대한 유권해석도 아직 확인하지 못했습니다.
근거 2 — 학생은 동의의 주체가 되기 어렵습니다
학교라는 관계에서 학생과 보호자가 "동의하지 않을 자유"를 실제로 갖기는 어렵습니다. 동의 버튼을 받아 두는 것으로 정당화되지 않는 처리입니다. 만 14세 미만이면 법정대리인 동의가 별도로 필요합니다.
근거 3 — 사고는 한 번이면 끝입니다
EDUVERSE 는 43개 서비스를 한 브랜드로 묶습니다. 학생 상담 데이터가 한 번 유출되면 그 손해는 이 서비스 하나가 아니라 브랜드 전체와 교육계에서의 신뢰에 갑니다. 되돌릴 방법이 없습니다.
그래서 백엔드를 붙일 때의 최소 조건
아래를 전부 갖추기 전에는 입력값을 서버로 보내지 않습니다.
- 개인정보 처리방침 공개 + 처리 항목·보유 기간·파기 절차 확정
- 외부 AI API 를 쓰면 처리 위탁 계약과 국외 이전 고지 (학습 데이터 사용 금지 조항 포함)
- 보호자 고지 및 만 14세 미만 법정대리인 동의 절차
- 암호화 저장 · 접근 권한 분리 · 접근 기록 보존
- 기본값은 여전히 "브라우저 안에서만 처리". 서버 전송은 교사가 명시적으로 켜야 동작하는 선택 기능
- 학생 실명은 서버로 보내지 않는다는 규칙 유지 (자리표시자 원칙은 백엔드 이후에도 그대로)
5. 하지 않는 것
AI가 문장을 지어내지 않습니다
지금 이 서비스는 언어모델을 호출하지 않습니다. 선택지에 붙은 문장 조각을 템플릿에 끼워 넣을 뿐입니다. 같은 선택은 언제나 같은 문장이 됩니다. 백엔드가 없는데 AI를 쓰는 척하지 않는 편이 정직합니다.
학생을 규정하는 문장을 만들지 않습니다
선택지 자체에 성격 단정 표현이 없고, 완성된 문서를 규칙 엔진이 한 번 더 검사합니다. 걸리면 복사·다운로드 버튼이 잠깁니다. 필터가 보는 것
출처를 모르는 양식을 싣지 않습니다
법령·훈령에 근거가 확인된 양식만 올립니다. 확인 못 한 것은 뺀 이유와 함께 남깁니다. 회장의 연수 자료도 저작권 확인 전까지 한 건도 반입하지 않았습니다.
도서를 팔지 않습니다
이 서비스는 도서를 한 권도 노출하지 않습니다. 전자책 판매·구독 포함은 애초에 해당 사항이 없습니다. 공공누리 저작물도 사용하지 않았습니다.
6. 양식 출처
싣는 양식은 세 건이고 전부 법령·훈령에 근거가 있습니다. 저작권법 제7조는 헌법·법률·명령·규칙과 국가·지방자치단체의 고시·공고·훈령을 보호받지 못하는 저작물로 둡니다.
| 양식 | 근거 | 이용 근거 |
|---|---|---|
| 기안문·시행문 (일반) | 「행정업무의 운영 및 혁신에 관한 규정 시행규칙」 별지 제1호서식 · 제4조 | 저작권법 제7조 제1호 |
| 내부결재 기안문 | 같은 시행규칙 별지 제2호서식 | 저작권법 제7조 제1호 |
| 학교생활기록부 서술형 항목 | 「학교생활기록 작성 및 관리지침」(교육부훈령 제555호) · 「초·중등교육법 시행규칙」(교육부령 제378호) | 저작권법 제7조 제1호·제2호 |
서식 이미지·표는 복제하지 않았습니다. 항목 구성만 안내하고 원문 링크를 답니다. 자세한 확인 메모와 싣지 않기로 한 다섯 건은 양식 라이브러리에 있습니다.
7. 아직 확인하지 못한 것 · 비워 둔 것
모르는 것을 아는 척하지 않습니다. 아래는 지금 이 서비스에 없는 것들입니다.
언어모델(LLM) 연결
비워 두었습니다. 붙이려면 교사가 입력한 상담 내용을 외부로 보내야 하고, 그러려면 위 4번의 조건이 먼저 갖춰져야 합니다.
한글(.hwp) · 워드(.docx) 내보내기
없습니다. 지금은 .txt 다운로드와 클립보드 복사뿐입니다. 학교에서 실제로 쓰는 형식은 .hwp 이므로 우선순위가 높습니다.
생활기록부 글자수 상한 표시
표시하지 않습니다. 글자 수는 세지만 상한값은 적지 않습니다 — 「학교생활기록 작성 및 관리지침」 원문과 해당 연도 기재요령을 대조하지 못했기 때문입니다. 추정해서 적지 않습니다.
법령 조문 원문 대조
국가법령정보센터 원문을 직접 열람하지 못했습니다(robots 정책). 조문 번호·문구는 2차 자료로 확인한 수준입니다. 배포 전에 원문 대조가 필요합니다.
로그인 · 에그머니 · 이용 기록
없습니다. 백엔드가 없으므로 등급(PRO) 확인도 하지 않습니다. 허브 인증 SDK 연결은 다음 단계입니다.
낙인 표현 필터의 한계
규칙 기반이라 규칙에 없는 표현은 잡지 못합니다. 반대로 맥락상 문제없는 문장을 잡을 수도 있습니다. 이 필터는 교사의 판단을 대체하지 않습니다.