문서 번호
견적·발주·전표 번호(INV-2026-0001 · PR-2607-001)의 형식·파싱과 원자적 발급. 같은 범위의 두 발급이 같은 번호를 받지 않는다. 기간은 한국 날짜로 가른다
npm install @duolabs-deux/unit-doc-number
직접 넣어 보기
형식
동시에 20건
저장소 시험
번호 읽기
문서 번호 형식이 맞지 않습니다
어댑터
| id | 종류 | 설명 |
|---|---|---|
postgres | 실제 | 한 문장 UPSERT 로 청구. 드라이버 없이 쿼리 함수를 주입한다(pg·Prisma 모두). 문서를 넣는 트랜잭션 안에서 부르면 결번이 없다 |
memory | 가짜 | 한 프로세스 안에서만 유효. 테스트·데모용. 여러 인스턴스에서 쓰면 번호가 겹친다 |
실패와 소비 앱이 할 일
| 종류 | 언제 | 할 일 |
|---|---|---|
invalid-input | 형식(접두·자리수)이 틀렸거나, 파싱할 글자가 형식과 다를 때 | 형식은 개발 중에 고친다. 사용자가 친 번호면 입력 칸에서 알린다 |
upstream-down | 저장소 쿼리가 실패했을 때 | 문서 저장 트랜잭션을 되돌리고 다시 시도한다 |
unexpected | 일련번호가 자리수를 넘었거나 저장소 응답을 읽지 못했을 때 | 자리수를 늘릴지 사람이 정한다(이미 낸 번호와 정렬이 달라진다) |
한도
- 번호를 미리 보여 주지 않는다. 미리 본 번호는 저장할 때 다른 사람이 가져갈 수 있다
- 트랜잭션 밖에서 청구하고 문서 저장이 실패하면 그 번호는 빈다
- 다시 시작하는 단위는 해·달·없음 셋이다. 회계연도처럼 다른 경계가 필요하면 기간 글자를 소비 앱이 정해 tenant 와 함께 쓴다