103 lines
5.8 KiB
Markdown
103 lines
5.8 KiB
Markdown
# 판매소번호 일련번호 부여 방식 결정
|
|
|
|
> 지정판매소 등록 시 **판매소번호(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`
|