﻿# PRD — 교육 신청·만족도 프로세스 앱

> **실습 방식**: 내 PC 안(로컬) · Claude 데스크톱 앱 **Code** 탭 · 다운로드 › **Test** 폴더 · 가상 데이터만 사용
> 이 문서를 Claude Code가 그대로 읽고 앱을 만듭니다. 고치고 싶은 곳은 직접 고쳐도 됩니다.

## 1. 한 줄 정의
메일·팀즈로 받던 교육 신청과 그룹웨어 설문을 앱 하나로 옮겨, **직원은 «교육 신청 → 참석 응답 → 만족도 조사»를 앱에서 하고**, 담당자는 **교육마다 지금 어느 단계인지**(신청 중 → 만족도 조사 → 결과 보고)와 명단·분석 자료를 한 화면에서 관리하는 앱.

## 2. 누가 쓰나
| 역할 | 하는 일 |
|---|---|
| 본사 직원 (약 30명, 분기 1회) | 신청형 교육 신청, 전원참석형 교육 참석/불참 응답, 교육 후 만족도 조사 |
| 교육 담당자 | 교육별 단계 확인, 신청자·참석자 명단 관리·내보내기, 만족도 분석, 결과보고서 작성 |

## 3. 오늘 만들 기능 (필수)
- [ ] **교육 신청 메뉴**: 신청형 교육은 [신청하기](정원이 차면 «대기»), 전원참석형 교육은 [참석 / 불참] + 불참 사유
- [ ] **만족도 조사 메뉴**: 내가 참석한 교육의 5문항(1~5점) + 좋았던 점·개선할 점, 진행률 막대, 제출
- [ ] **담당자 운영 흐름**: 교육별 단계 보드(① 신청·참석 조사 중 ② 만족도 조사 ③ 결과 보고), 참석 조사 도넛, 부서별 신청·참석 막대, 불참 사유 막대, 신청자 명단 CSV 내보내기
- [ ] **결과 분석**: 교육별 만족도 평균과 문항별 비교 막대, 개선 의견 주제 × 교육 표
- [ ] **결과보고서 초안 보기**: Claude Code가 만든 `report_T02.md` 를 결과 분석 탭 카드에 표시

## 4. 화면 구성
1. **상단**: 앱 이름 · [담당자 · 운영 흐름 / 직원 · 신청·만족도 / 담당자 · 결과 분석] 탭 · 오늘 날짜(2026-11-04 고정)
2. **운영 흐름**: 4단계 흐름 띠(신청·참석 조사 → 명단 확정 → 만족도 조사 → 결과 보고) → 단계별 칸에 교육 카드(진행 막대) → 참석 조사 도넛 · 부서별 막대 · 불참 사유 막대
3. **직원 화면**: 왼쪽 교육 신청 카드(신청형 / 전원참석형) + 내 교육 이력 / 오른쪽 만족도 조사 문항
4. **결과 분석**: KPI 4개 → 교육별 문항 평균 막대 2개(나란히) → 개선 의견 주제 표 + 응답률 + Claude Code 보고서 초안 카드
5. 그래프에 **마우스를 올리면 수치가 말풍선으로** 보이고, 카드에 마우스를 올리면 그래프가 다시 채워지는 애니메이션

## 5. 데이터 — 파일과 항목 (모두 가상 데이터)
| 파일 | 항목 |
|---|---|
| `data/courses.csv` | 교육ID, 교육명, 구분(신청형/전원참석형), 일시, 장소, 정원, 신청마감, 상태 — 4분기 교육 4개 |
| `data/employees.csv` | 사번, 이름, 부서, 직급 — 본사 직원 30명 |
| `data/applications.csv` | 신청ID, 교육ID, 사번, 신청시각, 응답(신청/대기/참석/불참), 불참사유 — 82건 |
| `data/survey.csv` | 응답ID, 교육ID, 사번, Q1~Q5(1~5), 좋았던점, 개선점 — 38건 |

- 신청형: 정원까지 «신청», 넘으면 «대기». 전원참석형: 직원 30명 중 응답한 사람만 «참석/불참», 나머지는 «미응답».
- 교육 단계: 상태가 «신청중·참석조사중» → ①, 만족도 응답은 있고 보고서가 없으면 → ②, 보고서(md)가 있으면 → ③
- 저장 위치: 브라우저 저장공간(localStorage) + CSV 파일. **외부 서버·데이터베이스를 쓰지 않습니다.**

## 6. AI 분석은 Claude Code가 합니다
앱 안에서 AI를 부르지 않습니다(사내 기준: 별도 API 키 없음). 대신:
1. 결과 분석 탭의 **[분석 요청문 복사]** → Claude Code 입력창에 붙여넣기
2. Claude Code가 `data/survey.csv`·`applications.csv` 를 읽어 **참석·불참 현황, 문항별 해석, 개선 의견 주제 묶기, 개선안**을 `report_T02.md` 로 저장
3. 앱이 `report_T02.md` 를 읽어 «Claude Code 결과보고서 초안» 카드에 표시하고, 그 교육을 ③ 결과 보고 칸으로 옮김

## 7. 기술 원칙 (로컬 실행)
- 폴더 하나: `Test/training-process/` 안에 `index.html`, `style.css`, `app.js`, `data/`
- 순수 HTML·CSS·JavaScript. 외부 인터넷 주소(CDN·글꼴)를 불러오지 않음 — 그래프는 직접 그리거나 라이브러리 파일을 폴더 안에 내려받아 사용
- 실행: `python -m http.server 8765` → 브라우저에서 `http://localhost:8765`
- 결과물은 폴더째 zip으로 묶어 가져감. 인터넷에 올리지(배포하지) 않음

## 8. 원래 요청에서 조정한 부분
| 원래 요청 | 오늘은 이렇게 | 이유 |
|---|---|---|
| 직원들이 웹앱에 각자 접속해 신청 | 한 PC에서 «직원 / 담당자» 탭을 바꿔 가며 시연 + 명단 CSV 내보내기 | 외부 배포 금지 — 여러 사람이 접속하려면 인터넷 공개가 필요 |
| 메일·팀즈로 신청 안내·알림 | 미응답자 명단 + 안내 문구 미리보기(복사해서 직접 보내기) | 메일 자동 발송은 사내 메일 시스템 연동이 필요 |
| 만족도 분석·최종 보고서 작성 | 앱은 집계, 보고서 초안은 Claude Code가 `report_T02.md` 로 작성 | 앱 안 AI 호출에는 별도 API 키가 필요 |

## 9. 완료 기준 (테스트)
- [ ] CSV를 불러오면 교육 **4개**, 직원 **30명**, 신청·응답 **82건**, 만족도 **38건**이 들어온다
- [ ] «엑셀 데이터 분석 실무»가 신청 **11 / 정원 16**(남은 자리 5)으로 보이고, 직원 화면에서 1명 신청하면 **12명**이 된다
- [ ] «생성형 AI 업무 활용»은 정원 20명이 차서 **대기 2명**으로 표시된다
- [ ] «직장 내 괴롭힘 예방교육» 참석 조사가 응답 **19 / 30**(참석 18 · 불참 1 · 미응답 11)으로 나온다
- [ ] 만족도 평균이 «생성형 AI 업무 활용» **4.39점**(18명), «개인정보보호 법정교육» **3.94점**(20명)이고, 두 교육 모두 «교육 시간» 문항이 4점 미만이다
- [ ] 만족도 1건을 제출하면 해당 교육 응답 수가 1 늘고, 새로고침(F5)해도 남아 있다
- [ ] [분석 요청문 복사] 후 Claude Code에 붙여넣으면 `report_T02.md` 가 생기고 결과 분석 탭에 보인다
- [ ] 폴더를 zip으로 묶어 다른 폴더에 풀어도 똑같이 실행된다

## 10. 다음 단계 (집에서 더 키울 것)
- 신청 마감 하루 전 미응답자 안내 문구 자동 만들기
- 분기별 교육 실적 누적 비교
- 사내 메일·그룹웨어 연동은 사내 IT 검토 후

## 11. 웹앱·서버 버전 (교육 후, 사내 기준 확인 뒤)

로컬판이 완성된 뒤, 직원 30명이 각자 접속해 신청하고 만족도를 남기는 웹앱으로 옮길 때의 설계입니다. 신청은 사내 설문 도구로 받고 명단 관리·분석만 한다면 로컬판으로 충분합니다. **실제 직원 데이터는 사내 IT 승인 전에는 넣지 않습니다.**

| 구분 | 로컬판 | 웹앱판 |
|---|---|---|
| 입력 | 담당자가 CSV 불러오기 | 직원 30명이 각자 로그인해 신청·만족도 입력 |
| 저장 | 브라우저 저장공간 + CSV | Supabase 표 4개(교육·직원·신청·참석·만족도) |
| 화면 주소 | localhost (내 PC) | Vercel 주소 (모두 같은 주소) |
| 권한 | 없음(탭 전환) | 직원은 내 응답만, 담당자는 전체 관리 |

- 로그인: Supabase 이메일 로그인. 담당자 계정은 «담당자» 역할 표시
- 잠금 설정: 로그인한 사람만 데이터 보기, 직원은 자기 신청·응답만 보고 고치기
- 선착순·정원 초과 시 대기, 전원참석형 참석·불참 응답, 문항별 평균 집계는 로컬판과 같게 유지
- 가상 데이터(data 폴더 CSV)로 먼저 채워 시험한 뒤 실제 사용은 IT 확인 후

### 웹앱판 완료 기준
- [ ] 직원 계정으로 «엑셀 데이터 분석 실무»를 신청하면 담당자 화면에서 신청이 11명 → 12명이 된다
- [ ] 직원 계정에는 내 신청·응답만 보이고, 다른 직원의 응답은 보이지 않는다
- [ ] 다른 PC(또는 휴대폰)에서 같은 주소로 들어가도 만족도 평균 4.39점 · 3.94점이 같게 보인다
- [ ] 로그인하지 않으면 데이터가 보이지 않는다
