주 콘텐츠로 건너뛰기
버전: 1.x

아키텍처

이 페이지는 개발자와 고급 사용자를 위한 WCPOS의 기술 아키텍처를 설명합니다.

두 부분 시스템

WCPOS는 두 부분 시스템으로 설계되었습니다:

  1. PHP 플러그인: 서버에 호스팅되는 이 비교적 작은 플러그인은 WooCommerce REST API를 확장합니다.

  2. JavaScript 클라이언트: 이 클라이언트는 로컬 브라우저나 데스크탑 앱에서 실행되며, 이후 iOS 및 Android 앱에서도 사용됩니다.

이를 두 개의 별도 세계로 생각할 수 있습니다:

  • _PHP 세계_는 WordPress와 WooCommerce를 사용하여 데이터 관리가 이루어지는 곳입니다.
  • _JavaScript 세계_는 WooCommerce 상점을 로컬에서 복제하며, 빠른 검색 및 오프라인 사용을 위해 최적화되어 있습니다.
SVG not found

데이터 동기화

데이터는 WooCommerce REST API를 사용하여 WooCommerce에서 가져옵니다. 이는 POS가 모든 제품, 변형, 제품 카테고리, 고객, 세금 비율 등을 다운로드하여 로컬에 저장해야 함을 의미합니다.

처음에는 시간이 걸릴 수 있지만, 다운로드가 완료되면 서버에서 계속해서 가져올 필요 없이 즉시 사용할 수 있습니다.

무엇이 동기화됩니까?

  • 제품 및 변형
  • 제품 카테고리 및 태그
  • 고객
  • 세금 비율 및 세금 클래스
  • 결제 게이트웨이 (체크아웃용)
  • 주문 (Pro에서의 주문 역사용)

동기화 전략

WCPOS는 증분 동기화 전략을 사용합니다:

  1. 초기 동기화: 첫 로드 시 모든 데이터를 다운로드합니다.
  2. 증분 업데이트: 마지막 동기화 이후 변경 사항만 가져옵니다.
  3. 백그라운드 동기화: 주기적으로 업데이트를 확인합니다.
  4. 수동 동기화: 사용자가 언제든지 동기화를 트리거할 수 있습니다.

아키텍처 장단점

장점 😊단점 😟
로컬 데이터 검색이 즉시 이루어짐데이터 동기화 유지가 어려움
오프라인에서 사용 가능한 캐시 데이터WooCommerce REST API의 제약을 받음
데스크탑, iOS 및 Android에 대한 더 나은 네이티브 앱 생성 가능WordPress 테마 및 훅이 POS 앱을 커스터마이즈할 수 없음

로컬 데이터베이스

JavaScript 클라이언트는 IndexedDB라는 브라우저 기반 데이터베이스에 데이터를 저장합니다. 이는 다음과 같은 이점을 제공합니다:

  • 지속성: 데이터가 브라우저 재시작 후에도 유지됨
  • 성능: 네트워크 지연 없이 빠른 쿼리
  • 오프라인 브라우징: 인터넷 없이도 캐시 데이터 접근 가능

체크아웃 아키텍처

체크아웃 프로세스는 WooCommerce 주문 결제 페이지를 로드하는 iframe/webview를 사용합니다. 이 접근 방식은:

  • 기존 결제 게이트웨이를 활용: 모든 WooCommerce 결제 게이트웨이가 POS에서 작동할 수 있음
  • 보안 유지: 결제 처리는 WooCommerce의 안전한 인프라를 통해 이루어짐
  • 복잡성 감소: 결제 게이트웨이 통합을 재구현할 필요 없음

API 확장

PHP 플러그인은 POS 전용 기능을 위한 추가 엔드포인트로 WooCommerce REST API를 확장합니다. 자세한 내용은 WooCommerce REST API를 참조하십시오.