
# PRD — 작업 보고서 PPTX 생성 웹앱

> **PRD(Product Requirements Document)**: 무엇을, 왜, 누구를 위해 만드는지 정의하는 기획 문서.

---

## 1. 개요

| 항목 | 내용 |
|---|---|
| 제품명 | 작업 보고서 PPTX 생성 웹앱 (가칭) |
| 목적 | 작업자가 텍스트·이미지 보고서를 입력하면, 국순당 템플릿 형식의 PPTX로 출력 |
| 핵심 가치 | 보고서 작성 → 통일된 서식의 발표자료 자동 생성 (수작업 제거) |
| 개발 도구 | Google AI Studio (Gemini 기반 코드 생성·프로토타입) |
| 데이터 저장 | Firebase Firestore |
| 문서 버전 | v1.0 |

---

## 2. 문제 정의

- 작업자마다 보고서 서식이 제각각 → 통일 필요
- 텍스트 요약 + 현장 사진을 매번 수동으로 PPT에 배치 → 시간 소모
- 관리자가 여러 보고서를 한 파일로 취합하기 번거로움

**해결**: 정해진 템플릿(`template_pdf.pdf`)에 입력만 하면 자동으로 PPTX 완성.

---

## 3. 사용자 정의 (행위자)

### 3.1 일반회원 (작업자)
- 로그인 후 본인 보고서 작성·수정·삭제
- 텍스트 보고서 + 이미지 보고서 입력
- 미리보기 확인 후 PPTX 다운로드

### 3.2 관리자 (admin)
- 지정된 관리자 이메일로 로그인 시 관리자 화면
- 회원 목록 조회, 회원 삭제, 보고서 삭제
- 회원 보고서를 개별 또는 하나의 PPTX로 취합 출력

---

## 4. 핵심 기능 요구사항

### 4.1 인증 / 회원
| ID | 요구사항 |
|---|---|
| A-1 | 이메일+비밀번호 로그인 (Firebase Authentication) |
| A-2 | 가입 시 자동 승인 (이메일 인증 없음) |
| A-3 | 가입 정보: 이메일, 비밀번호, 이름, 부서/소속 |
| A-4 | 관리자 이메일은 코드에 고정 지정, 해당 계정만 관리자 화면 진입 |

### 4.2 보고서 작성 (작업자)
| ID | 요구사항 |
|---|---|
| R-1 | 텍스트 보고서: CKEditor5 편집기로 작성 (작업자가 직접 요약 입력) |
| R-2 | 텍스트 서식(표·색상 포함) 최대한 유지하여 PPTX 반영 |
| R-3 | 이미지 보고서: 1~6장 첨부, 각 이미지에 간단설명(글자 수 제한 없음) |
| R-4 | 본인 보고서만 접근 가능 (수정·삭제 포함) |
| R-5 | 임시저장: 작성 중 이탈해도 이어쓰기 가능 |
| R-6 | 이미지 드래그로 순서 변경 → 순서가 PPTX 배치 칸을 결정 |

### 4.3 PPTX 출력
| ID | 요구사항 |
|---|---|
| P-1 | 템플릿 구조 준수: [텍스트 페이지 1~N] + [이미지 페이지] |
| P-2 | 1페이지(텍스트): 내용이 넘치면 페이지 자동 추가 |
| P-3 | 텍스트 이어지는 페이지: 머리말(제목·로고·띠) 없이 내용만 |
| P-4 | 2페이지(이미지): 장수(1~6)별 고정 레이아웃 적용 |
| P-5 | 이미지 설명이 칸보다 길면 글자 자동 축소(최소 크기 이하는 잘림) |
| P-6 | 브랜드 색상·로고·파란 띠를 코드로 재현 |
| P-7 | 미리보기 화면 확인 후 다운로드 |
| P-8 | PPTX 생성은 브라우저에서 처리 (서버 없음) |

### 4.4 관리자 기능
| ID | 요구사항 |
|---|---|
| M-1 | 회원 목록 조회 |
| M-2 | 회원 삭제 (보고서·이미지는 남김, 작성자 미상 처리) |
| M-3 | 회원 보고서 삭제 |
| M-4 | 보고서 개별 PPTX 출력 |
| M-5 | 여러 보고서를 하나의 PPTX로 취합 (관리자가 순서 지정) |
| M-6 | 취합 시 보고서별 간지 1장 삽입 (제목·작성자·날짜) |
| M-7 | 대량 취합 시 1회 처리 개수 제한 (브라우저 과부하 방지) |

### 4.5 편의 기능
| ID | 요구사항 |
|---|---|
| E-1 | 작성일 기준 보고서 검색·필터 |
| E-2 | 이미지 드래그 순서 변경 (R-6과 동일) |

---

## 5. 템플릿 사양 (template_pdf.pdf 기준)

### 5.1 텍스트 페이지 (1페이지)
- 필드: `{{텍스트 제목}}`, `{{텍스트 부제목}}`, `{{기간}}`, `{{작성날짜}}`, `{{텍스트_보고서_영역}}`
- 상단: 주황 사각형 + 제목 + 국순당 로고
- `{{텍스트_보고서_영역}}`: CKEditor5 HTML 내용 삽입

### 5.2 이미지 페이지 (2페이지)
- 필드: `{{그림보고서_제목}}` (+ `_HACCP`), `{{그림_기간}}` (파란 띠 안 "…활동"), `{{그림영역}}`
- 상단: 제목 + 로고 / 그 아래 파란 띠(기간) / 본문: 이미지 + 설명

### 5.3 브랜드 색상
| 용도 | HEX |
|---|---|
| 파란 띠 (네이비) | `#002060` |
| 주황 사각형/포인트 | `#DD6909` |
| 로고 주황 원 | `#FA9F17` |
| 검정 글자 | `#221E21` |

---

## 6. 이미지 장수별 레이아웃 (P-4)

| 장수 | 배치 |
|---|---|
| 1장 | 중앙 크게 1개 |
| 2장 | 좌우 2분할 |
| 3장 | 상단 2 + 하단 1 (또는 가로 3분할) |
| 4장 | 2×2 |
| 5장 | 상단 3 + 하단 2 |
| 6장 | 2×3 (3열 2행) |

> 정확한 픽셀 배치는 FS 문서 참조.

---

## 7. 데이터 규칙

- 저장소: Firestore
- 이미지: 브라우저에서 업로드 시 자동 리사이즈 (800KB 이하 권장) 후 저장
- Firestore 문서 1MB 제한 → 이미지는 이미지별 문서(별도 컬렉션)로 분산 저장
- 이미지는 Base64 문자열로 Firestore에 보관

---

## 8. 사용자 흐름 (User Flow)

### 작업자
```
로그인 → 보고서 작성(텍스트 + 이미지 1~6장 + 설명)
     → 이미지 순서 조정 → 저장(임시저장 가능)
     → 미리보기 확인 → PPTX 다운로드
```

### 관리자
```
관리자 로그인 → 회원/보고서 목록 조회 (날짜 검색·필터)
          → 보고서 선택 + 순서 지정 → 취합 PPTX 생성(간지 포함)
          → 다운로드
          (필요 시 회원/보고서 삭제)
```

---

## 9. 범위 밖 (Out of Scope) — v1 미포함

- AI 자동 요약 (향후 옵션)
- 구글 계정 로그인
- 회원 정보 수정 (관리자)
- 이메일 인증
- Firebase Storage 사용 (Rule에 따라 Firestore만)

---

## 10. 성공 기준

- 작업자가 5분 내 보고서 작성 → PPTX 다운로드 완료
- 생성된 PPTX가 템플릿 서식과 색상을 정확히 재현
- 관리자가 다수 보고서를 1개 PPTX로 취합 성공
