현장과 장비를 살펴보고 무엇을 연결할 수 있는지 알려 드립니다
어떤 캐비닛과 잠금장치가 이미 있는지, 그것이 밖으로 무엇을 내주는지, 어떤 출입 시나리오가 필요한지, 무엇부터 시작하는 것이 합리적인지.
칸이 있는 캐비닛은 쇠와 잠금장치입니다. 프로그램은 그것을 서비스로 바꿉니다: 사람이 코드나 카드로 권한을 받으면 칸이 스스로 열리고, 시스템은 어떤 칸이 누구에게 언제까지 쓰이는지 알며, 열림 하나하나가 로그에 남습니다. 아래에는 화면을 누르는 순간부터 잠금장치가 딸깍하고 이력에 기록되기까지가 어떻게 이뤄지는지 정리되어 있습니다.
락커 프로그램 — 누구에게 어떤 칸을 줄지 결정하고, 필요한 순간에 그 전자 잠금장치를 열며, 열림마다 기록을 남기는 시스템입니다: 누가, 언제, 무슨 근거로.
보통 캐비닛과의 차이는 한 가지 예로 드러납니다. 열쇠나 자물쇠가 있으면 칸은 사람이 책임집니다: 열쇠를 내주고, 번호를 기억하고, 되받습니다. 열쇠를 잃어버리면 부수어 열어야 하고, 다툼은 근무조의 기억으로 풀며, 지금 몇 칸이 비었는지는 곁에 서 있는 사람만 압니다.
자동화된 칸에는 열쇠가 없습니다. 문을 열 권리는 데이터베이스의 기록입니다: 이러이러한 코드가 이러이러한 칸에 언제까지 유효하다는 기록. 코드는 캐비닛에 가지 않고도 발급하고, 회수하고, 연장하고, 다른 사람에게 넘길 수 있습니다. 그리고 모든 대상의 모든 칸의 사용 여부가 하나의 목록에 보입니다.
예. 쇼핑몰의 방문객이 칸에 짐을 맡깁니다: 화면에 QR 코드를 스캔하면 문이 열리고, 그는 문을 닫고 갑니다. 두 시간 뒤 같은 코드로 같은 칸을 엽니다. 시스템에는 두 번의 열림 기록, 보관 시작 시각, 그리고 칸이 비어 다음 이용을 받을 준비가 됐다는 표시가 남습니다.
물품 보관소 자동화 는 세 가지 질문의 답이 담당자의 머릿속에 더는 들어가지 않는 지점에서 시작합니다: 지금 몇 칸이 쓰이고 있는가, 오늘 14:20에 그 칸을 정확히 누가 열었는가, 이틀째 놓여 있는 물건을 어떻게 할 것인가.
연결은 양방향입니다: 명령은 왼쪽에서 오른쪽으로 가고, 확인은 반대로 돌아옵니다. 열림은 명령을 보낸 순간이 아니라 문 센서가 응답한 뒤에 성립합니다. 이 단계가 없으면 시스템은 현장에서 벌어지는 일이 아니라 자기가 믿는 바를 칸에 대해 이야기하게 됩니다.

장비는 비슷합니다 — 같은 캐비닛, 같은 잠금장치, 같은 코드. 차이는 쓰임새에 있습니다. 택배함은 남의 소포를 수령인에게 내줍니다: 배송기사가 넣고 수령인이 가져가면 칸이 비워집니다. 물품 보관소는 사람에게 일정 시간 빌려 줍니다: 자기 물건을 자기가 넣고 자기가 가져가며, 칸은 이용 시간으로 요금이 매겨집니다.
그래서 프로그램에 대한 요구도 다릅니다: 택배함에서 중요한 것은 온라인 상점과 배송 업체와의 연결이고, 보관소에서 중요한 것은 이용, 기한, 연장, 그리고 칸을 다시 순환에 넣는 일입니다. 주문 수령은 다음 페이지에서 자세히 설명합니다 셀프서비스 시스템.
하나의 요청이 지나가는 전 과정 — 캐비닛 앞의 사람에서 로그의 기록까지입니다. 이어지는 내용에서는 이 고리 하나하나를 더 자세히 설명합니다.

물리적인 부분: 캐비닛의 섹션, 규격이 다른 칸, 문. 칸 하나하나가 자기 번호, 크기, 구역, 상태를 가진 별도의 객체로 시스템에 등록됩니다. 캐비닛에 새 섹션을 덧붙일 수 있고, 프로그램에서 그것은 개조가 아니라 칸의 추가입니다.
열쇠가 아니라 컨트롤러의 전기 신호로 열리는 잠금장치입니다. 보통 그 옆에 문 센서가 있어 문이 실제로 열렸는지 닫혔는지 알려 줍니다. 센서 없는 잠금장치도 작동하지만, 그러면 시스템은 결과가 아니라 명령만 알게 됩니다.
모든 잠금장치와 센서가 연결된, 캐비닛 안의 작은 기기입니다. «14번 칸을 열라»는 명령을 받아 해당 잠금장치에 신호를 보내고 결과를 돌려줍니다. 컨트롤러 하나가 수십 개의 칸을 담당하므로, 캐비닛은 마흔 가닥의 전선이 아니라 하나의 회선으로 시스템에 연결됩니다.
사람이 시스템에 요청하는 통로입니다: 캐비닛의 화면, 홀의 별도 단말기, 카드 리더, 또는 본인의 휴대폰. 접점은 여러 개를 동시에 둘 수 있습니다 — 시나리오는 같고 입력 방식만 다릅니다.
결정이 내려지는 곳입니다. 서버는 칸, 이용, 코드, 권한, 로그를 보관하고, 요청을 검증하고, 컨트롤러에 명령을 보냅니다. 보관 기한을 계산하고 알림과 리포트도 준비합니다. 데이터센터에 둘지 발주처의 장비에 둘지는 프로젝트에서 정합니다.
현장 직원의 업무 공간: 캐비닛 지도, 칸의 사용 현황, 진행 중인 이용, 이벤트, 수동 열림, 칸 잠금, 역할과 리포트. 브라우저에서 열리며 설치할 것이 없습니다.
순서가 바로 이 형태여야 합니다. 권한 검증은 캐비닛이 아니라 서버에서 이뤄집니다: 컨트롤러는 코드를 보관하지도, 누구를 들일지 결정하지도 않고 명령을 수행할 뿐입니다. 그래서 장비에 가지 않고도 패널에서 1초 만에 권한을 회수할 수 있습니다.
시스템은 모듈로 조립됩니다. 모든 모듈이 모든 현장에 필요하지는 않습니다: 사무실 락커에는 결제 모듈이 필요 없고, 역의 물품 보관소에는 사내 역할이 필요 없습니다. 구성은 과제가 정하되, 모듈은 나중에 옆에 덧붙이는 것이 아니라 처음부터 서로 맞물려 있습니다.
사람이 보는 것: 캐비닛의 화면, 링크로 여는 브라우저 페이지, 또는 모바일 앱. 서너 단계입니다 — 크기를 고르고, 칸을 받고, 열고, 닫습니다. 오류는 «코드 403»이 아니라 «보관 기한이 지났습니다»처럼 말로 설명합니다.
직원의 업무 공간: 캐비닛의 사용 현황, 진행 중인 이용, 이벤트, 사유를 적는 수동 열림, 칸 잠금, 요금과 규칙의 목록, 리포트. 모두 브라우저에서, 역할에 따라 구분해.
칸의 목록: 대상, 캐비닛, 번호, 규격, 구역, 현재 상태와 이력. 칸은 수리를 위해 순환에서 빼거나, 특정 용도로 예약하거나, 공통 출입 규칙을 가진 그룹으로 묶을 수 있습니다.
잠금장치를 다루는 계층: 열림 명령, 응답 대기, 실패 처리, 재시도. 여기에서 잠금장치의 종류도 반영합니다 — 문 센서가 있는지 없는지, 걸쇠의 위치를 되돌려 주는지 신호만 받는지.
캐비닛 컨트롤러와의 교환: 명령 큐, 통신 감시, 포트 상태, 펌웨어 버전. 모델마다 별도의 교환 모듈로 연결되지만 화면에서는 똑같아 보입니다.
캐비닛 앞에 누가 있는지의 검증: QR 코드, PIN 코드, 카드, 앱의 계정. 방법은 조합할 수 있고 대상별로 켤 수 있습니다 — 한 캐비닛은 코드로, 다른 캐비닛은 직원 카드로.
칸을 미리 잡아 둡니다: 시간 단위로, 날짜로, 반복되는 구간으로. 예약은 사람이 올 때까지 칸을 지키고 오지 않으면 스스로 풀립니다 — 그러지 않으면 캐비닛의 절반이 헛되이 예약된 채로 서 있게 됩니다.
보관이 유료인 곳에서: 요금, 금액 계산, 결제, 초과 시간의 추가 결제, 환불. 구체적인 결제 수단은 연결된 대행사와 장비에 달려 있습니다 — 이는 내장 기능이 아니라 연동입니다.
사용자와 직원에게 가는 메시지: 출입 코드, 기한 종료 알림, 문이 닫히지 않음, 칸이 비워짐, 캐비닛의 장애. 전달 채널은 도입 단계에서 고릅니다.
변경할 수 없는 이력: 열림과 닫힘, 출입 거절, 정비 목적의 열림, 요금과 권한의 변경, 직원의 동작. 기록은 수정하지 않습니다 — 정정은 새 기록으로 남깁니다.
캐비닛과 잠금장치의 상태: 컨트롤러와 통신이 되는지, 잠금장치가 응답하는지, 문이 걸리지 않았는지, 전원이 있는지. 고장 난 칸은 방문객이 발견하는 것이 아니라 자동으로 인도에서 빠집니다.
당직자, 현장 관리자, 서비스 팀, 책임자. 수동 열림, 이용 연장, 요금 변경, 개인정보 조회는 «관리자»라는 하나의 묶음이 아니라 각각의 권한입니다.
시스템의 외부 인터페이스: 칸 내주기, 코드 받기, 상태 조회, 이용 종료, 로그 가져오기. 이를 통해 회계 시스템, CRM, 건물의 출입 통제, 발주처의 서비스가 연결됩니다.
시간과 요일별 이용률, 칸의 회전율, 규격별 분포, 기한 초과의 비율, 장비의 고장, 유료 보관 시의 매출. 리포트는 파일로 내려받고 일정에 따라 만들 수 있습니다.
위의 모든 것을 잇는 코어: 이용의 관리, 명령 큐, 기한과 알림의 스케줄러, 로그의 보관, 복구 점검이 따르는 백업.
출입 시나리오는 두 가지이고 서로를 대신하지 않습니다. 첫째는 사람이 빈 캐비닛에 와서 그 자리에서 칸을 받는 경우입니다. 둘째는 칸이 미리 그에게 묶여 있는 경우입니다: 예약했거나, 한 달 단위로 빌렸거나, 근무용 락커로 배정받은 것입니다.
현장에서의 이용. 방문객이 화면에서 크기를 고르면 시스템이 그 규격의 빈 칸을 골라 열어 줍니다. 동시에 보관 이용이 만들어지고 코드가 발급됩니다 — 화면에, 영수증에, 또는 메시지로. 이 코드가 곧 열쇠입니다: 오직 이 칸에만, 오직 기한까지만 유효합니다.
지정된 칸. 여기에서는 사람 자신이 열쇠가 됩니다: 직원 카드, 앱의 계정, 고정 PIN. 칸은 신원이 확인되면 열리고, 방문할 때마다 이용이 새로 만들어지지 않으며, 기한은 보관 시간이 아니라 계약이나 일정이 정합니다.
열림과 열림 사이에 일어나는 일:
시스템 화면 이미지이며 시각은 예시입니다. 마지막 단계를 눈여겨보세요: 칸은 «직원이 알아챌 때»가 아니라 이용이 끝나는 순간에 순환으로 돌아옵니다. 그러지 않으면 저녁 무렵 캐비닛의 절반이 장부상 사용 중이지만 실제로는 비어 있게 됩니다.

그런 상황은 많지 않고 모두 미리 대비해 둡니다 — 그러지 않으면 하나하나가 관리자에게 걸려 오는 전화가 됩니다.
신원 확인은 한 가지 질문에 답합니다: 이 사람에게 지금 이 칸을 열 권리가 있는가. 방법은 현장과 장비에 맞춰 고릅니다 — 역에서 편한 것이 사무실 락커에는 맞지 않습니다. 특정 방법이 가능한지는 캐비닛에 무엇이 설치돼 있는지에 달렸으므로, 구성은 사전 진단에서 정합니다.
코드를 휴대폰 화면에 띄우거나 영수증에 인쇄하면 캐비닛이 스캐너로 읽습니다. 일회성 방문객에게 편합니다: 외울 것도, 입력할 것도 없습니다. 캐비닛에 스캐너가, 사용자에게 작동하는 화면이 필요합니다.
키패드나 화면에 입력하는 몇 자리 숫자입니다. 가장 까다롭지 않은 방법입니다: 휴대폰 없이도, 사용자 쪽 인터넷 없이도, 추가 장비 없이도 작동합니다. 시도 횟수 제한과 유효 기간이 필요합니다.
리더에 대는 비접촉 매체입니다. 사람들이 이미 출입증을 가진 곳 — 사무실, 공장, 피트니스 클럽 — 에서의 기본 방법입니다. 현장에 이미 발급된 출입증을 그대로 쓸 수 있는 경우가 많습니다 — 이는 카드의 종류에 따라 확인합니다.
칸은 캐비닛의 코드가 아니라 앱의 버튼으로 열립니다. 상시 이용자와 정기권에 알맞고, 여기에서 이력과 기한과 결제를 함께 보여 주기도 편합니다. 여는 순간 사용자에게 통신이 필요합니다.
이미 있는 문서가 열쇠가 됩니다: 주문 번호, 승차권, 번호표, 거래명세서. 칸이 그것에 묶이므로 사람에게 별도의 코드를 주지 않습니다. 가능 여부는 그 문서가 어디에서 오고 연동으로 접근할 수 있는지에 달려 있습니다.
코드와 카드 대신 지문이나 얼굴. 기술적으로는 또 하나의 리더로 연결되지만 개인정보의 보관과 보호에 대한 별도의 결정이 필요하므로, 기본 방법이 아니라 특정 프로젝트에서 검토할 선택지로 봅니다.
| 현장과 시나리오 | 기본 방법 | 이유 |
|---|---|---|
| 일회성 방문객, 유동 인구, 현장 결제 | QR 또는 PIN | 미리 내주고 되받을 것이 없습니다 |
| 출입증이 있는 직원 | 카드 | 매체가 이미 손에 있어 별도의 코드가 필요 없습니다 |
| 정기권과 단골 고객 | 앱 | 기한, 결제, 이용 이력이 같은 곳에 있습니다 |
| 사람 사이의 물건 전달 | 서로 다른 코드 | 넣는 사람과 찾아가는 사람이 각자의 코드를 가집니다 |
| 방문객의 인터넷이 안정적이지 않은 현장 | PIN만 | 사람 쪽의 휴대폰과 통신에 기대지 않습니다 |
방법들은 서로 배타적이지 않습니다: 한 캐비닛에서 직원용 카드와 손님용 코드가 동시에 작동합니다. 중요한 것은 다른 것입니다 — 무엇이 기본 방법인가, 유효 기간과 시도 횟수와 재발급 규칙이 그에 맞춰 설정되기 때문입니다.
시스템에서 가장 물리적인 부분이고, 프로그램이 진실을 말할지가 여기에 달려 있습니다. 전자 잠금장치 는 짧은 전기 신호로 열립니다: 전압이 오면 걸쇠가 빠지고 문이 풀립니다. 잠금장치 자체는 사람에 대해서도 코드에 대해서도 아무것도 모릅니다.
컨트롤러 — 잠금장치와 센서가 연결된, 캐비닛 안의 기기입니다. 서버에서 «27번 칸을 열라»는 명령을 받아 해당 출력에 신호를 보내고 결과를 돌려줍니다. 컨트롤러 하나가 수십 개의 칸을 담당하므로 캐비닛은 하나의 통신 회선으로 시스템에 연결됩니다.
문 센서 — 추측과 사실을 가르는 것입니다. 이것이 없으면 시스템은 명령이 나갔다는 것만 압니다. 있으면 문이 실제로 열렸다는 것과 몇 초 만에 닫혔는지를 압니다. 센서의 유무는 해당 캐비닛 모델의 문제이고, 작업을 시작하기 전에 확인합니다.
장비를 연결할 때 살펴보는 것:
저희는 특정 상표의 잠금장치와 컨트롤러 지원을 미리 선언하지 않습니다. 연결할 장비의 구성은 제조사 문서와 기기가 밖으로 내주는 인터페이스를 보고 사전 진단에서 정합니다; 준비된 인터페이스가 없는 경우에는 호환을 약속하는 대신 작업을 시작하기 전에 따로 해결합니다.

캐비닛과 서버 사이의 통신은 끊깁니다 — 1년에 한 번 있는 사고가 아니라 정상적인 상황입니다. 그런 순간의 동작은 미리 설계하며, 방법은 두 가지입니다.
오프라인 모드가 없으면 캐비닛은 그냥 응대를 멈춥니다: 화면이 통신이 없다고 알리고 새 칸은 내주지 않습니다. 안의 물건은 안전하지만 통신이 되살아나기 전에는 직원 없이 꺼낼 수 없습니다.
오프라인 모드가 있으면 컨트롤러가 제한된 수의 유효 코드를 보관해 그것으로 칸을 계속 열고 이벤트를 큐에 쌓습니다. 통신이 돌아오면 큐가 통째로 서버로 갑니다. 이 모드는 별도의 설계 결정입니다: 컨트롤러에 메모리가 필요하고, 코드 회수가 즉시 이뤄지지 않게 됩니다.
| 장비가 돌려준 것 | 어떻게 해석하는가 |
|---|---|
| 명령 수신, 센서가 열림을 확인 | 열림 |
| 명령 수신, 센서가 침묵 | 확인 필요 |
| 문이 허용 시간보다 오래 열려 있음 | 이벤트 |
| 컨트롤러가 명령에 응답하지 않음 | 이벤트 |
| 캐비닛이 통신에 잡히지 않음 | 이벤트 |
| 명령 없이 문이 열림 | 이벤트 |
«센서가 침묵»이라는 줄이 가장 중요합니다. 시스템은 그런 열림을 성립한 것으로도, 성립하지 않은 것으로도 보지 않습니다: 칸을 확인 필요로 표시하고 확인이 끝나기 전에는 다음 사람에게 내주지 않습니다.
칸은 언제나 정확히 하나의 상태에 있고, 상태 사이의 전환은 현장 직원의 판단이 아니라 규칙이 정합니다. «지금 몇 칸이 비었는가»에 대한 답이 바로 이 상태들에서 나오며, 그 답은 캐비닛까지 가 보지 않고도 맞아야 합니다.
칸이 멀쩡하고 비어 있어 다음 사람에게 내줄 수 있습니다. 인도할 때의 선택과 예약에는 이런 칸만 참여합니다.
미리 지정되어 다른 사람에게 내주지 않지만 아직 물건은 없습니다. 예약에는 기한이 있습니다: 오지 않으면 칸이 스스로 순환으로 돌아옵니다.
보관 이용이 진행 중입니다: 권한을 가진 사람, 시작 시각, 기한이 있습니다. 칸이 대부분의 시간을 보내는 기본 상태입니다.
한 사람이 다른 사람을 위해 물건을 넣어 둔 상태입니다. 칸은 사용 중이지만 열쇠는 받는 사람이 가집니다 — 전달과 주문 수령 시나리오입니다.
보관 기한이 지났고 물건은 안에 있습니다. 칸은 내주지 않고 별도의 목록에 오르며 현장의 규칙에 따라 처리합니다 — 추가 요금, 차단, 또는 물건의 반출.
열림이 센서로 확인되지 않았거나, 문이 열린 채로 남았거나, 명령 없는 열림이 기록된 경우입니다. 확인이 끝날 때까지 칸은 인도에서 빠집니다.
잠금장치가 응답하지 않거나 컨트롤러가 오류를 알렸습니다. 칸은 자동으로 빠지고 서비스 팀에 작업이 만들어집니다.
직원이 칸을 순환에서 뺐습니다: 청소, 섹션 수리, 업무상 필요. 잠금에는 작성자, 사유, 시각이 있습니다 — 그러지 않으면 누가 왜 열 칸을 닫았는지 알 수 없습니다.
시스템 화면 이미지이며 숫자는 예시입니다. 전체 수치보다 규격별 분포가 중요합니다: 칸의 71%가 사용 중인 현장이라도 소형은 하나도 비어 있지 않을 수 있는데, 대부분의 방문객이 찾는 것이 바로 소형입니다. 같은 표에서 캐비닛을 늘릴 때 어떤 크기를 더해야 하는지도 보입니다.
예약 는 사람이 오는 때를 예측할 수 있는 곳에 필요합니다: 목요일에 온다는 것을 알고, 그때 칸이 있으리라고 확신하고 싶은 경우입니다. 시스템은 그 구간 동안 칸을 지정하고 다른 사람에게 권하지 않습니다.
예약에는 반드시 대기 기한이 있습니다. 그것이 없으면 현장은 곧 빈 칸은 없는데 캐비닛은 절반이 비어 있는 상태가 됩니다: 사람들이 예약해 놓고 오지 않기 때문입니다. 약속한 시간에 오지 않으면 예약이 풀리고 칸은 순환으로 돌아가며 그 사람은 알림을 받습니다.
예약의 종류:
인도와 접수 — 칸이 두 사람 사이의 전달 지점이 되는 두 번째 시나리오입니다. 한 사람이 넣고 다른 사람이 가져가며, 만날 필요가 없습니다.
기술적으로는 같은 이용이지만 서로 다른 두 개의 출입 권한이 있습니다: 넣는 코드와 찾는 코드. 첫 번째는 문이 닫히면 소멸되고, 두 번째는 그 순간부터 유효해집니다. 그래서 시스템은 «칸이 사용 중»만이 아니라 «물건이 들어갔고 수령인은 아직 오지 않았다»까지 압니다.
코드를 나누는 것은 형식이 아닙니다. 공통 코드 하나만 유효한 동안에는 칸을 정확히 누가 열었는지 — 넣은 사람인지 찾아간 사람인지 — 답할 수 없습니다. 코드가 둘이면 로그의 열림마다 작성자와 역할이 남습니다.

선택은 «번호 순으로 첫 번째 빈 칸»이 아닙니다. 규칙은 현장에 맞춰 설정하며 보통 여러 조건을 한꺼번에 살핍니다:
기한이 지났는데 물건이 안에 있을 때 무슨 일이 일어날지는 현장의 규칙이 정합니다. 방법은 여러 가지이고, 첫 사례가 생긴 순간이 아니라 시작 전에 고릅니다.
어느 방법에서든 사람은 벌금이 붙은 뒤가 아니라 기한이 끝나기 전에 예고를 받습니다.
결제 모듈이 모두에게 필요하지는 않습니다: 직원용 락커와 클럽의 탈의 칸은 돈 없이 돌아갑니다. 하지만 칸을 빌려 주는 곳에서는 돈이 이용의 한 부분이 되고, 계산 규칙은 출입 규칙만큼 엄격하게 정해져야 합니다.
금액은 어떻게 계산되는가. 요금은 칸의 규격과 시간에 묶입니다. 가장 흔한 방식은 이렇습니다: 이용당 정액, 올림 처리하는 구간(시간, 일)당 요금, 첫 시간이 이후보다 비싼 계단식 요금, 그리고 장기 정기권.
결제는 언제 이뤄지는가. 이것도 프로젝트에서 정합니다. 고른 구간만큼 선결제하고 연장할 때 추가로 내는 방식이 현장 입장에서 가장 단순하고 예측 가능합니다. 이용이 끝난 뒤 실제 시간만큼 내는 방식은 사람이 낼 것이라는 보장 — 예를 들어 카드에 금액을 미리 승인해 두는 것 — 이 필요합니다.
시스템의 결제 부분에 속하는 것:
경계를 분명히 밝힙니다. 구체적인 결제 수단 — 카드, 비접촉 결제, QR, 앱 결제, 지폐 인식기를 통한 현금 — 은 연결된 결제 서비스와 캐비닛의 장비에 달려 있습니다. 이는 어느 프로젝트에서나 쓸 수 있는 내장 기능이 아니라 사전 진단에서 구성을 정하는 연동입니다. 세무 처리에 대한 요구는 국가의 법과 기기 모델이 정합니다.

올림 규칙은 사람이 최종 금액에서 발견하는 것이 아니라 결제 전에 안내받습니다. 현장에서 다툼을 일으키는 계산의 유일한 줄이 바로 이것입니다.
위험한 시나리오는 하나입니다: 돈은 빠져나갔는데 칸이 열리지 않은 경우. 시스템은 그런 처리를 끝난 것으로 보지 않습니다 — 이용은 시작되지 않고, 칸은 비어 있는 채로 남으며, 결제는 사유와 함께 환불 대기열로 들어갑니다.
반대 상황 — 칸은 열렸는데 결제가 확인되지 않은 경우 — 도 똑같이 엄격하게 처리합니다: 이용은 만들어지되 미결제로 표시되어 확인 목록에 오릅니다. 시스템이 차이를 조용히 눈감아 줄 수는 없습니다, 그러지 않으면 월말에 아무것도 맞지 않게 됩니다.
이벤트는 시스템이 반드시 기억해야 하는 모든 변화입니다: 열림, 거절, 기한 종료, 직원의 동작. 일부 이벤트는 사람에게 메시지로 가고, 예외 없이 전부가 로그에 남습니다. 전달 채널 — 앱, 문자, 메일, 메신저 — 은 연동으로 붙이고 도입 단계에서 고릅니다.
출입 코드, 칸 번호, 현장의 주소, 보관 기한. 인도하는 순간에 보내고, 코드를 잃어버렸다면 요청에 따라 다시 보냅니다.
결제한 시간이 끝나기 전의 알림과 연장 선택지, 그리고 이용이 기한 초과로 넘어갔다는 별도의 메시지.
물건이 들어갔고 칸이 기다린다는 수령인에게의 메시지, 그리고 물건을 찾아갔다는 발송인에게의 확인.
칸이 열리지 않음, 문이 닫히지 않음, 캐비닛이 통신에 잡히지 않음, 컨트롤러가 오류를 반환함. 이벤트에는 수신자가 있습니다: 대상과 담당자가 붙습니다.
보관 기한이 지난 칸의 목록을, 이용 시작 시각과 연락처가 남아 있다면 연락 방법과 함께.
명령 없는 열림, 코드 입력 실패의 연속, 직원의 수동 열림, 결제와 인도의 차이.
| 시각 | 이벤트 | 근거 | 결과 |
|---|---|---|---|
| 14:05 | № 27 칸 인도 | 이용 8842, 중형 규격 | 성공 |
| 14:06 | 문 닫힘 | 문 센서 | 성공 |
| 16:40 | 코드에 의한 열림 | 이용 8842, QR 코드 | 성공 |
| 16:47 | 문이 기준보다 오래 열려 있음 | 문 센서, 6분 | 이벤트 |
| 18:20 | 기한 종료 알림 | «40분 전» 규칙 | 전달됨 |
| 18:49 | 출입 거절 | 코드 오입력, 5회 중 2회 시도 | 거절 |
| 18:52 | 이용 종료 | 화면에서의 확인, 추가 결제 180 | 성공 |
| 19:14 | 정비 목적의 열림 | 당직자 아사노프, 사유 «칸 청소» | 수동 |
시스템 화면 이미지이며 데이터는 예시입니다. 18:49 줄을 눈여겨보세요: 입력 실패도 이벤트입니다. 성공만 담기는 로그는 다툼을 확인하는 데 쓸 수 없습니다, 거기에서 이야기되는 것이 바로 거절과 수동 열림이기 때문입니다.
관리자 패널은 «설정»이 아니라 업무 공간입니다. 직원은 대부분의 시간을 두 가지를 보는 데 씁니다: 지금 칸에 무슨 일이 벌어지는가, 그리고 무엇이 자기 개입을 필요로 하는가.
첫 화면에 있는 것: 규격별 사용 현황이 표시된 캐비닛 지도, 긴급도순으로 정리된 미처리 이벤트 목록, 기한이 지난 칸, 순환에서 빠진 칸. 칸 전체 목록이 죽 늘어서지는 않습니다 — 그러면 칸이 이백 개인 현장에서 첫 화면이 쓸모없어집니다.
관리자가 할 수 있는 일:
권한은 사람이 아니라 역할에 줍니다. 직원이 셋인 현장에서는 차이가 보이지 않지만, 스무 명이 되는 순간 개별 설정은 확인이 불가능해집니다: 지금 누구에게 남의 칸을 열 권한이 있는지 아무도 답하지 못합니다. 역할은 그 질문에 한 줄로 답하는 방법입니다.
마지막 두 줄은 과도한 조심이 아닙니다. 권한을 나눠 주는 권한과 개인정보를 보는 권한은 다른 모든 제한을 우회하므로, 언제나 «관리자» 묶음에 들어가지 않고 별도로 떼어 둡니다.

캐비닛이 한 현장에 있다면 목록으로 충분합니다. 현장이 열 곳이 되면 단일 지점에는 없던 것이 모두 생깁니다.
일에 필요한 만큼만입니다: 이용 번호, 칸, 시각, 출입 방법, 결제 상태. 연락처를 받았다면 그것은 별도의 권한으로, 로그 기록을 남기며 보여 줍니다 — 열람 사실 자체도 이벤트입니다.
사용자에 대해 수집하는 데이터의 구성은 설계 결정이며, 시스템의 능력이 아니라 현장과 법의 요구가 정합니다. 사람에 대해 칸 번호와 시각 말고는 아무것도 보관하지 않는 시나리오도 실제로 작동하며 충분한 경우가 많습니다.
캐비닛은 지켜보는 사람 없이 서 있고, 그것이 캐비닛의 본질입니다. 그러므로 고장은 시스템이 스스로 알아채야 합니다 — 그러지 않으면 물건이 든 칸이 열리지 않은 방문객이 알려 주게 됩니다.
상시 관찰하는 것:
침묵도 이벤트입니다. 통신에 잡히지 않는 캐비닛은 «다 평온하다»는 뜻이 아닙니다: 이백 개 칸과 그 안의 물건에 대해 아무것도 모른다는 뜻입니다. 그래서 통신 두절은 관찰의 빈칸으로 남지 않고 잠금장치 고장과 똑같은 이벤트를 만듭니다.
고장 난 칸은 어떻게 되는가. 자동으로 선택에서 빠집니다: 다음 사람에게 권하지 않습니다. 그 칸에 대해 캐비닛 번호, 칸 번호, 고장 설명이 담긴 작업이 서비스 팀에 만들어집니다. 칸을 순환으로 되돌리려면 작업 완료 표시가 있어야 합니다 — 저절로 «낫지» 않습니다.
장비 관리의 방식은 저희가 다음 시스템에서 쓰는 것과 같습니다 IoT 모니터링: 지표, 기준, 지속 시간, 이벤트, 담당자. 다른 점은 여기에서 재는 것이 온도가 아니라 잠금장치의 응답과 통신의 유무라는 것뿐입니다.

단계는 셋이고, 누구를 언제 얼마나 빨리 부를지는 단계가 정합니다.
지속 시간 — 시스템이 경보를 올리기 전에 기다리는 시간 — 은 이벤트 종류마다 정합니다. 그것이 없으면 홀 청소와 정기 점검이 거짓 메시지의 홍수가 되고, 그다음에는 아무도 메시지를 읽지 않게 됩니다.
기간별로 캐비닛마다 얼마나 오래 통신에 잡혀 있었는지, 몇 개의 칸이 얼마나 오래 순환에서 빠져 있었는지, 칸마다 몇 번의 고장이 있었는지 보입니다. 이 숫자들은 실무적인 질문에 답합니다: 어떤 칸을 바꿀 때가 됐는지, 어느 캐비닛이 통신이 잡히지 않는 자리에 서 있는지.
잠금장치와 컨트롤러
코드와 카드에 의한 출입
관리자 패널
열림 하나하나의 로그
이런 시스템의 보안은 한 가지 조치가 아니라 몇 가지 단순한 규칙으로 이뤄지고, 규칙마다 남의 칸에 닿는 하나의 경로를 막습니다.
코드는 제한적으로만 유효합니다. 코드마다 기한, 칸, 허용된 사용 횟수가 있습니다. 기한 없이 어떤 칸에나 통하는 코드는 열쇠가 아니라 만능키이므로, 시스템은 직원에게조차 그런 상태를 허용하지 않습니다.
코드를 무차별로 맞힐 수 없습니다. 입력 시도 횟수가 제한되고, 다 쓰면 일정 시간 입력이 막히며, 연속된 실패는 확인 대상 이벤트가 됩니다. 이것이 없으면 네 자리 PIN은 하룻저녁이면 뚫립니다.
결정은 서버가 내립니다. 캐비닛의 컨트롤러는 코드를 보관하지도, 누구를 들일지 결정하지도 않고 명령을 수행할 뿐입니다. 그래서 장비에 접근한다고 칸에 접근하게 되지 않고, 코드 회수는 즉시 반영됩니다.
모든 열림이 기록됩니다. 로그는 변경할 수 없습니다: 기록을 수정하거나 지울 수 없고 정정은 새 기록으로 남깁니다. 직원도 마찬가지입니다 — 정비 목적의 열림도 일반 열림과 나란히 칸의 이력에 보입니다.
권한은 나뉘어 있습니다. 조회, 수동 열림, 규칙 변경, 개인정보 취급은 서로 다른 권한입니다. 무엇이든 할 수 있는 계정 하나는 보안 전체의 단일 실패 지점입니다.
시스템이 책임지지 않는 것. 시스템은 출입을 통제하지만 물리적 보호를 대신하지 않습니다: 캐비닛의 견고함, 구역의 영상 감시, 직원의 행동 절차, 귀중품 보관 규정은 현장의 몫으로 남습니다. 프로그램이 캐비닛을 금고로 만들어 준다는 인상을 남기기보다 이렇게 분명히 말하는 편이 정직합니다.

이 가운데 어느 것도 그 자체로 위반을 뜻하지 않습니다: 성실한 사람도 코드를 잘못 입력하고, 칸은 열 가지 정당한 이유로 손으로 열립니다. 대기열의 뜻은 그런 사례가 공통 로그에 묻히지 않고 누군가 정기적으로 들여다보는 별도의 목록에 모인다는 데 있습니다.
사용자에 대해 수집하는 데이터의 구성은 현장의 시나리오가 정합니다. 일회성 보관은 아예 없이도 됩니다 — 칸, 시각, 코드만으로. 정기권에는 계정이 필요합니다. 사내 락커는 인사 시스템과 이어집니다. 모으는 데이터가 적을수록 지켜야 할 것도 적으므로, 구성은 «혹시 몰라» 늘리는 것이 아니라 개발 전에 정합니다.
보관 시스템이 홀로 살아가는 경우는 드뭅니다: 이미 자기 프로그램을 가진 현장 안에 놓입니다. 교환은 API로 이뤄집니다 — 다른 시스템이 칸을 내주고, 코드를 받고, 상태를 조회하고, 로그를 가져갈 수 있는 외부 인터페이스입니다. 아래는 가장 자주 만나는 교환의 방향입니다.
기본적인 연결 방법: 칸 내주기, 코드 발급과 회수, 사용 현황 조회, 이용 종료, 이벤트 가져오기. 발주처의 내부 서비스를 포함한 나머지 모두가 이를 통해 연결됩니다.
사람들이 이미 카드를 가진 곳에서: 칸이 개찰구와 같은 출입증으로 열립니다. 카드의 종류와, 운영 중인 출입 통제 시스템이 밖으로 어떤 인터페이스를 내주는지에 대한 협의가 필요합니다.
사내 락커를 위해: 직원이 입사하면 락커가 지정되고, 퇴사하면 권한이 회수되고 칸이 비워집니다. 그러지 않으면 1년 뒤 락커의 절반이 현장에 없는 사람들 앞으로 잡혀 있게 됩니다.
결제 수납, 환불, 처리의 대사. 구체적인 대행사와 결제 수단은 프로젝트가 정하고, 세금 관련 요구는 국가의 법과 장비 모델이 정합니다.
사용자와 직원에게 메시지를 전달하는 방법: 앱, 문자, 메신저, 메일. 채널은 따로 연결하며 현장에 맞춰 고릅니다.
칸을 통한 주문 수령 시나리오: 주문이 밖에서 들어오고, 칸이 지정되고, 코드가 발송인과 수령인에게 나뉘어 갑니다. 이 회로는 다음 페이지에서 자세히 설명합니다 셀프서비스 시스템.
캐비닛과 잠금장치의 상태를 현장에 이미 있는 외부 감시 시스템으로 보내거나, 저희 회로를 쓰는 것 IoT 모니터링.
유료 이용과 결제 데이터를 회계 시스템으로 보내기. 이때 요금 목록의 소유자는 하나입니다 — 회계 시스템이거나 보관 시스템이거나, 둘 다일 수는 없습니다.
로그와 지표를 발주처의 데이터 웨어하우스나 리포트 시스템으로 정기 전송 — 현장의 분석을 따로가 아니라 회사의 공통 회로에서 만드는 경우입니다.
저희는 연동의 구체적인 목록을 미리 선언하지 않습니다: 교환의 가능 여부는 발주처 쪽 시스템이 밖으로 어떤 인터페이스를 내주는지에 달려 있습니다. 무엇이 바로 연결되고, 무엇이 상대 쪽의 추가 작업을 필요로 하며, 무엇을 파일 내보내기로 처리해야 하는지는 작업 도중이 아니라 사전 진단에서 — 시작 전에 — 분명해집니다.
장비와 논리는 어디서나 같습니다: 칸, 잠금장치, 코드, 이용, 로그. 다른 것은 시나리오, 보관 기한, 유료인지 아닌지입니다 — 설정의 차이는 바로 이 세 가지에서 나옵니다.

몇 시간짜리 일회성 보관: 쇼핑한 물건, 유모차, 부피가 큰 짐. 이용이 많고 방문객이 불특정하므로 코드에 의한 단순한 출입, 빠른 인도, 그리고 영업 종료까지 칸을 순환으로 되돌리는 엄격한 규칙이 필요합니다.
전형적인 물품 보관소: 몇 시간에서 며칠짜리 수하물, 시간에 따른 요금, 24시간 운영. 여기에서 가장 중요한 것은 오프라인 동작의 신뢰성과 알기 쉬운 기한 초과 규칙입니다 — 사람들은 차 시간에 늦습니다.
운동 시간 동안 쓰는 락커로, 대개 무료이고 클럽 카드로 엽니다. 시스템의 가치는 결제가 아니라, 관리자가 사용 중인 락커를 보고 잠금장치를 부수지 않고도 잊고 간 락커를 열 수 있다는 데 있습니다.
직원이나 입주자의 개인 락커: 지정된 칸, 출입증에 의한 출입, 계약에 따른 기한. 인사 시스템과의 연결이 가장 큰 문제 — 퇴사자 앞으로 잡혀 있는 락커 — 를 없애 줍니다.
입주사와 방문객을 위한 칸, 회사 사이에서 만나지 않고 문서와 열쇠를 주고받기. 여기에서는 두 개의 코드 — 넣는 코드와 찾는 코드 — 를 쓰는 시나리오가 가장 자주 필요합니다.
몇 달 단위로 빌려 주는 보관 공간: 긴 이용, 정기권 결제, 카드나 코드에 의한 출입. 소프트웨어는 기한, 연장, 미납 시의 차단, 방문 이력을 맡습니다.
공구, 계측기, 작업복을 넣는 칸. 과제는 결제가 아니라 책임입니다: 누가 가져갔고, 언제 돌려놨고, 근무가 끝날 때까지 무엇이 돌아오지 않았는지. 여기에서는 로그가 시스템의 주된 결과물입니다.
학생과 방문객을 위한 락커, 칸을 통한 책과 기기의 대여와 반납. 보통 자체 사용자 목록이 아니라 이미 있는 인원 관리 시스템과의 연결이 필요합니다.
대기 구역의 방문객용 칸과 직원용 락커. 여기에서는 로그와 권한 구분에 대한 요구가 평소보다 높고, 수집하는 데이터는 최소한입니다.
시스템은 데이터를 많이 쌓지만 그중 쓸모 있는 것은 몇 가지뿐입니다. 실질적인 의미가 있는 질문은 네 가지입니다: 칸이 충분한가, 어떤 크기가 필요한가, 어디에서 시간이 새는가, 어떤 장비를 손볼 때가 됐는가.
이용률이 보여 주는 것. 한 달 평균 수치가 아니라 시간과 요일에 따른 분포입니다: 평균 45%인 현장이라도 토요일 14시에서 18시 사이에는 소형 칸이 하나도 비어 있지 않을 수 있습니다. 해법은 캐비닛을 통째로 늘리는 것이 아니라 필요한 크기의 칸을 더하는 것입니다.
현장별로 계산하는 지표:
인도 거절은 가장 과소평가되는 지표입니다. 사용 현황은 누구에게나 보이지만, 와서 빈 칸을 찾지 못하고 돌아간 사람은 일반적인 통계에 아예 남지 않습니다. 그런데 캐비닛을 늘려야 하는지에 답하는 것이 바로 이 숫자입니다.
리포트는 파일로 내려받을 수 있고 일정에 따라 만들 수도 있습니다 — 예를 들어 매달 1일에 모든 현장을 한꺼번에.

그래프에서 두 시간 동안 100%라는 것은 «잘 활용되고 있다»가 아니라 줄과 거절을 뜻합니다. 이 지표 옆에는 언제나 칸을 받지 못하고 돌아간 사람의 수가 함께 놓입니다 — 그러지 않으면 최고점이 성공으로 읽힙니다.
단계는 바로 이 순서를 따릅니다. 사전 진단을 건너뛰는 것이, 필요한 명령을 받지 못하는 장비에 맞춰 시스템을 만들게 되는 가장 흔한 원인입니다.
현장에 이미 있는 것: 캐비닛, 잠금장치, 컨트롤러, 리더, 통신, 전원. 어떤 시나리오가 필요한지, 보관이 유료인지, 칸은 누가 책임지는지. 결과물은 무엇이 바로 연결되고, 무엇이 추가 작업을 필요로 하며, 현장에 무엇이 부족한지입니다.
캐비닛 하나를 통째로: 실제 장비에서의 컨트롤러 교환, 열림과 센서의 확인, 문서가 아니라 사람들의 실제 행동에 맞춘 기한·요금·규칙의 설정.
누가 어느 현장을 책임지는지, 어떤 이벤트가 누구에게 가는지, 무엇을 장애로 볼지, 기한 초과를 어떻게 처리할지. 여기에서 직원의 권한과 수동 열림의 절차도 설정합니다.
검증된 방식대로 나머지 캐비닛과 현장을, 새로운 종류의 장비는 별도의 교환 모듈로. 그다음에는 이력이 쌓이고 기간별 리포트와 확장을 위한 데이터가 생깁니다.
어떤 현장인지, 칸이 몇 개이고 어떤 캐비닛이 이미 있는지, 보관이 유료인지, 누가 시스템을 다룰지 적어 주세요. 기존 장비에 무엇이 연결되는지, 어떤 출입 시나리오가 알맞은지, 파일럿을 무엇부터 시작하는 것이 합리적인지 답해 드리겠습니다.