# PRD - 국순당 소모품 구매신청 및 재고관리 앱

## 1. 개요

| 항목 | 내용 |
|---|---|
| 프로젝트명 | 국순당 소모품 구매신청/재고관리 앱 |
| 목적 | 부서별 소모품 구매신청 프로세스 전산화 + 재고 실시간 관리 |
| 개발환경 | Google AI Studio |
| 인증/DB | Firebase (Authentication, Firestore) |
| 플랫폼 | 반응형 웹앱 (모바일 + PC) |
| 기존 방식 문제 | 종이/엑셀 대장 수기작성 → 이력 누락, 재고파악 지연, 취합 리포트 작업 과다 |

### 용어 설명
- **PRD**: 제품요구사항문서. 앱이 해야 할 일을 정의한 문서
- **FS**: 기능명세서. PRD를 실제 개발 단위 기능으로 구체화한 문서
- **고정품목**: 관리자가 미리 등록·관리하는 표준 소모품 목록
- **추가품목**: 신청자가 신청 시점에 직접 새로 등록하는 품목(해당 신청 건 한정)
- **탕비위생품목**: 관리자가 관리하는 탕비실/위생용품 전용 목록
- **장바구니 신청**: 여러 품목을 한 번에 담아 하나의 신청 건으로 제출하는 방식

---

## 2. 대상 사용자

### 조직 구조
- 부서: 생산지원팀, 양조1팀, 양조2팀, 품질보증팀, 설비기술팀

### 역할(Role)
| 역할 | 설명 |
|---|---|
| 일반회원 | 소모품 신청, 본인 신청현황 조회 |
| 관리자 | 회원승인, 신청처리(승인/거절/취소/구매완료), 재고관리, 예산관리, 리포트 |

- 관리자는 전체 부서 통합 권한(모든 부서 신청 처리 가능)
- 최초 관리자 1명은 수동 생성, 이후 관리자가 다른 회원을 관리자로 승격 가능

---

## 3. 사용자 시나리오

### 3-1. 회원가입 및 로그인
1. 이메일로 회원가입(Firebase 이메일 인증), 도메인 제한 없음
2. 가입 시 소속 부서 본인 선택
3. 관리자 승인 전까지 앱 이용 불가(대기 상태)
4. 관리자 승인 완료 시 알림 뱃지 수신, 로그인 가능

### 3-2. 소모품 신청(일반회원)
1. 품목 종류 선택: 고정품목 / 추가품목 / 탕비위생품목
2. 고정품목·탕비위생품목: 품목이름/상품코드로 검색 후 선택
3. 추가품목: 신규 품목정보 직접 입력, 시스템이 고유번호 자동 생성(중복 방지)
4. 품목·수량을 장바구니에 담아 여러 품목을 한 번에 신청
5. 신청 시 품목 단가 기준 신청금액 자동 계산
6. 신청 완료 후 "대기" 상태로 등록
7. 마이페이지에서 본인 신청현황/상태 확인
8. 대기 상태인 신청 건은 본인이 직접 취소 가능
9. 관리자 승인 시 알림 뱃지 수신

### 3-3. 신청 처리(관리자)
1. 부서별 통합 신청 현황 조회
2. 신청 건(장바구니 단위) 승인 / 취소 / 거절 처리
   - **승인**: "구매예정 내역서" 대상으로 이동
   - **취소**: 신청자에게 반려 통보, 신청자는 수정 후 재제출 가능(기존 신청 유지)
   - **거절**: 신청 삭제
3. 부서별 월 예산 한도 설정, 초과 시 경고 표시
4. 구매 완료 처리
   - 처리 시 입고수량 입력
   - 재고수량 자동 차감(수동 수정 가능, 엑셀 일괄 입력 지원)
   - "전체불출내역" 데이터로 반영

### 3-4. 리포트/통계(관리자)
1. 부서별, 품목별, 기간별(주간/월/분기/연간) 통계를 표 + 그래프로 확인
2. "통합신청내역" 부서별 엑셀 리포트 출력(월 지정 가능)
3. "전체불출내역" PDF 리포트를 관리자가 원하는 기간 선택 후 수동 생성/출력

---

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

### 4-1. 인증/회원관리
- Firebase 이메일 회원가입/로그인
- 가입 시 부서 선택 필수
- 관리자 승인 전 서비스 이용 제한
- 관리자 승격 기능(관리자→관리자 지정)
- 퇴사자 계정 비활성화 처리(신청이력은 보존, 삭제하지 않음)

### 4-2. 품목 관리
- 고정품목/탕비위생품목: 관리자 CRUD(등록/수정/삭제), 품목이름·상품코드·단위·단가 관리
- 추가품목: 신청자가 신청 시 생성, 고유번호 자동생성 로직 필요, 해당 신청 건에만 종속(공용목록 미등록)

### 4-3. 신청 기능
- 장바구니형 신청(여러 품목 동시 담기)
- 신청 시 금액 자동계산(단가 × 수량)
- 신청 상태: 대기 → 승인/거절/취소
- 신청자 본인 취소: 대기 상태에서만 가능
- 신청현황 리스트/상세 조회

### 4-4. 승인/구매 프로세스
- 신청 건 단위 일괄 승인/거절/취소(품목별 개별승인 없음)
- 승인 시 "구매예정 내역서" 자동 추가
- 구매완료 처리 시 입고수량 입력 → "전체불출내역" 반영

### 4-5. 재고 관리
- 품목별 재고수량 관리(입고/사용/재고 자동계산)
- 승인·구매완료 처리 시 재고 자동 차감
- 관리자 수동 수정 가능
- 엑셀 일괄 업로드로 재고 일괄 반영 가능
- 최소재고 알림 기능은 미적용(범위 제외)

### 4-6. 예산 관리
- 부서별 월 예산 한도 설정
- 예산 초과 시 관리자 화면에 경고 표시

### 4-7. 알림
- 인앱 알림 뱃지 방식(웹푸시 아님)
- 대상: 일반회원(승인/반려/거절 통보), 관리자(신규 신청 발생 통보)

### 4-8. 리포트/출력
- 통계 리포트: 부서별/품목별/기간별(주/월/분기/연) 표+그래프
- "통합신청내역" 엑셀 출력(월 지정, 부서별) - 첨부 예제파일 양식 기준
- "전체불출내역" PDF 출력(관리자가 기간 선택, 수동 생성) - 첨부 예제파일 양식 기준

### 4-9. 데이터 정책
- 연도가 바뀌면 새 연도 문서로 초기화(과거 데이터는 조회만 가능, 삭제 아님)

---

## 5. 비기능 요구사항

| 구분 | 내용 |
|---|---|
| 플랫폼 | 반응형 웹(모바일/PC 모두 지원) |
| 인증 | Firebase Authentication |
| 데이터저장 | Firebase Firestore |
| 보안 | 이메일 인증 + 관리자 승인 2중 게이트(도메인 제한 없음) |
| 파일출력 | 엑셀(xlsx), PDF |
| 언어 | 한국어 |

---

## 6. 범위 제외(Out of Scope)

- 최소재고 미달 알림 기능
- 웹푸시/카카오톡/이메일 알림(인앱 뱃지만 지원)
- 품목별 개별 승인/거절(신청 건 단위만 지원)
- 신청 시 첨부파일/참고링크 첨부
- 추가품목의 공용목록 등록(신청 건 한정 사용)
- 앱 내 실제 결제/구매 처리(오프라인 구매 후 상태만 기록)

---

## 7. 참고 자료
- `1_전체불출내역.pdf`: 부서별 소모품 불출대장 양식(전체불출내역 리포트 참고 양식)
- `2_통합신청내역.xlsx`: 연간 품목별/월별 구입량·금액 집계 양식(통합신청내역 리포트 참고 양식)
