# PRD 표준 템플릿 v2 — "계속 개발 가능한 업무"를 위한 설계서

> **핵심 원칙: 코드가 아니라 PRD가 자산입니다.**
> 앱이 깨져도, 담당자가 바뀌어도, 이 문서만 있으면 AI로 언제든 다시 만들 수 있습니다.
> 작성한 PRD는 Claude **프로젝트 지시문**에 넣어 사용합니다 — 모든 대화가 이 규격 안에서 동작합니다.
> 수정이 필요하면 **코드를 고치지 말고 PRD를 고친 뒤 재생성**하세요.

---

## [템플릿] 아래 빈칸을 채워서 사용하세요

```
# [도구 이름] PRD v[버전]  (최종 수정: 날짜 / 작성: 이름)

## 1. 목적 (한 문장)
[입력할 것]을 넣으면 [나올 결과]가 나오는 도구.
사용자: [누가, 어떤 업무에서 쓰는가]

## 2. 입력 / 출력 명세
- 입력: [파일 형식] — 컬럼: [컬럼명을 영문으로 정확히 나열]
  ※ 컬럼명 규칙: 한글·공백·특수문자 금지, 단위를 이름에 포함 (예: TPH_ugL), 날짜는 YYYY-MM-DD
- 출력: [화면에 보일 것 — 표, 카드, 차트 종류] + [내보내기 — 엑셀 다운로드 등]

## 3. 판정·처리 규칙 (사람이 정하는 기준 — AI에게 맡기지 않음)
- [조건] → [판정/처리]  (예: OO > 기준값 → "초과")
- [조건] → [판정/처리]
- 근거: [기준값의 출처 — 법령, 내부 지침, 업무 매뉴얼]

## 4. AI 역할과 폴백
- AI가 하는 일: [해석, 요약, 초안 작성 등 — 판정이 아닌 '설명']
- AI 프롬프트 요지: [역할 부여 + 규칙 전달 + 출력 형식·길이 지정]
- 폴백: API 키가 없거나 오류 시 → [규칙 기반 문구로 자동 전환] (수업/업무 중단 방지)

## 5. 기술 제약
- 단일 HTML 파일, 브라우저에서 바로 실행 (서버·빌드 없음)
- 라이브러리: [SheetJS, Chart.js 등 CDN 명시]
- 디자인: [테마 — 예: 공공기관 남색 #1A3A6B]
- 보안: API 키·DB 키는 입력창으로 받기 (코드에 하드코딩 금지, GitHub 업로드 금지)

## 6. 완료 기준 (Definition of Done) — 검증 가능해야 함
- [ ] [샘플데이터 파일명]을 넣으면 [구체적 기대 결과 — 건수, 판정 분포]가 나온다
- [ ] [경계 케이스]가 [기대 판정]으로 표시된다
- [ ] 새로고침 후에도 [유지되어야 할 것]이 유지된다
- [ ] 배포 URL에서 위 항목이 모두 동일하게 동작한다

## 7. 유지·확장
- 버전 규칙: 동작 확인된 파일은 [이름_v번호.html]로 저장 후 다음 수정 진행
- 변경 원칙: 요구 변경 시 이 PRD를 먼저 수정 → "PRD대로 다시 만들어줘"로 재생성
- 다음 단계(백로그): [지금은 안 만들지만 언젠가 넣을 기능 목록]
- 인수인계: 이 PRD + 샘플데이터 + 최신 버전 파일 3종이면 누구든 이어받을 수 있음
```

---

## [작성 예시] 수질 측정 데이터 AI 분석 대시보드 (Day 1 공통 예제)

```
# 수질 측정 데이터 AI 분석 대시보드 PRD v1  (최종 수정: 2026-09-03 / 작성: 지하수관리부)

## 1. 목적 (한 문장)
관정별 수질 측정 엑셀을 넣으면 이상치·오염 판정과 AI 해석이 담긴 대시보드가 나오는 도구.
사용자: 지하수 수질 담당자 — 분기 측정 결과 검토·보고에 사용

## 2. 입력 / 출력 명세
- 입력: .xlsx — 컬럼: well_id, measure_date, GWL_m, EC_uScm, DO_mgL, ORP_mV, pH, TPH_ugL
- 출력: 판정 카드 4개(전체/정상/주의/오염 의심) + 관정별 TPH 시계열(기준선 500) +
  판정 분포 도넛 + 전체 표(판정 뱃지, AI 해석 컬럼)

## 3. 판정·처리 규칙
- TPH_ugL > 500 → "오염 의심" (빨강)
- DO_mgL > 15 → "이상치" / DO_mgL < 2 또는 ORP_mV < 0 또는 EC_uScm ≥ 2000 → "주의" (노랑)
- 그 외 → "정상" (초록)
- 근거: 먹는물 TPH 기준 500µg/L, 혐기 환경 DO 2 이하, EC 2,000 이상 오염 가능성 (분석지침)

## 4. AI 역할과 폴백
- AI가 하는 일: 관정 단위 시계열을 읽고 상태를 행정 문서 어조 60자 요약 (판정은 규칙이 담당)
- AI 프롬프트 요지: "환경부 수질 분석 전문가" 역할 + 3번 기준 전달 + "한 문장만 출력"
- 폴백: 키 없음/오류 시 규칙 기반 요약문으로 자동 전환

## 5. 기술 제약
- 단일 HTML, SheetJS CDN, Chart.js CDN, claude-sonnet-4-6
- 디자인: 공공기관 남색 #1A3A6B, 배경 #EEF2F7
- API 키는 상단 입력창으로 받기, 코드 하드코딩 금지

## 6. 완료 기준 (Definition of Done)
- [ ] 수질측정_샘플데이터.xlsx를 넣으면 30건 = 정상 25 / 주의 2 / 이상치 1 / 오염 의심 2
- [ ] W02의 TPH 320 행이 "주의"로 표시된다 (기준 미만이지만 DO 1.8 — 조기 신호 확인)
- [ ] W01의 DO 25.0 행이 "이상치"로 표시된다
- [ ] Supabase 저장 후 새로고침해도 데이터가 유지된다 (Step 3)
- [ ] Vercel 배포 URL에서 위 항목이 모두 동작한다

## 7. 유지·확장
- 버전 규칙: step2_v1.html → 기능 추가 시 v2로 저장 후 진행
- 변경 원칙: 기준값 변경(예: TPH 500→800)은 PRD 3번 수정 → 재생성 (코드 직접 수정 금지)
- 다음 단계: 월간 보고서 자동 생성(docx), 관정 위치 지도 표시, 알림 기능
- 인수인계: 이 PRD + 샘플데이터 + step3_v1.html
```

---

## 강사 노트 — 이 템플릿으로 가르치는 3가지 습관

1. **규칙과 AI를 분리하라 (3번↔4번)**: 판정 기준은 사람이 명문화하고 AI는 해석만.
   "AI가 알아서 판단"은 환각의 입구 — 기준이 문서에 있으면 결과를 검증할 수 있다.
2. **완료 기준 없이 시작하지 마라 (6번)**: "다 됐는지"를 AI에게 묻지 말고 체크리스트로 스스로 판정.
   수정을 반복해도 6번만 통과하면 안 깨진 것 — 이것이 반복 가능한 개발의 안전장치.
3. **코드가 아니라 PRD를 고쳐라 (7번)**: 코드에 땜질을 쌓으면 나만 아는 도구가 되고,
   PRD를 갱신하면 부서의 자산이 된다. 프로젝트 지시문에 넣는 순간 인수인계가 자동화된다.

Day 1: 1~6번까지 작성 실습 / Day 2: 팀 PRD로 7번까지 완성 /
클로징: "오늘의 성과물은 앱이 아니라, 여러분 업무가 문서화된 PRD입니다."
