# 판매소번호 일련번호 부여 방식 결정 > 지정판매소 등록 시 **판매소번호(ds_shop_no)** 에 들어가는 **일련번호**를 전역으로 둘지, 구·동별·지자체별로 둘지에 대한 자료 정리 및 결정. --- ## 1. 자료에서 나온 내용 ### 1-1. 웹 기능목록 (원본) - **파일**: `docs/종량제 관련 자료/종량제 개발목록/종량제_개발목록_20260127(웹 기능목록) (1).csv` - **내용** - "**판매소번호** : 판매소의 **주소를 바탕으로** **기본코드 B, C, D + 판매소 일련번호**로 생성" - "**구코드** : 판매소의 주소를 바탕으로 **기본코드 C** 할당" - **의미** - 판매소번호 = (주소에서 유도한) B·C·D 코드 + **판매소 일련번호** - 일련번호를 **전역으로 둘지**, **구·동별·지자체별**로 둘지는 기술되어 있지 않음. ### 1-2. 결정 필요 문서 - **파일**: `docs/결정_필요한_사항들/01-DB_및_도메인_구조.md` - **내용** - "**판매소번호** 규칙: '기본코드 B, C, D + 판매소 일련번호' — 기본코드 B/C/D는 어디서 오는지(기본코드 테이블? 지자체별?). **일련번호는 전역인지 지자체별인지.**" - **의미** - 원본 자료만으로는 **일련번호 범위(전역 vs 지자체별 등)** 가 정해져 있지 않아, **결정 필요** 항목으로 남겨 둔 상태. ### 1-3. 기본코드·형식 참고 - **파일**: `docs/기본 개발계획/03-basic-codes.md`, `종량제_개발목록_20260127(기본코드 종류).csv` - **내용** - 판매소번호 = 기본코드 B, C, D + 판매소 일련번호. - 코드 C = 구코드(B + 구 순번 2자리), 코드 D = 동코드(C + 동 순번 2자리). - 예: 북구 110209, 동 11020901~11020928. - **의미** - 형식은 **“(구/동 등) 코드 + 일련번호”** 이지만, **일련번호를 어느 단위로 001부터 다시 세는지**는 문서에 없음. --- ## 2. 결정 사항 - **일련번호는 지자체별로 부여한다.** | 항목 | 결정 내용 | |------|------------| | **일련번호 범위** | **지자체(lg_idx) 단위**로 001, 002, 003… 을 부여한다. | | **의미** | 같은 지자체에 속한 지정판매소만 모아서, 그 지자체 안에서 1번째, 2번째… 순으로 번호를 붙인다. | | **전역** | 사용하지 않는다. (전체 시스템에서 하나의 일련번호 줄을 두지 않음.) | | **구·동별** | 현재는 적용하지 않는다. 동(코드 D) 테이블·선택이 갖춰지면, 필요 시 “지자체 내 구·동별” 등으로 확장 검토 가능. | ### 2-1. 구현 시 적용 - 지정판매소 등록 시 **해당 지자체(ds_lg_idx)** 에 한정해, 기존 `ds_shop_no` 중 **같은 지자체**로 이미 사용 중인 번호의 **일련번호 부분** 최대값을 구한 뒤, **+1** 한 값을 3자리(001, 002, …)로 패딩하여 사용한다. - 판매소번호 전체 형식은 아래 §3 단순 방식으로 확정한다. --- ## 3. 판매소번호 전체 형식 — 단순 방식 (결정) 자료상 "기본코드 B, C, D + 일련번호"가 있으나, **접두사는 지자체 정보만 사용하는 단순한 형식**으로 먼저 적용하기로 함. | 항목 | 결정 내용 | |------|------------| | **형식** | **지자체 코드(lg_code) + 일련번호 3자리** | | **접두사** | `local_government.lg_code` (등록 시 선택/결정된 지자체의 코드). 예: 110201(중구), 110209(북구) | | **일련번호** | 해당 지자체(`ds_lg_idx`) 내에서 001, 002, 003 … (3자리, 앞자리 0 패딩) | | **결과 예** | `110209001`, `110209002` (북구 제1호, 제2호) | ### 3-1. 구현 규칙 - **생성 시점**: 지정판매소 등록 처리 시, 사용자 입력이 아닌 **시스템 자동 생성**. - **계산 방법** 1. 등록 대상 지자체 `ds_lg_idx` 확정 (폼에서 선택된 지자체 또는 효과 지자체). 2. 해당 지자체의 `lg_code` 조회 (예: `110209`). 3. 동일 `ds_lg_idx`인 기존 지정판매소의 `ds_shop_no` 중, 접미사 3자리(일련번호 부분)의 최대값을 구한 뒤 **+1**. 4. `ds_shop_no = lg_code + sprintf('%03d', 다음_일련번호)` (예: `110209` + `001`). - **구코드(ds_gugun_code)** - 판매소번호 생성에는 **사용하지 않음** (접두사는 lg_code만 사용). - **등록 시 자동 설정**: 소속 지자체가 한 구·군 단위이므로, 해당 지자체의 `local_government.lg_code`를 그대로 `ds_gugun_code`에 저장. 사용자 입력 없음. → §3-3 참고. - **동코드** - 현재 미적용. 필요 시 추후 "접두사 확장(동코드 포함)" 검토. ### 3-2. 확장 가능성 - 추후 "주소 기반 구코드(C)·동코드(D) 반영"이 필요하면, 접두사를 `ds_gugun_code` 또는 동코드까지 포함하는 형식으로 변경 검토. - 당분간은 **lg_code + 3자리 일련번호**로 통일. ### 3-3. 구코드(ds_gugun_code) 자동 등록 (결정) | 항목 | 내용 | |------|------| | **결정** | 구코드는 **등록 시 시스템이 자동으로 부여**한다. 사용자 입력란 없음. | | **근거** | 지정판매소는 소속 지자체(`ds_lg_idx`)가 한 구·군을 의미하고, `local_government` 1행 = 1구·군이며 `lg_code`가 기본코드 C(구코드)와 동일함. | | **구현** | 지정판매소 등록 처리 시, 선택/효과 지자체의 `lg_code`를 조회하여 `ds_gugun_code`에 그대로 저장. | | **자료** | 웹 기능목록: "구코드: 판매소 주소를 바탕으로 기본코드 C 할당" — 본 시스템에서는 "소속 지자체 = 구·군"이므로 지자체 코드로 자동 할당. | --- ## 4. 참고 - **결정 필요 문서**: `docs/결정_필요한_사항들/01-DB_및_도메인_구조.md` §2 (판매소번호 규칙) - **기본코드**: `docs/기본 개발계획/03-basic-codes.md`, `종량제_개발목록_20260127(기본코드 종류).csv`