# 종량제 — 쓰레기봉투 물류시스템 (jongryangje) **[종량제 개발목록](https://github.com/wixon-associates/jongryangje/raw/main/assets/종량제_개발목록_20260127.xlsx)** — [`assets/종량제_개발목록_20260127.xlsx`](./assets/종량제_개발목록_20260127.xlsx) 지자체·지정판매소 등을 대상으로 하는 **종량제 쓰레기봉투 물류·업무 웹 애플리케이션**입니다. 백엔드는 **[CodeIgniter 4](https://codeigniter.com/)** 기반입니다. **저장소:** [wixon-associates/jongryangje](https://github.com/wixon-associates/jongryangje) --- ## 요구 사항 - **PHP** 8.2 이상 (`composer.json` 기준) - **Composer** 2.x - **MySQL / MariaDB** (프로젝트는 `MySQLi` 드라이버 사용) - 권장 PHP 확장: `intl`, `mbstring`, MySQL 사용 시 `mysqlnd` --- ## 빠른 시작 (로컬) ### 1) 저장소 복제 ```bash git clone https://github.com/wixon-associates/jongryangje.git cd jongryangje ``` ### 2) 의존성 설치 ```bash composer install ``` ### 3) 환경 설정 루트에 있는 샘플 파일을 복사해 `.env`를 만듭니다. ```bash cp env .env ``` `.env`에서 최소한 다음을 설정합니다. | 항목 | 설명 | |------|------| | `app.baseURL` | 예: `http://localhost:8080/` (끝에 `/`) | | `database.default.*` | DB 호스트·DB명·사용자·비밀번호 | | `encryption.key` | 개인정보(이메일·연락처) 암호화용. **64자리 hex** (예: `php -r "echo bin2hex(random_bytes(32));"`) | ### 4) 데이터베이스 준비 | 파일 | 용도 | |------|------| | `writable/database/init_jongryangje_dev.sql` | DB·DB 사용자 생성 예시 | | `writable/database/login_tables.sql` | 회원·로그인·지자체 등 기본 테이블 | | `writable/database/member_approval_request_add.sql` | 회원가입 역할 승인 요청 테이블 (별도 추가) | | `writable/database/menu_tables.sql` 등 | 메뉴·시드 관련 SQL | | `writable/database/order_tables.sql` | 발주 (`bag_order`, `bag_order_item` 등) | | `writable/database/sales_tables.sql` | 판매·입고·재고·불출·주문 등 (`bag_sale`, `bag_receiving`, `bag_inventory` …) | | `writable/database/code_master_init_daegu.sql` | 기본코드 종류·세부코드 시드 | | `writable/database/code_master_sync_from_csv.sql` | 개발목록 CSV와 DB 보강용 (선택) | 개발목록 **기본코드 종류** CSV와 DB를 맞출 때는 `writable/tools/sync_basic_codes_from_csv.py`로 SQL을 생성하거나, 위 `code_master_sync_from_csv.sql`을 참고해 실행할 수 있습니다. --- ## 주요 URL (참고) | 경로 | 설명 | |------|------| | `/` | 홈 (비로그인 시 환영 화면 등) | | `/login`, `/logout` | 로그인·로그아웃 | | `/register` | 회원가입 (역할 승인 플로우 연동) | | `/dashboard` | 로그인 후 사이트형 메인 흐름 | | `/dashboard/classic-mock` 등 | UI 시안용 라우트 | | `/bag/basic-info` | 기본정보 (단가·포장단위 등 링크 허브) | | `/bag/code-kinds` | **기본코드 종류** 목록 (로그인 사용자 조회; 시민·판매소는 조회만) | | `/bag/code-details/{ck_idx}` | **기본코드 세부** 목록 (종류별) | | `/admin` | 관리자 (권한·필터 적용) | | `/admin/access/approvals` | 회원가입 역할 **승인 대기** 처리 | ### 기본코드 CRUD (관리자) - **목록 화면은 `/bag/code-kinds`, `/bag/code-details/{ck_idx}`만 사용**합니다. `/admin` 아래에는 종류·세부 **목록 페이지가 없고**, 등록·수정·삭제 등 **CRUD만** `admin` 라우트로 열립니다. - 예: `/admin/code-kinds/create`, `edit/{id}`, `store`/`update`/`delete`; `/admin/code-details/{ck_idx}/create`, `code-details/edit/{id}` 등 (전체는 `Routes.php` 참고). - 예전 주소 `/admin/code-details/{ck_idx}`는 **`/bag/code-details/{ck_idx}`로 리다이렉트**됩니다. E2E: 기본코드·사이트 메뉴 경로는 `e2e/code-management.spec.js`, `e2e/bag-site.spec.js`를 참고하세요. 정확한 라우트는 `app/Config/Routes.php`를 확인하세요.