Files
jongryangje/docs/기본 개발계획/06-development-plan.md
2026-04-08 00:23:55 +09:00

19 KiB

종량제 프로젝트 개발 계획

앞으로의 개발 순서와 단계별 목표를 정리한 문서입니다.
기능 상세는 01-web-features.md, 권한·개요는 00-project-overview.md를 참고합니다.


0. 참조 프로젝트·환경·정책

0.1 참조 프로젝트: slow-auth-application

  • 위치: PhpstormProjects/slow-auth-application (jongryangje와 동일 상위 폴더)
  • 역할: admin 단(메뉴관리, 회원관리) 을 이 프로젝트 구조를 참고해 가져와 개발을 시작한다.
  • auth 구조 요약:
    • 프레임워크: CodeIgniter 3 (jongryangje는 CI4 + PHP 8)
    • 베이스 컨트롤러: SL_Controller — 로그인 체크, _setting_view() 로 레이아웃(header + sidebar + page) 출력
    • admin 경로: setting/setting/Menu(메뉴 관리), setting/Member(회원 관리)
    • 레이아웃: layout_main_v — App__sidebar + App_container(header + 본문), sidebar에 권한별 메뉴
    • 모델 네이밍: Menu_m, Member_m, Define_m — 테이블 menu, member 등, 컬럼 mm_idx, mb_idx 등 짧은 식별자
    • : setting/menu/main_v, setting/member/list_v, write_v
  • jongryangje 적용: CI4 구조로 옮기되, 기능(메뉴 CRUD, 회원 CRUD, 권한별 메뉴 노출)화면 흐름은 auth와 맞춘다. PHP 버전·프레임워크가 다르므로 코드를 그대로 복사하지 않고 동작을 이식한다.

0.2 개발 환경

  • 서버: 아직 미정. 테스트 서버는 대구사장님과 협의 후 결정 예정.
  • 당분간: 개발자 로컬에 DB까지 설정하여 진행. 상세 절차는 07-local-db-setup.md 참고.

0.3 프론트엔드·디자인

  • Stitch(Google): UI 디자인·시안에 활용. 기존 화면 스크린샷을 올려 “웹 전환·최신 스타일” 시안 요청 가능.
  • admin 디자인: 현재 auth admin 그대로 사용해도 되고, 필요 시 Stitch에 admin 화면 스크린샷 올려 프론트 시안 후 적용 가능.

0.4 메뉴 통합 방향

  • 전체 메뉴는 04-menu-structure.md 1차 정리 기준으로 하되, 화면 수는 줄여서 개발한다.
  • 예시:
    • 무료용 불출: “무료용 불출 현황” 한 화면에서 불출 처리 / 불출 취소 함께 처리.
    • 판매관리: 전화 접수·지정판매소 판매·취소·반품 등을 한 화면 또는 소수 탭/섹션으로 묶어 처리.
  • 상세 설계 시 메뉴별로 “한 화면에서 처리 가능한 것”을 묶어 세분화된 메뉴 수를 줄인다.

0.5 우선 진행 순서(요약)

  1. 로컬 DB 설정 — MariaDB 등으로 jongryangje_dev DB·사용자 생성.
  2. Phase 1 — 로그인·로그아웃·세션.
  3. Phase 2 — auth의 admin(메뉴관리, 회원관리)을 CI4로 이식하여 관리자 화면·권한별 메뉴 구성.
  4. 이후 Phase 3(기본정보)부터 기능 목록 순으로 진행.

1. 개발 원칙

  • 의존 관계 우선: 다른 기능이 참조하는 기반(로그인·권한·기본정보)을 먼저 구현한다.
  • 웹 우선: 웹 기능을 먼저 진행하고, 모바일앱은 웹 API·데이터가 안정된 뒤 진행한다.
  • 단계별 검증: 각 단계 완료 시 로그인·권한·메뉴와 연동해 동작을 확인한다.

2. 코딩 컨벤션·네이밍

  • auth와의 일관성: 프로젝트 구조·화면 흐름·역할은 slow-auth-application과 맞추되, CI4·PHP 8 문법에 맞게 작성한다. (네임스페이스, PSR-4, CI4 Controller/Model 규칙.)
  • 변수명·클래스명: 너무 길지 않게 한다. auth처럼 mm_idx, mb_idx, get_item, insert_item 같은 짧은 이름을 선호한다.
  • 컨트롤러/모델: CI4 규칙에 따라 PascalCase(예: Menu, Member, MenuModel, MemberModel). 내부 변수·메서드는 camelCase 또는 auth 스타일 짧은 식별자(midx, list, write) 혼용 가능.
  • DB 컬럼: auth와 유사하게 mm_idx, mb_id, mb_name 등 약어 사용 시 일관성 유지. 새 테이블도 과도하게 긴 컬럼명은 지양.

3. 단계별 개발 계획

Phase 1: 공통·인증 (PWB-010000)

목표: 로그인·세션·최소 보안과 로깅 기반을 갖춘다.

순서 작업 참조 ID 비고
1-1 로그인 PWB-010301-001 아이디/비밀번호, 세션. 2차인증·5회 실패 lock은 2단계에서
1-2 로그아웃 세션 파기
1-3 작업 이력/로깅 PWB-010101-001 DB CRUD 로깅(최소: 로그인 이력)
1-4 개인정보 비식별화 PWB-010201-001 이름·휴대전화 마스킹 규칙 적용

산출물: 로그인/로그아웃 동작, 사용자·권한 테이블 설계(Phase 2와 연계).


Phase 2: 관리자·메뉴 (PWB-020000)

목표: slow-auth-application의 admin 단(메뉴관리, 회원관리)을 CI4로 이식하여, 권한별 사용자와 메뉴 접근 제어를 구현한다.

순서 작업 참조 ID 비고
2-1 메뉴 관리 PWB-020401-001 auth setting/Menu 참고. 메뉴 등록/수정/삭제/순서, 04-menu-structure.md 반영
2-2 메뉴별 권한 설정 PWB-020401-001 메뉴별 접근 가능 권한(레벨·그룹) 매핑, sidebar 권한별 노출
2-3 사용자 권한 관리 PWB-020101-001 super admin·지자체·지정판매소·일반 등 권한(레벨/그룹) CRUD
2-4 사용자 관리 PWB-020201-001 auth setting/Member 참고. 사용자 등록/수정/삭제(삭제 상태 5년 유지)
2-5 로그인 이력 조회 PWB-020301-001 기간 지정 조회
2-6 권한 승인 루틴 PWB-020301-001 브라우저 사용자 등록 시 권한 승인

산출물: auth와 유사한 admin 레이아웃(header + sidebar + 본문), 메뉴·회원 CRUD, 권한별 메뉴 노출.


Phase 3: 기본정보 관리 (PWB-030000)

목표: 발주·입고·불출·판매에서 공통으로 쓰는 마스터 데이터를 구축한다.

순서 작업 참조 ID 비고
3-1 기본코드 종류 PWB-030101-001 03-basic-codes.md 코드 종류(A~Y) 등록/수정/삭제
3-2 기본코드 세부코드 PWB-030101-001 종류별 하위 세부 코드 CRUD
3-3 단가 관리 PWB-030201-001 지자체별·봉투 종류별 단가, 적용일·변경 이력
3-4 단가 조회 PWB-030301-001 기간별 단가 조회/인쇄
3-5 포장 단위 관리 PWB-030401-001 박스당 팩·팩당 낱장·유효기간·적용일·이력
3-6 포장 단위 조회 PWB-030401-001 기간별 조회/인쇄
3-7 판매 대행소 관리 PWB-030501-001 대행소 CRUD, 지자체 연결, 조회/인쇄
3-8 담당자 관리 PWB-030601-001, 002 소속·담당자명·전화, 구/군/대행소/제작업체 구분
3-9 업체 관리 PWB-030701-001 협회·제작업체·회수업체 등록/조회/인쇄
3-10 무료용 대상자 관리 PWB-030801-001 읍면동/무료대상자/기타, 종료일·상태
3-11 지정판매소 관리·조회·현황 PWB-030901-001 리스트·상세·CRUD·지도·엑셀·인쇄·바코드·신규/취소 현황
3-12 PASSWORD 변경 PWB-031001-001 로그인 사용자 비밀번호 변경

산출물: 기본코드·단가·포장단위·대행소·지정판매소 등 기본정보 화면 및 API.


Phase 4: 발주·입고 관리 (PWB-040000)

목표: 발주부터 입고까지 흐름을 구현하고, LOT·바코드 정책을 확정한다.

순서 작업 참조 ID 비고
4-1 발주 등록 PWB-040101-001 발주 이력·폼·단가표, UUID·SHA-256·LOT·블록 저장
4-2 LOT·바코드 생성 PWB-040101-001 AES-256·RSA, PDF417 박스/팩/낱장
4-3 발주 변경 PWB-040201-001 버전+1 insert, SHA-256, 수정 전/후 해시
4-4 발주 삭제 PWB-040301-001 상태 삭제로 변경
4-5 발주 현황 PWB-040401-001 기간·제작업체·품명·입고처 조회, 엑셀·인쇄
4-6 발주 입고(스캐너) PWB-040501-001 바코드 스캐너 연동(serialport), 스캔 입고
4-7 일괄 입고 PWB-040501-001 일괄 입고 처리
4-8 입고 현황 PWB-040501-001 입고 현황 조회

산출물: 발주 CRUD, 입고 처리, 입고된 봉투 기준 재고 반영. (실사는 Phase 6에서.)


Phase 5: 불출 관리 (PWB-050000)

목표: 무료용 불출·취소를 구현하고, 재고와 연동한다.

순서 작업 참조 ID 비고
5-1 무료용 불출 현황 조회 PWB-050101-001 기간별 무료용 봉투별 불출 현황
5-2 무료용 불출 처리 PWB-050201-001 년도·분기·불출일·불출처·봉투코드·저장, 재고 감산·판매 처리
5-3 무료용 불출 취소 PWB-050301-001 취소 수량 저장·재고 합산·판매 취소 또는 재입고(T.B.D)

산출물: 불출 처리/취소 화면, 재고·판매 데이터와 연동. (05-meeting-notes.md 참고.)


Phase 6: 재고·실사 관리 (PWB-060000, PWB-070000)

목표: 재고 조회와 실사 선별로 재고 정확도를 확보한다.

순서 작업 참조 ID 비고
6-1 재고 조회 PWB-060101-001 기준일·구/군·대행소별 봉투·스티커 재고, 엑셀·인쇄(결재란)
6-2 실사 선별 PWB-070101-001 봉투·스티커 선택, 전산 선별 실행 confirm
6-3 실사 선별 조회 PWB-070101-001 기간·품목·박스/팩, 리스트·박스/낱장 정보

산출물: 재고 현황 화면, 실사 선별·조회. (04-menu-structure.md 재고/실사 메뉴 반영.)


Phase 7: 주문·판매 관리 (PWB-080000)

목표: 전화 접수와 지정판매소 판매·반품·취소를 구현한다.

순서 작업 참조 ID 비고
7-1 주문 접수 관리 메인 PWB-080101-001 전화 주문 접수 내역, 배달일자·인쇄(집계·영수증·list)
7-2 전화 주문 접수 PWB-080101-001 판매소 검색(SLOW 자동완성), 접수번호·가상계좌·주문접수표·저장
7-3 전화 접수 수정/취소 PWB-080101-001 접수량 변경·주문 수정·주문 취소(STATUS)
7-4 지정 판매소 판매 PWB-080101-001 판매소 검색·봉투코드·바코드 스캔·판매 저장
7-5 지정 판매소 판매 취소 PWB-080201-001 판매일·취소 선택·품목/봉투코드별 취소
7-6 지정 판매소 반품 PWB-080301-001 판매소·봉투코드 스캔·반품 저장
7-7 지정 판매소 반품 취소 PWB-080301-001 반품 일자 조회·취소 선택·반품 취소 저장

산출물: 전화 접수·판매·반품·취소 화면. 가상계좌 실시간 조회는 별도 검토(05-meeting-notes.md).


Phase 8: 판매 현황 (PWB-090000)

목표: 판매·반품 데이터 기반 대장·일계표·기간별·년도별 조회를 제공한다.

순서 작업 참조 ID 비고
8-1 지정 판매소 판매 대장 PWB-090101-001 기간·일자별/기간별·엑셀·인쇄(결재란)
8-2 일계표 PWB-090201-001 특정일 일계·누계(월간)
8-3 기간별 판매현황 PWB-090301-001 일자별/기간별 판매·반품·합계
8-4 년 판매 현황 PWB-090401-001 년도·품목별·월/분기
8-5 지정 판매소 별 판매 현황 PWB-090501-001 수량/금액·1~12월 컬럼
8-6 홈택스 처리 PWB-090601-001 세금계산서 일괄발급 엑셀 양식

산출물: 판매 대장·일계표·기간별/년도별/판매소별 현황, 홈택스용 엑셀.


Phase 9: 봉투 수불 관리 (PWB-100000)

목표: 수불 이력·현황·반품/파기·LOT 수불 조회를 구현한다.

순서 작업 참조 ID 비고
9-1 기타 입출고 PWB-100101-001 수불 년월·봉투코드·구분·상세(요구사항 확인)
9-2 봉투 수불 현황 PWB-100201-001 기간·품목·대행소·일자별/기간별·전일재고·입고/출고·잔량
9-3 반품/파기 현황 PWB-100301-001 기간·입출고 구분·조회/엑셀/인쇄
9-4 봉투 수급 계획 PWB-100401-001 기능 범위 추가 확인
9-5 LOT 수불 조회 PWB-100501-001 바코드/봉투번호 입력·일자·입고출처·구분

산출물: 수불 현황·반품/파기·LOT 수불 조회.


Phase 10: 봉투 스캔 현황 (PWB-110000)

목표: 앱 스캔 이력을 웹에서 조회할 수 있게 한다.

순서 작업 참조 ID 비고
10-1 봉투 스캔 횟수/위치 조회 PWB-110101-001 낱장별 앱 스캔 횟수·경위도·지도 표시(옵션)

산출물: 스캔 횟수/위치 조회 화면(지도는 옵션).


Phase 11: 모바일앱 (선택·별도 일정)

목표: 웹 API·데이터가 안정된 뒤, 02-mobile-features.md 15건을 앱에서 구현한다.

  • 공통: 로그인·로깅·비식별화
  • 발주 입고, 불출·불출 취소
  • 지정판매소 판매·취소·반품·반품 취소
  • LOT 수불 조회, 주문 내역·주문·수정/취소, 봉투 정품 인증

웹과 동일한 권한·기본정보·발주·입고·판매 데이터를 사용한다.


4. 요약 타임라인(개념)

Phase 영역 의존
1 공통·인증
2 관리자·메뉴 Phase 1
3 기본정보 Phase 2
4 발주·입고 Phase 3
5 불출 Phase 4
6 재고·실사 Phase 4, 5
7 주문·판매 Phase 3, 4, 5
8 판매 현황 Phase 7
9 봉투 수불 Phase 4, 5, 7
10 봉투 스캔 Phase 4, 앱 스캔 기능
11 모바일앱 Phase 1~7 안정화 후

5. 문서 갱신

  • 단계 완료 시 이 문서에 완료일·담당·비고를 추가해 두면 진행 상황 파악에 유리합니다.
  • 요구사항 변경은 01-web-features.md, 05-meeting-notes.md에 반영하고, 필요 시 이 개발 계획도 함께 수정합니다.

6. 상위 설계 문서(Notion)와의 매핑

최근 Notion 설계 문서(“종량제봉투 웹 플랫폼 개발”) 기준으로, 상위 아키텍처·WBS 는 다음과 같이 이 계획의 Phase들과 대응됩니다.

  • 기본 정보 관리 체계 (Master Data, F-MD-01~06)
    → 이 문서의 Phase 3 기본정보 관리와 매핑. 공통 코드, 단가, 포장 단위, 대행소·업체·담당자·지정판매소 관리가 포함됩니다.
  • 발주 및 입고 프로세스 (F-PO-01~04)
    Phase 4 발주·입고 관리와 매핑. 발주 등록/변경, LOT-No·PDF417 바코드 생성, 스캐너 기반 입고, 일괄 입고·입고 현황을 포함합니다.
  • 재고 및 실사 관리 요구사항
    Phase 6 재고·실사 관리, Phase 9 봉투 수불 관리와 매핑. 실시간 재고, 다단계 실사, 수급 계획, LOT 수불 추적 기능을 여기서 구현합니다.
  • 판매 및 결제 시스템 (고정 가상계좌, Webhook, 홈택스 연동)
    Phase 7 주문·판매 관리(주문/판매/반품/취소)와 Phase 8 판매 현황(리포트·홈택스용 엑셀)에서 1차 구현하고, PG/Webhook·홈택스 API 연동은 웹 1차 안정화 이후 단계적 고도화 항목으로 둡니다.
  • 데이터 흐름·제어 흐름·UML/ERD
    → 이 문서의 각 Phase에서 구현해야 할 비즈니스 플로우와 테이블 설계에 대한 상위 가이드로 삼고, 실제 마이그레이션/엔티티 설계는 Phase 착수 시점에 Notion 내용을 참고해 구체화합니다.
  • 블록체인/불변 원장 구조(SQL-Ledger)
    → 종량제 v1(웹 1차)에서는 일반 RDBMS 기반 수불·이력 관리를 우선 완성하고, 이후 “블록체인/Immutable Ledger 기반 이력 보강”을 별도 고도화 Phase로 추가하는 것을 전제로 합니다.

즉, Notion 문서는 “전체 시스템 설계·데이터/제어 흐름·블록체인·고정 가상계좌 등 상위 아키텍처”를 제시하고 있고,
이 문서(06-development-plan.md)는 그 중 웹 애플리케이션 기능 개발 순서와 범위(Phase 1~11) 에 초점을 맞춘 실행 계획으로 사용합니다.


7. 추가 비즈니스/운영 요구사항 (25.11.24 미팅 요약)

  • 가격·수익 구조
    • 봉투 1장당 바코드 비용은 약 7원, 이 중 0.5원(약 7%)을 영업 파트너(Wixon 등)와 분배하는 모델을 전제로 함.
    • 개발비 5천만 원은 “설계도까지 사 오는 것”이 아니라, 서진이 프로그램 소유권을 가지되, 윅슨이 영업 시 일정 수익을 공유하는 투자 개념으로 이해함.
  • 프로그램 소유권
    • 개발비를 서진이 부담하는 만큼 프로그램 소유권은 서진이 갖고,
    • 윅슨이 서울/경기에서 영업하는 것은 막지 않는 방향(라이선스 제공) 으로 합의.
    • 별도 2안으로는 프로그램 소유권까지 전부 이전(매입) 하는 조건도 논의됨.
  • 서버·배포 방식
    • 지자체 정보통신과를 거치지 않고 지자체 내부 서버에 설치하는 응용프로그램 방식을 우선 고려 (현재도 원격 접속으로 운영 중).
    • 동시에, 경쟁사(예: IT플러스)가 외부 서버 방식을 쓰는 점을 감안해,
      지자체 내 서버 설치형 + 외부 서버/클라우드형을 모두 지원하는 유연한 구조가 영업 전략상 유리하다는 의견.
  • 블록체인·특허
    • 순수 기술 관점에서는 주기적 백업 + 암호화 만으로도 충분하나,
    • 특허(블록체인 기반 종량제 봉투 관리)와 연계해 입찰 없이 수의계약·영업 차별화를 하기 위해,
      설계 상 블록체인/불변 원장 아키텍처를 반영해야 함.
    • v1 웹 개발에서는 RDBMS 기반으로 구현하되, 데이터 구조와 로그(수불 이력 등)는 나중에 블록체인/Immutable Ledger로 확장 가능하도록 설계하는 것을 목표로 함.
  • 운영·테스트
    • “검수 및 관공서 설치 테스트” 기간은 약 1개월을 기준으로, 실제 환경에서 잘 돌아가는지 모니터링.
    • 오래된 레거시 메뉴가 많아, 웹 전환 시 기능 통합·정리로 메뉴 수를 줄이는 것도 중요한 목표.
  • 기타 운영 요구
    • PC가 안 되는 경우 PDA에서 먼저 입고/불출 처리 후 나중에 PC와 동기화해야 하는 케이스가 있으므로,
      온라인/오프라인 혼합 시나리오를 고려한 동기화 로직이 필요함.
    • 각 기능별 로그(감사 이력) 기록은 필수이며, 이는 향후 블록체인/불변 원장 도입 시에도 핵심 데이터가 됨.