Files
jongryangje/docs/종량제 관련 자료/종량제 개발목록/노션_정리_03-WBS_데이터베이스_ERD.md
2026-04-08 00:23:55 +09:00

6.9 KiB

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로 데이터 격리.

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)으로 표현한 것임.