납기 한도: 20영업일 + 공휴일을 뺀다 - #383
Closed
Jay722J wants to merge 1 commit into
Closed
Conversation
주말만 빼고 세다 보니 연휴가 낀 달에 고를 수 있는 날짜가 실제보다 적었다.
추석(9/24~26)을 앞두고 납기를 찍지 못하는 일이 생겼다(제보).
**한도 15 → 20 영업일.** 기산점은 예전과 같은 **배정일**이다(수락일이 아니다) —
수락이 늦으면 남는 제작 기간이 그만큼 줄어든다.
· 이미 납기를 찍은 건(수락 완료) → 15일 그대로. 발주서에 「15일 이내」가
문서로 찍혀 나갔으므로 소급해 고치지 않는다.
· 아직 수락 안 된 배정 → 20일 창을 연다. 연휴에 막혀 있던 건들이 이 대상이다.
그래서 한도를 **주문에 얼려 둔다**(`order.due_limit_days`). 상수 하나로 두면
다음에 또 바꿀 때 이미 나간 서류가 같이 바뀐다.
## 공휴일
`holiday` 표를 새로 만들고 영업일 계산에 **주입**한다. 코드에 박으면 임시공휴일
하나에 배포를 해야 한다. 서버는 DB 에서, 화면은 `GET /holidays` 에서 같은 목록을
받아 같은 함수(shared/schedule)에 물린다 — 어긋나면 「고를 수 있는데 저장이
거부되는」 예전 사고가 다시 난다.
⚠️ 무료 공개 API 두 곳(nager.at · holidays.hyunbin.page)을 대조해 보니 **둘 다**
제헌절(7/17)을 공휴일로 넣고 있었다. 2008년에 빠진 날이다. 그래서 불러온 값을
그대로 쓰지 않고, 확인한 2026년 값을 migration 으로 넣었다. 자동 조회는
관리자 화면에서 **초안**으로만 쓸 것이다(다음 PR).
받아오지 못해도 멈추지 않는다 — 달력이 비면 주말만 빼는 예전 계산이 되고,
한도가 짧게 나온다. 한도는 넘기면 안 되는 쪽이라 안전한 방향이다.
## 달력 화면
연휴는 회색으로 가라앉히지 않고 **이름을 적는다.** 「왜 이 날은 못 고르지」가
남으면 전화가 온다 — 추석이라 못 고르는 것과 한도를 넘어 못 고르는 것은 다른
이야기다.
달력이 늦게 도착하면 격자를 **다시 센다.** 처음엔 한 번 그리고 말아서, 10/14
까지여야 할 달력이 10/10 에서 끊겨 있었다(브라우저에서 잡았다).
검사: shared 8개 · 실제 API 6개. 넷을 되돌려 각각 걸리는 것을 확인했다.
db:drift 일치(테이블 40 · 컬럼 317).
Collaborator
Author
|
한 번에 배포하기로 해 #384 로 합쳤습니다. 커밋은 그대로 남아 있습니다. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #382
한도 15 → 20 영업일
기산점은 바뀌지 않는다. 예전부터
assigned_at(제작 배정을 누른 순간)부터 셌고 지금도 그렇다 — 수락하면서 새로 창이 열리는 것이 아니라, 수락이 늦으면 남는 제작 기간이 그만큼 줄어든다.지시대로 기존 건을 갈랐다.
그래서 한도를 주문에 얼려 둔다(
order.due_limit_days). 상수 하나로 두면 다음에 또 바꿀 때 이미 나간 서류가 함께 바뀐다. migration 이 기존 행을 위 규칙대로 채운다.한도가 이미 지난 배정은 전과 같이 수락이 막히고 「관리자에게 재배정 요청」이 뜬다. 다만 20일 + 연휴 제외로 창이 넓어져 상당수가 저절로 다시 열린다 — 의도한 결과다.
공휴일
holiday표를 새로 만들고 영업일 계산에 주입한다(setHolidays). 코드에 박으면 임시공휴일 하나에 배포를 해야 한다. 서버는 DB 에서, 화면은GET /api/v1/holidays에서 같은 목록을 받아 같은 함수에 물린다 — 어긋나면 「화면에서는 고를 수 있는데 저장이 거부되는」 사고가 다시 난다.받아오지 못해도 멈추지 않는다. 달력이 비면 주말만 빼는 예전 계산이 되어 한도가 짧게 나온다 — 넘기면 안 되는 쪽이라 안전한 방향이다.
달력 화면
연휴는 가라앉히지 않고 이름을 적는다. 추석이라 못 고르는 것과 한도를 넘어 못 고르는 것은 다른 이야기다.
브라우저에서 잡은 것 하나 — 달력이 늦게 도착하면 격자를 다시 세야 한다. 처음엔 한 번 그리고 말아서 10/14 까지여야 할 달력이 10/10 에서 끊겼다. 지금은 9/10 배정 건에서 20칸이 정확히 나온다.
검증
shared8개 · 실제 API 6개. 되돌려 각각 걸리는 것을 확인했다.백엔드 683 · shared 314 통과 · 프론트 클린 빌드 ·
db:drift일치(테이블 40 · 컬럼 317).스키마
추가만 했다 —
holiday표 신규,order.due_limit_days컬럼 추가. 기존 표·컬럼은 건드리지 않았다. 공휴일 초기값은 전체 seed 가 아니라 migration 안의 격리된ON CONFLICT DO NOTHING으로 넣는다.