우리 반 1일 학생 감정 날씨 & 또래 관계망 관찰 대시보드
🌦️ 아침 등교 시 학생들이 교실 태블릿에 오늘의 감정 날씨(맑음·구름·비·천둥)와 한 줄 소감을 남기면, 교사 화면에는 감정 변화 추이와 관심 필요 학생이 색상별로 시각화되는 정서 케어 웹앱입니다.
학생용 간편 터치 모드와 교사용 비밀 통계 대시보드를 분리해 구동합니다 — 내 감정이 옆 친구 화면에 남지 않는 설계가 정직한 기록을 만듭니다. 모든 데이터는 교사 태블릿 안에서만 완결됩니다.
📖 한 줄 정의
심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).
학내망 원칙: 학교 배포 웹앱은 개인정보 수집·저장·전송 없음(외부 CDN·API 호출 0, 단일 파일) — 학생은 학내망에서 교사 PC 서버에 접속.
1. 3대 핵심 분석 비교표
| 무엇이 바뀌었나요? / 영역 | 초보자를 위한 쉬운 설명 | 이렇게 한번 써보세요! |
|---|---|---|
| 10초 감정 체크인 | 아침 자리에 앉자마자 태블릿에서 감정 아이콘 하나, 한 줄 소감 하나 — 인사말 겸 정서 신호등이 매일 아침 켜집니다. | 교실 입구 태블릿 스탠드에서 등교하며 순서대로 터치 체크인. |
| 제출 즉시 초기화(프라이버시) | 한 줄 소감을 제출하면 화면이 즉시 깨끗하게 지워집니다 — 다음 학생에게 내 감정과 문장이 보이지 않습니다. | 입력 후 자동 초기화 루틴 확인 — 프라이버시가 곧 정직한 기록을 만듭니다. |
| 교사용 비밀 대시보드 | 비밀번호 토글로만 열리는 통계 화면에서 감정 분포·추이·관심 필요 학생을 색상별로 확인합니다 — 학생 화면과 완전히 분리됩니다. | 아침 인사 후 교탁 PC에서 대시보드 열어 오늘의 정서 지도 파악. |
2. 핵심 아키텍처 해설
① 감정 날씨 상수
const MOODS = [
{ key: "맑음", color: "#ffe066", score: 2 },
{ key: "구름", color: "#c9d6df", score: 1 },
{ key: "비", color: "#8ab6d6", score: 0 },
{ key: "천둥", color: "#5c6b73", score: -1 }
];
감정을 날씨 말로 바꾼 이유는 간단합니다 — 날씨에는 맑음이 곧 '좋은 사람'이라는 뜻이 없습니다. 학생은 상태를, 교사는 흐름을 보게 됩니다.
② 학생 입력 + 즉시 초기화
function submitMood(no, moodKey, note) {
LOG.push({ at: nowStamp(), no: no, mood: moodKey, note: note });
document.getElementById("note").value = "";
showThankYou(); // 제출 화면 3초 표시 후 홈으로
sound("ding");
}
기록은 교사 태블릿 세션 안에만 쌓이고, 학생 화면은 남김없이 초기화됩니다 — '보였을 불안'이 없어야 진짜 감정이 나옵니다.
③ 교사용 비밀번호 토글
function openBoard(pin) {
if (pin !== TEACHER_PIN) { sound("nope"); return false; }
document.getElementById("board").classList.add("on");
return true;
}
// TEACHER_PIN은 파일 상단 상수 — 학생 화면에는 절대 표시되지 않음
④ 관심 필요 감지
function careList() {
return LOG.filter(function (m) {
return m.mood === "비" || m.mood === "천둥";
});
}
// 연속 저기분 번호는 대시보드에서 진한 색으로 표시
⑤ CSV 아카이빙과 원칙
function moodCSV() {
return LOG.map(function (m) {
return [m.at, m.no, m.mood, m.note.replace(",", "·")].join(",");
}).join(";");
}
// 소감 속 쉼표는 가운뎃점으로 치환해 CSV 칸을 보호
주간 기록은 로컬 파일로 보관(자동 외부 전송 없음), 상담 연계는 교사의 수동 결정으로 남깁니다 — 감정 데이터는 도구가 판단하는 것이 아니라 사람이 확인하는 것입니다.
3. 초보자를 위한 바이브 코딩 실전 사용 예시
- 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트' 전체를 복사해 Gemini에 붙여넣습니다.
- 역질문 답변 — Gemini의 질문 3가지(감정 아이콘 종류, 대시보드 열림 방식, CSV 서식)에 답하면 설계가 확정됩니다.
- HTML 파일 실행 — 완성 코드를 '감정날씨.html'로 저장 후 더블클릭. 학생 모드와 교사 모드가 한 파일 안에서 전환됩니다.
제미나이 전용 에러 제로 프롬프트
[🚨 에러 방지 기본 안전장치]
1. 결과물은 외부 라이브러리·폰트·이미지 없이 단일 HTML 파일 — 더블클릭 즉시 실행(서버·설치·회원가입·외부 클라우드 금지).
2. 학생 표기는 번호·닉네임만(실명·연락처 저장 금지) — 감정 데이터는 민감 정보이므로 화면 표시를 최소화한다.
3. 학생 모드: 감정 아이콘 4종 터치 + 한 줄 소감 입력 → 제출 즉시 화면 완전 초기화(다음 학생에게 표시 안 됨).
4. 교사 모드: 파일 상단 TEACHER_PIN 상수로 비밀번호 토글 — 학생 화면에는 절대 표시되지 않는 통계 대시보드.
5. 대시보드: 감정 분포(색상별), 좌석 지도(seat map) 위 감정 색, 연속 저기분 관심 목록(진한 색 표시).
6. 소감 속 쉼표는 가운뎃점(·)으로 자동 치환 — CSV 칸 보호. 'CSV 내보내기'로 로컬 파일 저장(자동 외부 전송 없음).
7. 태블릿 터치 대응: 감정 아이콘 최소 88px, 360px 가로 스크롤 금지. 사운드는 Web Audio 합성(제출 '딩', 오류 '삑').
8. // TODO, /* 생략 */ 금지 — 끝까지 완성.
[❓ 역질문 유도]
Q1. 감정 아이콘은 몇 종? (기본 4: 맑음·구름·비·천둥 — 학급 회의로 조정)
Q2. 대시보드 열림 방식은? (비밀번호 토글 / 이중 버튼 길게 누르기)
Q3. 주간 기록 CSV 서식은? (날짜,번호,감정,소감 기본)
🎯 에디터 한줄평
'오늘 기분 어때?'라는 물음이 '10초 체크인'이 되는 교실 아침 — 정서 케어의 시작은 대화이고, 이 도구는 대화가 필요한 학생의 조기 신호를 놓치지 않게 해줍니다. 제출 즉시 초기화와 비밀 대시보드의 이중 설계가 백미입니다. 도구가 학생을 판단하는 게 아니라, 교사가 신호를 확인하는 구조라는 점이 정서 교육의 올바른 자세입니다.
📚 기술·교육 참고 링크
- MDN — Element.classList : 학생 모드·교사 모드 화면 전환
- 교육과정 연계: 창의적 체험활동(정서·배려), 사회(공동체)와 함께 활용 — 상담 연계는 학교 전문 상담 체계에 따름