Files
jongryangje/docs/종량제 관련 자료/종량제 개발목록/노션_정리_03-WBS_데이터베이스_ERD.md

153 lines
6.9 KiB
Markdown
Raw Normal View History

# WBS 및 데이터베이스 논리 모델링 (노션 정리)
> 출처: 차장님 노션. WBS, DB ERD(지자체·판매소·사용자·품목·입고·주문·수불).
---
## WBS (Work Breakdown Structure)
### 1. 프로젝트 준비 및 설계 (Planning & Design)
- **1.1 요구사항 확정**: 기존 UI 분석 및 웹 표준 기능 정의.
- **1.2 서버사양 확정**: 공공클라우드 기준 서버사양 확정.
- **1.3 개발서버 준비**: 개발/테스트 서버 별도 구축. 공공클라우드에서는 최소한의 테스트만 수행(비용 최소화).
- **1.4 데이터베이스 설계**: 수불, 판매, 기본 코드 등 엔티티 정의 및 정규화.
- **1.5 UI/UX 디자인**: 반응형 대시보드 및 그리드 UI 설계. 모바일 바코드 스캐너 전용 웹 화면 설계.
### 2. 기본 정보 관리 모듈 개발 (Base Information Management)
- **2.1 공통 코드 관리 (Image 1)**: 지역(도/시/구/동), 봉투 종류, 재질, 용량 등 계층형 코드 관리 개발.
- **2.2 단가 및 포장 관리 (Image 2, 3)**: 발주/도매/소매 단가 이력 관리 및 박스/팩/낱장 단위 자동 계산 로직 구현.
- **2.3 대행소 및 업체 관리 (Image 4, 7, 8)**: 판매 대행소(은행 등), 협회, 제작업체 마스터 정보 관리.
- **2.4 담당자 관리 (Image 5, 6)**: 지자체/대행소 담당자 및 업체별 담당자 권한 부여 기능 개발.
- **2.5 무료 대상자 관리 (Image 9)**: 대상자별 지급 상태, 유효 기간 관리 및 불출 연동 기능.
### 3. 발주 및 입고 관리 모듈 개발 (Order & Inbound)
- **3.1 발주 프로세스**: 제작업체별 발주 등록, 수량 변경 및 발주서 생성.
- **3.2 바코드 엔진 구축**: PDF417 규격의 LOT 번호 생성 및 이미지 생성 API 개발.
- **3.3 스마트 입고 처리**: 스캐너/입고 검수 기능, 일괄 입고 처리 및 입고 현황 리포트 개발.
### 4. 판매 및 결제 관리 모듈 개발 (Sales & Payment)
- **4.1 주문 관리**: 지정 판매소 주문(전화/온라인) 접수 및 상태 관리.
- **4.2 결제 시스템 연동**: 고정 가상계좌(Fixed VA) 매핑 및 입금 확인 자동화 (Webhook), 카드 결제 API 연동 및 승인 처리.
- **4.3 반품 및 취소**: 판매/반품 취소 처리 및 재고 환원 로직 구현.
### 5. 재고 및 수불 분석 모듈 개발 (Inventory & Statistics)
- **5.1 실시간 수불 관리**: 기간별/일일 봉투 수불 현황 및 LOT 추적 기능 개발.
- **5.2 실무 재고 실사**: 실사 대상 선별, 실고 수량 등록 및 오차 분석 기능.
- **5.3 통계 분석**: 전년 대비 판매 분석, 계절별/월별 판매 추이 시각화 차트 구축.
- **5.4 외부 연동**: 국세청 홈택스 판매 데이터 전송 기능 (CSV/API).
### 6. 지정 판매소 지원 서비스 개발
- **6.1 판매소 전용 웹**: 주문 신청, 입금 확인, 판매 이력 조회 기능.
- **6.2 출력 시스템**: 지정 판매소별 고유 바코드 라벨 및 인쇄 제어.
### 7. 테스트 및 배포 (Testing & Deployment)
- **7.1 통합 테스트**: 가상계좌 입금-주문-재고 연동 시나리오 검증.
- **7.2 데이터 이관**: 기존 시스템(엑셀/Legacy DB) 데이터 클렌징 및 마이그레이션.
- **7.3 사용자 교육**: 구군청 담당자 및 판매소 운영자 매뉴얼 제작.
- **7.4 최종 배포**: 서버 인프라(Cloud) 구축 및 도메인 연결.
---
## 데이터베이스 논리 모델링 (ERD)
지자체(`LocalGovernment`)를 중심으로 사용자·지정판매소·품목·입고·주문·수불이 연결되는 **멀티테넌트** 구조. `local_gov_id`로 데이터 격리.
```mermaid
erDiagram
%% [조직 및 사용자 체계]
LocalGovernment ||--o{ User : "지자체 소속 사용자"
LocalGovernment ||--o{ Retailer : "관할 지정판매소"
Retailer ||--o{ User : "판매소 소속 사용자"
LocalGovernment {
int local_gov_id PK "지자체 고유 ID"
string gov_name "지자체 명칭(예: 북구청)"
string area_code "지역 코드"
string address "주소"
}
User {
int user_id PK
int local_gov_id FK "nullable (SuperAdmin용)"
int retailer_id FK "nullable"
string username "로그인 ID"
string password_hash
string role_type "SUPER, GOV, RETAIL"
datetime last_login
}
Retailer {
int retailer_id PK
int local_gov_id FK "관할 지자체 ID"
string retailer_name "상호명"
string owner_name "대표자명"
string va_number "고정 가상계좌 번호"
string status "정상, 취소, 폐업"
}
%% [물류 및 재고 체계]
LocalGovernment ||--o{ Product : "지자체별 취급 품목"
LocalGovernment ||--o{ StockTransaction : "지자체 수불 내역"
LocalGovernment ||--o{ InboundReceipt : "지자체 입고 내역"
Retailer ||--o{ SalesOrder : "판매소 주문"
Product {
int product_id PK
int local_gov_id FK "지자체별 단가 관리용"
string product_type "일반, 음식물, 재사용"
string capacity "3L, 5L, 10L 등"
int purchase_price "발주 단가"
int wholesale_price "도매가"
int retail_price "소비자가"
}
InboundReceipt {
int receipt_id PK
int local_gov_id FK
int product_id FK
string lot_number "PDF417 바코드 연동"
int quantity
datetime receipt_date
}
SalesOrder {
int sales_id PK
int local_gov_id FK "데이터 격리용 필드"
int retailer_id FK
datetime order_date
int total_amount
string payment_status "입금대기, 완료, 취소"
}
StockTransaction {
int trans_id PK
int local_gov_id FK "지자체 구분"
int product_id FK
string trans_type "IN(입고), OUT(판매), FREE(불출), DISCARD(파기)"
int quantity
int reference_id "SalesOrder 혹은 InboundID 연결"
datetime trans_date
}
```
### ERD 요약
| 엔티티 | 설명 | 지자체 FK |
|--------|------|-----------|
| **LocalGovernment** | 지자체 마스터(테넌트 루트) | — |
| **User** | 판매소/지자체 소속 사용자. SuperAdmin은 local_gov_id nullable | local_gov_id (nullable) |
| **Retailer** | 관할 지정판매소. 고정 가상계좌(va_number) 보유 | local_gov_id |
| **Product** | 지자체별 취급 품목·단가(발주/도매/소비자가) | local_gov_id |
| **InboundReceipt** | 지자체 입고 내역. LOT·바코드 연동 | local_gov_id |
| **SalesOrder** | 판매소 주문. 데이터 격리용 local_gov_id | local_gov_id |
| **StockTransaction** | 지자체 수불(입고/판매/불출/파기) | local_gov_id |
이 ERD는 `docs/종량제 관련 자료/ss_gbms/ss_gbms/1-5.png` 등에 포함된 다이어그램과 동일한 구조를 마크다운(mermaid)으로 표현한 것임.