docs: add project docs and test updates

This commit is contained in:
taekyoungc
2026-04-08 00:23:55 +09:00
parent 06fedc866a
commit 06aa401048
238 changed files with 8373 additions and 148 deletions

View File

@@ -0,0 +1,76 @@
# 지정판매소 수정·삭제 기능
> 등록된 지정판매소의 **정보 수정**과 **삭제** 기능에 대한 요구사항 정리 및 구현 방침.
---
## 1. 자료 근거 (웹 기능목록)
**파일**: `docs/종량제 관련 자료/종량제 개발목록/종량제_개발목록_20260127(웹 기능목록) (1).csv`
- **지정판매소 등록 / 수정 / 삭제** (PWB-030901-001)
지정판매소의 상호명, 우편번호, 사업자번호, 일반전화, 대표자명, 이메일, 도로명주소, 지번주소, 개인전화, **지정일자**, 업태, 구코드, 업종, 구역, 종사업장번호, 가상계좌, 계좌번호, **영업상태(정상, 폐업, 직권해지)**, 변경일자, 변경사유 **등록 / 수정 / 삭제** 기능 구현.
→ **수정·삭제**는 원래 요구사항에 포함됨.
---
## 2. 권한
| 역할 | 수정 | 삭제 |
|------|------|------|
| Super admin | 가능 (효과 지자체 내 지정판매소) | 가능 |
| 지자체관리자 | 가능 (본인 지자체 내 지정판매소) | 가능 |
| 지정판매소 / 일반 | 불가 | 불가 |
- 수정·삭제 대상은 **효과 지자체(`admin_effective_lg_idx()`)** 에 소속된 지정판매소만 허용. 타 지자체 소속은 404 또는 403 처리.
---
## 3. 수정 기능
### 3-1. 수정 가능 항목
- **수정 가능**: 상호명, 사업자번호, 대표자명, 가상계좌, 우편번호, 도로명주소, 지번주소, 일반전화, 대표 휴대전화, 이메일, 지정일자, **영업상태**(정상/폐업/직권해지).
- **수정 불가(표시만)**: 지자체, 판매소번호, 구코드.
- 판매소번호·구코드는 등록 시 자동 부여 규칙에 따라 변경하지 않음.
- 지자체 변경은 별도 이관 요건이 있을 경우 추후 검토.
### 3-2. 흐름
1. 목록에서 「수정」 클릭 → `GET /admin/designated-shops/edit/{ds_idx}`
2. 효과 지자체 소속 여부 확인 후, 수정 폼 표시 (기존 값 채움).
3. 저장 → `POST /admin/designated-shops/update/{ds_idx}`
4. 유효성 검사 후 `designated_shop` 업데이트, 목록으로 리다이렉트.
### 3-3. 영업상태 (ds_state)
- `1` = 정상, `2` = 폐업, `3` = 직권해지.
- 수정 폼에서 선택 가능. (기능목록의 “영업상태(정상, 폐업, 직권해지)” 반영.)
---
## 4. 삭제 기능
### 4-1. 방식
- **현재**: **물리 삭제** (DB에서 해당 행 `DELETE`).
- 연관 데이터(주문·결제 등)가 생기면, “삭제 시 검사” 또는 “상태만 폐업/직권해지로 변경(소프트 삭제)” 등으로 정책 재검토.
### 4-2. 흐름
1. 목록에서 「삭제」 클릭 → 확인 후 `POST /admin/designated-shops/delete/{ds_idx}` (또는 GET + 확인 페이지 후 POST).
2. 효과 지자체 소속 여부 확인.
3. 해당 행 삭제 후 목록으로 리다이렉트, 성공 메시지.
### 4-3. 확인
- 삭제 전 사용자 확인(confirm 또는 전용 확인 페이지) 권장.
---
## 5. 참고
- **등록·판매소번호·구코드**: `docs/기본 개발계획/22-판매소번호_일련번호_결정.md`
- **테이블 DDL**: `docs/기본 개발계획/테이블/01-마스터_테이블_DDL.md` §3 designated_shop
- **지자체 필터**: `docs/기본 개발계획/테이블/03-지자체_데이터_필터_및_권한.md`