# 종량제 개발 작업 관리

> 이 파일은 개발 작업의 진행 상황을 추적합니다.
> 작업 시작/완료/중단 시 반드시 이 파일을 업데이트합니다.

---

## 현재 작업

### [P3-01-UX] 발주 등록 화면/저장 정합화
- **상태**: 진행중
- **시작**: 2026-04-15
- **브랜치**: 현재 작업 브랜치
- **설명**: 발주 등록 화면을 운영 스크린샷 구성과 기능목록 요구사항에 맞게 재구성하고 저장 로직을 보완
- **진행 내역**:
  1. [x] 기능목록(엑셀)과 기준 스크린샷 요구사항 재확인
  2. [x] 발주 등록 화면 레이아웃(이력/폼/참고테이블) 개편
  3. [x] 박스/낱장/금액/총계 실시간 계산 반영
  4. [x] 저장 로직 보완(필드/검증/해시 입력 안정화)
  5. [ ] 테스트 실행 및 결과 확인 (로컬 서버 미기동으로 E2E 실패)
- **관련 파일**: `app/Controllers/Admin/BagOrder.php`, `app/Views/admin/bag_order/create.php`, `e2e/phase3-order.spec.js`

<!--
작업 진행 시 아래 형식으로 기록:

### [작업ID] 작업명
- **상태**: 진행중 | 중단 | 완료
- **시작**: YYYY-MM-DD
- **브랜치**: feature/xxx
- **설명**: 작업 내용 요약
- **진행 내역**:
  1. [x] 완료된 단계
  2. [ ] 다음 단계
- **중단 사유** (중단 시): 오류 내용 또는 사유
- **이어서 할 것** (중단 시): 재개 시 해야 할 작업
- **관련 파일**: 수정한/수정할 파일 목록
-->

---

## 대기 작업 (Backlog)

### Phase 2 — 기본정보관리 완성

| ID | 작업 | 우선순위 | 의존성 | 상태 |
|----|------|---------|--------|------|
| P2-01 | 기본코드 종류 관리 (CRUD) | 높음 | — | **완료** |
| P2-02 | 기본코드 하위 세부코드 관리 (CRUD) | 높음 | P2-01 | **완료** |
| P2-03 | 지자체별 봉투 단가 관리 + 이력 | 높음 | P2-01 | **완료** |
| P2-04 | 지자체별 봉투 단가 조회 (기간별) | 중간 | P2-03 | **완료** |
| P2-05 | 포장 단위 관리 (박스/팩/낱장) | 높음 | P2-01 | **완료** |
| P2-06 | 포장 단위 조회 (기간별) | 중간 | P2-05 | **완료** |
| P2-07 | 판매 대행소 관리 + 지자체 연결 | 중간 | — | **완료** |
| P2-08 | 판매 대행소 조회 | 낮음 | P2-07 | **완료** |
| P2-09 | 담당자 관리 (소속별 CRUD) | 중간 | — | **완료** |
| P2-10 | 담당자 조회 / 인쇄 | 낮음 | P2-09 | **완료** |
| P2-11 | 업체 관리 (협회/제작업체/회수업체) | 중간 | — | **완료** |
| P2-12 | 업체 조회 / 인쇄 | 낮음 | P2-11 | **완료** |
| P2-13 | 무료용 대상자 관리 (CRUD) | 중간 | — | **완료** |
| P2-14 | 무료용 대상자 조회 / 인쇄 | 낮음 | P2-13 | **완료** |
| P2-15 | 지정판매소 다조건 조회 + 엑셀 + 인쇄 | 중간 | — | **완료** |
| P2-16 | 지정판매소 바코드 출력 | 낮음 | P2-15 | Phase 6+ |
| P2-17 | 지정판매소 지도 표시 | 낮음 | — | **완료** |
| P2-18 | 지정판매소 현황 (신규/취소) | 낮음 | — | **완료** |
| P2-19 | 지자체 수정/삭제 기능 | 중간 | — | **완료** |
| P2-20 | PASSWORD 변경 기능 | 중간 | — | **완료** |
| P2-21 | 로그인 5회 실패 lock | 중간 | — | **완료** |
| P2-22 | 카카오 주소 검색 API 연동 | 중간 | — | Phase 3+ |

### Phase 3 — 발주/입고/재고

| ID | 작업 | 우선순위 | 의존성 | 상태 |
|----|------|---------|--------|------|
| P3-01 | 발주 등록 (UUID + SHA-256 + LOT) | 높음 | P2-03, P2-05 | **완료** |
| P3-02 | LOT 번호 생성 | 높음 | P3-01 | **완료** |
| P3-03 | 발주 취소 (상태 변경) | 높음 | P3-01 | **완료** |
| P3-04 | 발주 삭제 (상태 변경) | 중간 | P3-01 | **완료** |
| P3-05 | 발주 현황 (기간/상태 필터) | 중간 | P3-01 | **완료** |
| P3-06 | 입고 처리 (일괄) | 높음 | P3-01 | **완료** |
| P3-07 | 입고 현황 (기간 필터) | 중간 | P3-06 | **완료** |
| P3-08 | 재고 현황 조회 | 높음 | P3-06 | **완료** |
| P3-09 | 바코드 스캐너 연동 | 중간 | P3-06 | Phase 6+ |
| P3-10 | PDF417 바코드 생성 | 중간 | P3-01 | Phase 6+ |
| P3-11 | 실사 선별 / 등록 / 조회 | 중간 | P3-08 | Phase 6+ |

### Phase 4 — 주문/판매/불출

| ID | 작업 | 우선순위 | 의존성 | 상태 |
|----|------|---------|--------|------|
| P4-01 | 주문 접수 (판매소 선택, 품목) | 높음 | P2-05, P3-08 | **완료** |
| P4-02 | 주문 접수 관리 (목록/필터) | 높음 | P4-01 | **완료** |
| P4-03 | 주문 취소 | 중간 | P4-01 | **완료** |
| P4-04 | 지정판매소 판매 | 높음 | P3-08 | **완료** |
| P4-05 | 지정판매소 반품 | 중간 | P4-04 | **완료** |
| P4-06 | 판매/반품 목록 (기간/유형 필터) | 중간 | P4-04 | **완료** |
| P4-07 | 바코드 스캔 판매 | 낮음 | P4-04 | Phase 6+ |
| P4-08 | 무료용 불출 현황 (기간 필터) | 중간 | P3-08 | **완료** |
| P4-09 | 무료용 불출 처리 + 재고 감산 | 높음 | P3-08 | **완료** |
| P4-10 | 무료용 불출 취소 + 재고 복원 | 중간 | P4-09 | **완료** |

### Phase 5 — 현황/리포트/수불

| ID | 작업 | 우선순위 | 의존성 | 상태 |
|----|------|---------|--------|------|
| P5-01 | 판매 대장 (일자별/기간별) | 높음 | P4-04 | **완료** |
| P5-02 | 일계표 (일계 + 월간 누계) | 높음 | P4-04 | **완료** |
| P5-03 | 기간별 판매현황 | 중간 | P4-04 | **완료** |
| P5-04 | 년 판매 현황 (월별/분기별) | 중간 | P4-04 | **완료** |
| P5-05 | 지정판매소별 판매현황 (수량/금액) | 중간 | P4-04 | **완료** |
| P5-06 | 홈택스 세금계산서 엑셀 생성 | 높음 | P4-04 | **완료** |
| P5-07 | 봉투 수불 현황 (재고/입고/판매/불출) | 높음 | P3-08, P4-04 | **완료** |
| P5-08 | 반품/파기 현황 | 중간 | P4-06 | **완료** |
| P5-09 | 봉투 수급 계획 | 낮음 | P5-07 | Phase 6+ |
| P5-10 | LOT 수불 조회 | 중간 | P3-02 | **완료** |
| P5-11 | 기타 입출고 | 낮음 | P3-08 | **완료** |
| P5-12 | 봉투 스캔 현황 (횟수/위치) | 낮음 | — | Phase 6+ |

### Phase 6 — 모바일앱

| ID | 작업 | 우선순위 | 의존성 | 상태 |
|----|------|---------|--------|------|
| P6-01 | 앱 공통 (로그인, 2차인증, PII) | 높음 | P2-21 | 대기 |
| P6-02 | 발주 입고 (PDF417 카메라 스캔) | 높음 | P3-07 | 대기 |
| P6-03 | 불출 관리 (카메라 스캔) | 중간 | P4-09 | 대기 |
| P6-04 | 판매/반품 처리 (카메라 스캔) | 중간 | P4-04 | 대기 |
| P6-05 | 봉투 주문 / 수정 / 취소 | 중간 | P4-01 | 대기 |
| P6-06 | 봉투 정품 인증 | 높음 | P3-02 | 대기 |

### 공통 기술 과제

| ID | 작업 | 우선순위 | 상태 |
|----|------|---------|------|
| CT-01 | 페이지네이션 공통 구현 | 높음 | **완료** |
| CT-02 | 엑셀 저장 공통 컴포넌트 | 높음 | **완료** |
| CT-03 | 인쇄 공통 컴포넌트 (결재란 포함) | 높음 | **완료** |
| CT-04 | 바코드 스캐너 연동 (Electron + serialport) | 중간 | Phase 6+ |
| CT-05 | CRUD 로깅 (전체 데이터 변경 이력) | 중간 | **완료** |
| CT-06 | 대시보드 실 데이터 연동 | 낮음 | **완료** |
| CT-07 | 2차 인증 적용 | 중간 | **완료** |

---

## 완료 작업

| ID | 작업 | 완료일 | 커밋 |
|----|------|--------|------|
| INIT-01 | 프로젝트 초기 세팅 (CI4, DB 스크립트) | 2026-01 | `4e557d4` |
| INIT-02 | 로그인/로그아웃 + 세션 관리 | 2026-01 | `4e557d4` |
| INIT-03 | 회원가입 + 승인 워크플로우 | 2026-01 | `4e557d4` |
| INIT-04 | 회원 관리 CRUD (Admin) | 2026-01 | `4e557d4` |
| INIT-05 | 로그인 이력 조회 | 2026-01 | `4e557d4` |
| INIT-06 | 역할 기반 접근 제어 (RBAC 4단계) | 2026-01 | `4e557d4` |
| INIT-07 | 멀티테넌시 (지자체 선택) | 2026-01 | `4e557d4` |
| INIT-08 | 메뉴 관리 (트리 CRUD + 역할별 노출) | 2026-01 | `4e557d4` |
| INIT-09 | 지정판매소 관리 CRUD | 2026-01 | `4e557d4` |
| INIT-10 | PII 암호화 (이메일/전화번호) | 2026-01 | `4e557d4` |
| DOC-01 | README 개발현황 정리 + CLAUDE.md | 2026-03-25 | `c07261a` |
| TEST-01 | Playwright E2E 테스트 환경 + 테스터 계정 + 23개 테스트 | 2026-03-25 | — |

---

## 작업 로그

> 최신 항목이 위에 옵니다.

### 2026-06-05

- **DOC-03** 사용자 매뉴얼(설명서) 마크다운 기반 in-app 문서 시스템 추가
  - `league/commonmark` 도입, `bag/manual` 라우트(loginAuth 보호), `ManualRenderer` 라이브러리 + `Config\Manual` manifest
  - 콘텐츠 8종(`app/Docs/manual/*.md`): 개요/업무흐름/발주입고/재고실사/판매불출/판매현황·수불·통계/코드체계/FAQ
  - `bag/help`에 매뉴얼 링크 추가, E2E 4건(`e2e/manual.spec.js`) 통과

### 2026-03-25

- **P5** Phase 5 판매대장/일계표/기간별현황/수불현황 리포트 (`f451f0f`)
- **P4** Phase 4 주문접수/판매/반품/불출 관리 (`6e8bd84`)
- **P3** Phase 3 발주/입고/재고 관리 (`d9d3ef4`)
- **P2-19~21** 지자체 수정/삭제, 비밀번호 변경, 로그인 lock (`c2840a9`)
- **P2-07~14** 판매대행소/담당자/업체/무료대상자 CRUD (`da132f0`)
- **P2-05/06** 포장 단위 관리 CRUD + 이력 + 기간별 조회 (`acc9e47`)
- **P2-03/04** 봉투 단가 관리 CRUD + 이력 + 기간별 조회 (`6949227`)
- **P2-01/02** 기본코드 종류/세부코드 관리 CRUD (`41442c2`)
- **FIX** DB 한글 이중인코딩 수정 (`34cecad`)
- **DOC-02** 스크린샷 22개 + docs/SCREENSHOTS.md + Notion 진행상황 업데이트 + README 연동
- **TEST-01** Playwright E2E 테스트 환경 구성 (Chromium)
- **TEST-01** 테스터 계정 4개 생성 (admin/local/shop/user, 비밀번호: test1234!)
- **TEST-01** E2E 테스트 23개 작성 및 전체 통과 (auth 9, admin 10, public 4)
- **DOC-01** README.md 개발현황 상세 정리 (63개 웹 + 15개 앱 항목별 분석)
- **DOC-01** CLAUDE.md 생성 (Claude Code 프로젝트 가이드)
- **DOC-01** jobs.md 생성 (작업 관리 파일)

---

## 사용법

### 작업 시작 시
1. "현재 작업" 섹션에 작업 정보 기록
2. 해당 Backlog 항목 상태를 `진행중`으로 변경
3. 작업 로그에 시작 기록 추가

### 작업 완료 시
1. **테스트 작성 및 실행** (`vendor/bin/phpunit`) — 테스트 통과 확인 필수
2. "현재 작업" 섹션 비우기
3. "완료 작업" 테이블에 추가
4. Backlog 항목 상태를 `완료`로 변경
5. 작업 로그에 완료 기록 추가

### 작업 중단 시 (오류/컨텍스트 유실 등)
1. "현재 작업"에 **중단 사유**와 **이어서 할 것** 반드시 기록
2. 수정한 파일 목록과 현재 브랜치 명시
3. Backlog 항목 상태를 `중단`으로 변경
4. 작업 로그에 중단 사유 기록

### 새 세션에서 이어서 작업 시
1. "현재 작업" 섹션 확인 → 중단된 작업이 있으면 이어서 진행
2. 없으면 Backlog에서 우선순위 높은 대기 작업 선택
