상담 기록이 내 PC 안에만 있는다 — 관찰·상담 암호화 로컬 볼트 완전 정복
🔐 학생들의 심리 상담 일지, 교우관계 갈등 관찰 메모, 민감한 가정환경 메모 — 이런 기록이 외부 클라우드에 올라가 있다는 상상만으로도 마음이 불편했습니다. 이번 글은 옵시디언(Obsidian) 로컬 볼트(vault, 금고 폴더)에 기록하고, 필요한 메모만 암호화(encryption)해 개인 PC·USB에 두는 교사 전용 기록 방식을 다룹니다.
관찰 메모를 생기부 '행동특성 및 종합의견' 서식 문장으로 바꾸는 일은 두 단계로 — 기본은 제미나이 프롬프트로 만든 단일 HTML 관찰 서식기(템플릿 조립 — 통신 0), 확장은 로컬 LLM(대형 언어 모델, Large Language Model) 단축키 변환. 민감 정보의 외부 유출을 원천 차단하면서 생활지도 기록·생기부 작성 시간을 함께 줄입니다.
📖 한 줄 정의
심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).
학내망 원칙: 학교 배포 웹앱은 개인정보 수집·저장·전송 없음(외부 CDN·API 호출 0, 단일 파일) — 학생은 학내망에서 교사 PC 서버에 접속.
1. 3대 핵심 분석 비교표
| 무엇이 바뀌었나요? / 영역 | 초보자를 위한 쉬운 설명 | 이렇게 한번 써보세요! |
|---|---|---|
| 외부 유출 0 원칙 | 클라우드 업로드 일절 금지 — 볼트(금고 폴더)는 내 PC 또는 USB에만. 노트북 분실 대비 민감 메모는 암호화 플러그인으로 잠금. | 암호화 잠금 문구. |
| 볼트 구조 | 학생별 파일은 번호·닉네임 기준(실명 최소), 관찰·상담·후속 3폴더 구조 + 학기마다 새 볼트(교체 루틴). | 폴더 구조 설계서. |
| 행특 문장 변환 2단계 | ① 기본: 단일 HTML 서식기로 관찰 템플릿 문장 조립(통신 0). ② 확장: Ollama 로컬 LLM으로 객관적 성장 서술문 초안 자동 요약(내 PC에서만 추론). | makeActionSentence. |
| 원칙·정합 | 기본 도구는 제미나이 전용 프롬프트 산출물(단일 HTML), 로컬 LLM은 확장 옵션으로 분리, 메모는 번호·닉네임 중심(실명 파일명 금지) — 생활지도 기록의 오프라인 안전망. | EMBED_TEMPLATES. |
2. 핵심 아키텍처 해설
① 옵시디언 볼트 폴더 구조
📁 상담볼트_2026/
├── 📁 01_관찰메모/ # 번호별 일일 행동 관찰 (예: 03_여우.md)
├── 📁 02_상담일지/ # 상담 내용 요약 (민감 문단은 암호화 잠금)
└── 📁 03_행특초안/ # 생기부 나이스 입력용 서술문
파일명에 학생 실명을 쓰지 않고 번호와 닉네임을 조합합니다. 파일 탐색기나 화면을 동료가 언뜻 보더라도 개인정보가 바로 노출되지 않습니다.
② 단일 HTML 관찰 서식기 (기본 도구)
const TEMPLATES = {
나눔: "모둠 활동에서 자료를 기꺼이 공유하고 협력하는 태도가 돋보임.",
경청: "친구의 의견을 끝까지 듣고 긍정적인 피드백을 전달함.",
도전: "어려운 과제에도 포기하지 않고 스스로 해결 방안을 모색함."
};
function buildReport(no, tags, note) {
const sentences = tags.map(function (t) { return TEMPLATES[t]; }).join(" ");
return no + "번 학생: " + sentences + " " + note;
}
관찰 키워드를 클릭하면 나이스 행동특성 규격에 맞춘 완성 문장으로 자동 조립됩니다. 외부 통신 0, 서버 0의 단일 HTML로 돌아갑니다.
③ 로컬 LLM 연동 (확장 모드)
// 내 PC 안에서만 돌아가는 Ollama 로컬 API 호출 예시
async function localSummary(notes) {
const res = await fetch("http://localhost:11434/api/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "gemma2:2b",
prompt: "다음 관찰 메모를 생기부 행동특성 2문장으로 객관 요약해줘: " + notes,
stream: false
})
});
const data = await res.json();
return data.response;
}
인터넷 랜선을 뽑아도 동작하는 순수 로컬 추론입니다. 학생 메모가 외부 어떤 기업의 서버로도 날아가지 않습니다.
④ 원칙·정합
민감 상담 기록은 내 PC 안에서만 다루는 것이 최상의 보안입니다. 기본은 단일 HTML 서식기로 외부 통신 0을 달성하고, AI 요약이 필요할 때도 상용 클라우드가 아닌 내 컴퓨터의 로컬 모델을 호출하여 개인정보보호법을 기술적으로 완벽하게 준수합니다.
3. 초보자를 위한 바이브 코딩 실전 사용 예시
- 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트' 전체를 복사해 Gemini에 붙여넣습니다.
- 역질문 답변 — Gemini의 질문 3가지(관찰 영역 범주, 나이스 서술 톤, 로컬 연동 여부)에 답하면 설계가 확정됩니다.
- HTML 파일 실행 — 완성 코드를 '관찰서식기.html'로 저장 후 더블클릭 — 교사 개인 PC에서 안전한 생활지도 관찰을 시작합니다.
제미나이 전용 에러 제로 프롬프트
[🚨 에러 방지 기본 안전장치]
1. 결과물은 외부 라이브러리·CDN 의존성 없이 단일 HTML 파일로 완성한다.
2. 사운드는 Web Audio API로 직접 합성한다: 기록 저장 '똑', 문장 생성 '팡파르'. 오디오 파일 사용 금지.
3. 파일 상단 TEMPLATES 상수에 행동특성 표준 문구(나눔·경청·도전 등)를 카테고리별로 정의해두어 외부 통신 없이 문장을 조립한다.
4. 학생 표기는 번호와 닉네임 기준(실명 저장 금지). 화면에 실명 칸을 만들지 않는다.
5. 관찰 기록은 세션 메모리에서 관리하며, 화면의 '초안 텍스트 복사' 버튼으로 옵시디언 볼트나 나이스에 직접 붙여넣도록 유도한다.
6. 로컬 LLM(Ollama) 연동 토글을 제공하되, 기본값은 오프라인 단일 HTML 조립 모드로 두고 http://localhost:11434 호출은 교사가 명시적으로 활성화할 때만 실행한다.
7. 외부 클라우드, 구글 드라이브, 상용 AI API 호출 코드를 절대 넣지 않는다(학내망 개인정보 보호 원칙).
8. // TODO, /* 생략 */ 같은 미완성 코드는 절대 넣지 말고 끝까지 완성한다.
[❓ 역질문 유도]
코드를 바로 만들지 말고, 아래 3가지를 먼저 나에게 질문한 뒤 내 답변으로 설계를 확정한다.
Q1. 중점 관찰 영역 3~4가지는 무엇으로 할까? (인성·배려, 자기관리, 수업참여 등)
Q2. 문장 조립 시 종결어미 톤은? (~하는 모습이 관찰됨 / ~하며 협력적으로 참여함)
Q3. 로컬 LLM(Ollama) 연동 기능을 폼 하단에 포함할까, 순수 템플릿 모드로만 할까?
🎯 에디터 한줄평
아이들의 아픔이나 갈등이 적힌 메모는 법 이전에 교사의 양심이 지켜야 할 가장 무거운 데이터입니다. '내 컴퓨터 안에만 둔다'는 단순한 오프라인 원칙 하나가 모든 유출 불안을 씻어줍니다. 템플릿 문장 조립으로 기본을 잡고, 로컬 인공지능으로 객관적 초안을 다듬는 2단계 설계 — 교실 생활지도의 따뜻함과 기술의 안전성이 가장 이상적으로 만난 형태입니다.
📚 기술·교육 참고 링크
- Obsidian 공식 웹사이트 : 마크다운 기반 로컬 전용 개인 지식 볼트
- Ollama 공식 웹사이트 : 내 컴퓨터에서 인터넷 없이 실행하는 로컬 LLM
- 교육·행정 연계: 개인정보보호법 준수 및 학생 생활기록부 '행동특성 및 종합의견' 작성 가이드라인 참조