사진에서 라이브러리 인벤토리를 캡처하여 MongoDB 에 저장 , 연결된 소매 클라이언트와 오프라인 소매 클라이언트 간에 업데이트를 동기화 .
제품: MongoDB Enterprise Advanced
파트너: PowerSync
솔루션 개요
소매업체는 매장 재고에 대한 정확한 가시성이 필요합니다. 대규모 시설에서는 팀이 연결이 일관되지 않은 영역에서 작업하는 경우가 많으며, 재입고가 필요한 제품을 식별하기 위해 수동 검사에 의존하는 경우가 많습니다.
단일 서가 이미지를 구조화된 재고 기록 으로 변환하는 방법을 알아보세요. 비전 언어 모델은 제품을 식별하고 개수를 계산하는 반면, MongoDB Enterprise Advanced 캡처한 이미지, 항목 개수 및 애플리케이션 컨텍스트를 저장합니다.
MongoDB 네트워크 전체에 인벤토리 상태 배포하기 위한 기반을 제공합니다. 변경 스트림은 선택한 필드를 클라이언트 디바이스의 로컬 SQLite 데이터베이스와 동기화하는 PowerSync에 실시간 업데이트를 제공합니다. 연결이 끊어지면 클라이언트 장치는 로컬 데이터로 오프라인에서 계속 작업하고 다시 연결 시 동기화됩니다.
이 MongoDB 중심의 워크플로는 이미지 기반 캡처, 유연한 문서 모델링 및 동기화된 소매 애플리케이션을 원활하게 통합합니다. 선반 관찰을 팀이 클라이언트 애플리케이션 전반에서 사용할 수 있는 인벤토리 데이터로 변환합니다.
참조 아키텍처
MongoDB Enterprise Advanced 쉘프 인벤토리의 운영 데이터 계층이자 진실 소스 역할을 합니다.
브라우저는 백엔드 애플리케이션 으로 셸프 이미지를 보냅니다. 백엔드 구성된 비전 언어 모델에 이미지를 전달하고 구조화된 응답의 유효성을 검사한 다음 결과 인벤토리 문서 MongoDB 에 씁니다.
각 문서 감지된 항목과 함께 캡처 컨텍스트를 저장합니다. MongoDB 캡처 시간, 기기, 연산자, 저장 , 모델, 항목 수, 신뢰 값, 수명 주기 상태와 같은 메타데이터 저장합니다.
미디어 지속성을 활성화 하면 백엔드 원본 이미지를 Amazon S3호환 객체 저장 에 저장하고 자산 참조를 MongoDB 에 보관합니다. 이 설계는 관계를 유지하면서 대형 미디어 객체를 운영 인벤토리 레코드에서 분리합니다.
MongoDB 변경 스트림은 PowerSync가 선택한 인벤토리 필드를 클라이언트 사이드 SQLite 데이터베이스와 동기화하는 데 사용하는 이벤트를 게시합니다. PowerSync는 연결 중단 시 로컬 애플리케이션 액세스 및 동기화를 지원하는 동시에 MongoDB 진실 소스로 남아 있습니다.
이 아키텍처는 통합된 데이터 기반을 유지하면서 책임을 분리합니다.
MongoDB 운영 인벤토리 기록 관리합니다.
백엔드 는 쓰기 (write) 작업을 제어합니다.
VLM(비전 언어 모델)은 구조화된 데이터를 추출합니다.
객체 저장 원본 이미지를 유지합니다.
PowerSync는 MongoDB 지원 상태 클라이언트에 배포합니다.
그림 1. 쉘프 이미지에서 동기화된 인벤토리로: 백엔드 비전 언어 모델을 사용하여 MongoDB 인벤토리 문서 만듭니다. MongoDB 운영 기록 저장하고, 객체 저장 원시 이미지를 유지하며, 변경 스트림은 PowerSync를 클라이언트 사이드 SQLite에 동기화합니다.
데이터 모델 접근 방식
각 셸프 캡처를 inventory_captures 컬렉션 에 문서 로 저장합니다. 캡처 컨텍스트와 모델 생성 인벤토리 결과를 함께 유지하여 애플리케이션 이 각 캡처를 단일 단위로 처리하고 동기화할 수 있도록 합니다.
문서 다음을 포함한 메타데이터 기록합니다.
타임스탬프 및 위치 캡처
제출 장치 및 연산자
이미지 분석에 사용되는 모델
캡처의 수명 주기 상태
감지된 제품을 items 배열 에 포함합니다. 각 항목에는 제품 이름, 감지된 개수 및 모델 신뢰도가 포함됩니다.
{ "_id": "108d020b-9d3c-4b36-a651-0e1be2b1e899", "captured_at": "2026-07-02T17:45:08.661249+00:00", "device_id": "web-o0its21v", "operator_id": "demo-operator", "store_id": "store-unknown", "cv_model": "qwen2.5", "items": [ { "name": "Nissin Cup Noodles", "count": 5, "confidence": 0.9 }, { "name": "Popcorn Bag", "count": 1, "confidence": 0.9 }, { "name": "Lays Chips", "count": 3, "confidence": 0.9 } ], "status": "ACTIVE", "asset": null }
감지된 항목을 포함하면 모델 출력이 모델을 생성한 셸프 캡처에 가깝게 유지됩니다. MongoDB 의 유연한 문서 모델 사용하면 애플리케이션 모델이 발전함에 따라 추가 항목 속성을 보존할 수 있으므로 가능한 모든 제품에 대한 엄격한 스키마 필요하지 않습니다.
MongoDB 여전히 인벤토리 기록 의 정보 소스입니다. 미디어 지속성을 활성화 하면 PowerSync는 클라이언트 애플리케이션에 필요한 필드를 로컬 SQLite 데이터베이스에 프로젝션하는 반면, 원본 이미지는 Amazon S3호환 객체 저장 에 유지됩니다.
필드 설명
_id: 셸프 캡처의 고유 식별자입니다.captured_at: 백엔드 캡처를 수신할 때 생성된 UTC 타임스탬프입니다.device_id: 이미지를 제출한 클라이언트 기기의 식별자입니다.operator_id: 캡처를 제출한 연산자 의 식별자입니다.store_id: 캡처와 연결된 저장 의 식별자입니다.cv_model: 인벤토리 결과를 생성하는 데 사용되는 모델의 이름입니다.items: 감지된 제품, 개수 및 신뢰 값을 포함하는 임베디드 배열 입니다.status: 캡처의 수명 주기 상태 . 저장 활성화되면 흐름은PENDING_UPLOAD로 시작하여 원본 이미지 업로드 후ACTIVE로 변경됩니다.asset: 선택적 객체 스토리지 메타데이터 . 원시 이미지 저장 비활성화된 경우 이 필드null입니다.
솔루션 빌드
소매-주식-테이크 GitHub 리포지토리 사용하여 솔루션을 배포 하고 탐색합니다.
전제 조건
실행 리소스가 충분한 로컬 Kubernetes 환경을 준비합니다.
MongoDB Ops Manager 가 managed MongoDB 엔터프라이즈 Server
PowerSync
FastAPI 백엔드
Next.js 웹 애플리케이션
Amazon S3 호환 객체 저장
Ollama와 구성된 비전 언어 모델
지원되는 런타임 버전, 메모리 요구 사항, 모델 요구 사항 및 예상 설정 시간은 리포지토리 의 로컬 설정 가이드 검토합니다.
인벤토리 캡처 및 확인
웹 애플리케이션 열고 실행기 이미지를 제출 . 백엔드 이미지를 비전 언어 모델로 전송하고, 구조화된 응답의 유효성을 검사한 다음, 인벤토리 문서 MongoDB 에 씁니다.
미디어 지속성을 활성화 하면 백엔드 원본 이미지를 Amazon S3호환 객체 저장 에 저장하고 MongoDB 문서 상태를 업데이트합니다. MongoDB 변경 스트림은 클라이언트 애플리케이션 에 대한 PowerSync 동기화를 구동합니다.
확인 워크플로를 실행하여 전체 캡처, 저장 및 동기화 경로의 유효성을 검사합니다.
./scripts/verify.sh
MongoDB 워크플로 전반에서 중앙 데이터 계층 역할을 합니다. 리포지토리 문서:
배포 구성 요소 및 설정 스크립트
비전 언어 모델 처리
객체 저장 워크플로
동기화 경로
주요 학습 사항
이미지에서 셸프 인벤토리 캡처: 비전 언어 모델을 사용하여 셸프 사진을 MongoDB 저장하고 애플리케이션 처리하는 구조화된 JSON 으로 변환합니다.
인벤토리 데이터를 MongoDB 문서로 모델링: 캡처 메타데이터 와 감지된 항목을 함께 유지하여 각 문서 단일 서가 검사를 나타내도록 합니다.
클라이언트 기기 간 MongoDB 지원 상태 동기화: MongoDB 변경 스트림과 PowerSync를 사용하여 사용자 지정 폴링 로직을 구축하지 않고도 선택한 인벤토리 필드를 배포할 수 있습니다.
원시 미디어 에서 운영 데이터 분리 : 미디어 지속성을 활성화 하면 인벤토리 데이터와 이미지 참조를 MongoDB 에 저장하고, 원시 프레임을 Amazon S3호환 객체 저장 에 저장합니다.
연결이 끊긴 소매 워크플로 지원: 클라이언트 애플리케이션이 로컬로 동기화된 데이터를 사용하고 다시 연결 시 상태 조정할 수 있도록 합니다.
작성자
티모시 말런드, MongoDB
Alberto Camarena Rodriguez, MongoDB
다니엘 자미르, MongoDB