Skip to content

공휴일 화면 관리 · 거부 뒤 재배정 · 수락 대기에서도 도착 예정일 - #388

Merged
Jay722J merged 1 commit into
mainfrom
feat/holiday-admin
Sep 10, 2026
Merged

공휴일 화면 관리 · 거부 뒤 재배정 · 수락 대기에서도 도착 예정일#388
Jay722J merged 1 commit into
mainfrom
feat/holiday-admin

Conversation

@Jay722J

@Jay722J Jay722J commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Closes #387

1. 공휴일 — 배포 없이 넣는다

앞 PR 이 반쪽이었다. 2026년 값을 migration 에 넣어 둔 것으로 끝냈는데, 그대로면 2027년에도 임시공휴일이 생길 때마다도 배포를 해야 한다 — 코드에 박지 않으려고 표로 뺀 이유가 사라진다.

관리자 > 공휴일 탭(basedata.manage)에서 연도별로 넣고 고친다. 고치면 다음 계산부터 반영된다(TTL 을 기다리지 않고 바로 무효화). 뺀 날은 지우지 않고 끈다 — 「이 날은 안 쉰다고 정했다」도 기록이다.

「불러오기」는 초안이다. HOLIDAY_API_KEY(공공데이터포털 특일정보, 무료)가 SSM 에 있으면 행정안전부 값을, 없으면 키 없이 되는 공개 소스를 쓴다. 어느 쪽이든 사람이 확인해야 저장된다 —

2027년을 실제로 불러와 보니 제헌절(7/19)이 또 들어왔다. 2008년에 공휴일에서 빠진 날이다. 초안으로만 쓰는 이유가 이것이다.

2. 거부 뒤 재배정 — 아예 안 되고 있었다

order.quote_id 가 유일한데 거부해도 그 행은 남는다(배정만 풀린다). 그대로 create 하니 유일 제약에 부딪혔다.

배정 → 거부 → 견적 contracted(정상)
     → 재배정 → 409 ALREADY_ASSIGNED   ← 갇힘

배정이 풀린 행이 있으면 그 행을 다시 쓴다. 거절 기록(rejected_at·reject_reason)은 지우지 않는다. 이미 배정된 건을 또 배정하는 것은 여전히 막힌다.

3. 적은 발주서가 남는다

임시저장이 없으면 거부돼 돌아온 발주서를 꺼내 이어 적게 한다 — 대개 초안 없이 배정 화면에서 바로 적고 누르므로 초안 자체가 없다.

  • 특장사 칸만 비운다(그 특장사가 거부한 건이다)
  • 커스텀 건의 비고는 서버가 넣는 안내 문구라 돌려주지 않는다
  • 화면은 「초안」이 아니라 「특장사가 거부해 돌아온 발주서 — 사유: …」 라고 알려 준다
  • 임시저장이 있으면 그것이 먼저다

4. 수락 대기에서도 도착 예정일

「주문 진행」에서 수락 대기 카드를 누르면 열리는 곳은 주문 상세가 아니라 발주서 모달이라 도착 예정일 칸이 없었다 — 정작 그때가 알려 줘야 하는 때다. 모달에도 넣었고, 특장사에게는 읽기 전용으로 보인다(납기를 고르는 자리에서 차가 언제 오는지는 알아야 한다).

검증

검사 711(백엔드) + 316(shared) 통과 · 프론트·백엔드 클린 빌드 · db:drift 일치.

되돌려 걸리는 것을 확인한 변이 7개:

되돌린 것 걸린 검사
항상 order.create 다시 배정할 수 있다
돌아온 발주서를 안 준다 적은 발주서 내용이 남는다
커스텀 비고를 그대로 준다 커스텀 건의 비고는 돌려주지 않는다
초안보다 옛 발주서를 먼저 본다 임시저장이 있으면 그것이 먼저다
저장해도 계산에 미반영 다음 해는 화면에서 넣을 수 있다
뺀 날을 진짜로 지운다
공휴일 저장 권한 미검증 공휴일 표를 고치는 것은 권한이 있는 관리자만

브라우저: 관리자 > 공휴일 → 2027 선택 → 불러오기(17건) → 표에 담아 저장 → DB 17행 확인. 수락 대기 카드를 눌러 발주서 모달에서 도착 예정일 「지정」 버튼이 뜨는 것 확인.

스키마 변경 없음.

## 공휴일 — 배포 없이 넣는다

2026년 값을 migration 에 넣어 둔 것으로 끝냈던 것이 잘못이었다. 그대로면
2027년에, 그리고 임시공휴일이 생길 때마다 **배포를 해야 한다** — 표로 뺀
이유가 사라진다.

관리자 > 공휴일 탭에서 연도별로 넣고 고친다. 고치면 다음 계산부터 반영된다
(TTL 을 기다리지 않고 바로 무효화한다). 뺀 날은 지우지 않고 끈다 —
「이 날은 안 쉰다고 정했다」도 기록이다.

「불러오기」는 **초안**이다. 서비스키(`HOLIDAY_API_KEY`)가 있으면 행정안전부
특일정보를, 없으면 키 없이 되는 공개 소스를 쓴다. 어느 쪽이든 사람이 확인해야
저장된다 — 2027년을 실제로 불러와 보니 **제헌절이 또 들어왔다.**

## 거부 뒤 재배정 — 아예 안 되고 있었다

`order.quote_id` 가 유일한데 거부해도 그 **행은 남는다**(배정만 풀린다).
그대로 `create` 하니 유일 제약에 부딪혀 「이미 배정된 견적입니다」로 막혔다.
확인해 보니 재배정이 **한 번도 되지 않는 상태**였다.

배정이 풀린 행이 있으면 그 행을 다시 쓴다. 거절 기록은 지우지 않는다 —
왜 한 번 돌아왔는지가 남는다. 이미 배정된 건을 또 배정하는 것은 여전히 막힌다.

그리고 **적은 발주서가 남는다.** 임시저장이 없으면 거부돼 돌아온 발주서를
꺼내 이어 적게 한다 — 대개 초안 없이 배정 화면에서 바로 적고 누르기 때문에
초안 자체가 없다. 특장사 칸만 비워 다시 고르게 하고, 커스텀 건의 비고는
서버가 넣는 안내 문구라 돌려주지 않는다. 화면은 「초안」이 아니라
「거부돼 돌아온 발주서」라고 사유와 함께 알려 준다.

## 수락 대기에서도 도착 예정일

관리자가 「주문 진행」에서 수락 대기 카드를 누르면 열리는 곳은 주문 상세가
아니라 **발주서 모달**이다. 도착 예정일이 상세에만 있어 아직 수락 안 된 건에는
손댈 자리가 없었다 — 정작 그때가 알려 줘야 하는 때다(제보).

발주서 모달에도 넣었다. 특장사에게는 읽기 전용으로 보인다 — 납기를 고르는
자리에서 차가 언제 오는지는 알아야 하는 값이다.

검사 6 + 3개. 일곱을 되돌려 각각 걸리는 것을 확인했다.
브라우저에서 2027년을 불러와 17일을 저장하는 것까지 확인했다.
@Jay722J
Jay722J merged commit 3139c3a into main Sep 10, 2026
4 checks passed
@Jay722J
Jay722J deleted the feat/holiday-admin branch September 10, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

공휴일이 화면에서 관리되지 않는다 · 거부 뒤 재배정이 막힌다

1 participant