시나리오
고객 앱에서 창구, 대기 화면까지
시니어 고객 한 명이 방문을 준비하고 호출되기까지의 흐름입니다. 아래 내용은 모두 저장소 코드에서 확인한 동작입니다.
흐름
- 고객 앱에서 AI 와 대화합니다. 용건을 말하거나(음성 입력 지원) 글로 입력합니다. 창업·사업자·법인 같은 단어가 보이면 「법인 사무 안내 받기」 버튼이 나타납니다. (근거:
www/src/app/chat/page.tsx) - 창구 직원에게 내용을 전달합니다. 대화를 AI 가 방문 목적, 관련 계좌, 금액, 필요 서류, 특이사항, 직원용 조언으로 정리하고, 법인 사무인지 일반 업무인지도 구분합니다. 결과는 창구 전달함에 저장되고 대기열에 등록됩니다. (근거:
jb/apps/chat/app/use_cases/handoff_interactor.py) - 창구 화면에 카드가 뜹니다. 직원은 대기·현장대기·호출 상태의 카드를 보고 「도착 인증」으로 현장대기로 바꾸고, 「호출」을 누릅니다. 화면은 5초마다 목록을 새로 읽습니다. (근거:
teller/src/app/page.tsx) - 대기 화면에 번호가 표시됩니다. 호출된 고객은 「지금 호출」 영역에 번호와 「N번 창구로 오세요」로 나타나고, 이전 호출은 작은 카드로 남습니다. 2초마다 갱신합니다. (근거:
display/src/app/page.tsx)
대기 상태 규칙
| 상태 | 의미 | 규칙 | 근거 |
|---|---|---|---|
| 대기 | 접수됨 | 30분 안에 도착하지 않으면 파기 | queue_entry_entity.py |
| 현장대기 | 도착 인증 완료 | 만료 없음 | queue_entry_entity.py |
| 호출 | 직원이 호출함 | 1분 뒤 자동 삭제 | queue_entry_entity.py |
법인 사무는 번호표에 B 접두가 붙고(예: B2) 대기 화면에서 「법인 사무 창구」(2번)로 안내됩니다. 일반 업무는 접두 없이 1번 창구입니다. (근거: jb/shared_kernel/value_objects.py, display/src/app/page.tsx)
화면과 백엔드 컨텍스트의 연결
| 화면 | 쓰는 컨텍스트 | 대표 API | 근거 |
|---|---|---|---|
| 고객 앱 — 가까운 지점 | branch |
POST /api/v1/branch/nearby |
jb/apps/branch |
| 고객 앱 — 대화 | chat |
POST /api/v1/chat/message, /chat/handoff |
chat_router.py |
| 고객 앱 — 번호표 예약 | reservation |
POST·GET /api/v1/reservation/tickets, 취소 |
reservation_router.py |
| 고객 앱 — 법인 사무 안내 | corporate |
POST /api/v1/corporate/guidance |
corporate_router.py |
| 창구 화면 | queue |
GET /api/v1/queue/entries, …/arrive, …/call |
queue_router.py |
| 대기 화면 | queue |
GET /api/v1/queue/entries 중 호출 상태만 골라 표시 |
display/src/lib/api.ts |
예약과 대화 전달이 만들어 낸 항목은 queue 컨텍스트의 대기열로 등록됩니다. 컨텍스트 사이는 포트와 어댑터로 이어집니다. (근거: 커밋 01693b9, 9215dfb)