오더박스 로고 오더박스(orderBox) 시스템 개발 확인용

테스트할 화면을 선택해주세요

테스트 URL

고객 주문

테이블에서 직접 메뉴 주문

주방

주문 확인 및 조리

카운터

결제 처리

관리자 시스템

사용자 매뉴얼

시스템 사용 방법 및 기능 안내

개인정보처리방침

개인정보 보호 및 처리 안내

API 상태 확인

개발노트

기술 스택
|
React 18 Express.js PostgreSQL Drizzle ORM TanStack Query shadcn/ui Kotlin (Android)
2026-01-16 🖨️ PRINTER Counter POS + Server

Counter POS 영수증 프린터 연동

NICE VAN 프린터 연동
  • registerPrinter(port, baudRate) JS Interface 추가
  • SZ102(포트) + SZ103(통신속도) 파라미터
  • 영수증 출력 시 프린터 설정 자동 전송
  • ANDNVCAT 시스템 연동 성공
서버 안정성 강화
  • Neon DB 연결 끊김 에러 핸들링
  • Pool on('error') 이벤트로 자동 재연결
  • 유휴 연결 종료 시 크래시 방지
Counter POS 버전
  • v2.0.9: 프린터 연동 + URL 수정
  • 시작 URL: /pos/setup/pos 복원
  • APK 서명: Generate Signed APK 필수
2026-01-16 🔒 SECURITY Server + Auth

HQ Admin 보안 강화

Cross-Tenant 보안
  • assertSameHq() 헬퍼 함수 도입
  • 타 본사 리소스 접근 시 403 Forbidden
  • validateStoreAccess 미들웨어 적용
  • 사용자 관리 라우트에 HQ 검증 추가
마스터 비밀번호 관리
  • Customer Table: 오프라인 키오스크 해제용 유지
  • 하드코딩 비밀번호 제거
  • 매장별 DB 저장 방식으로 전환
디바이스 계정 보안
  • 계정 생성 시 매장 소속 검증
  • HQ Admin 비밀번호 자동 리셋 방지
2026-01-15~16 🏢 STRUCTURE Super + HQ + Store Admin

본사-매장 계층 구조 완성

매장 코드 시스템
  • 신규 매장 생성 시 6자리 코드 자동 생성
  • 형식: 영문3자리 + 숫자3자리 (예: PDG718)
  • HQ/매장 관리 화면에 코드 표시
  • 코드 클릭 시 클립보드 복사
대표자명 필드 추가
  • owner_name 컬럼 추가
  • 매장설정에서 대표자명 입력 가능
  • HQ Admin 매장 목록에 표시
본사 할당 시스템
  • 슈퍼관리자가 매장을 본사에 할당
  • hq_id 외래키로 연결
  • 본사관리자는 소속 매장만 조회
본사명 표시
  • HQ Admin 페이지 헤더에 본사명 표시
  • 브라우저 타이틀에 본사명 포함
  • 매장관리자 헤더에 매장코드 표시
2026-01-15 ⭐ SUPER ADMIN Dashboard

슈퍼관리자 대시보드 개선

통합 현황판
  • 본사 수 / 매장 수 통계
  • 사용자 계정 역할별 분류
  • 등록된 태블릿 현황
관리 기능
  • 신규 본사 생성
  • 본사관리자 계정 생성
  • 매장-본사 할당 변경
  • 모든 본사/매장 조회
향후 계획 섹션
  • 개발 예정 기능 로드맵 표시
  • 완료/진행중/예정 상태 구분
2026-01-15 📚 DOCS DevOps

데이터베이스 마이그레이션 가이드

Replit 자동 동기화
  • 스키마 변경(CREATE TABLE): Publish 시 자동 적용
  • 데이터 변경(INSERT/UPDATE): 수동 SQL 필요
마이그레이션 템플릿
  • 위치: /scripts/migrations/
  • 형식: YYYYMMDD_description.sql
  • 섹션: PRE-CHECK → MAIN → VERIFICATION → ROLLBACK
주의사항
  • Replit 콘솔: 여러 SQL문 동시 실행 불가
  • 한 문장씩 개별 실행 필수
2026-01-15 🖼️ IMAGE Store Admin + Customer

메뉴 이미지 썸네일 최적화 시스템

자동 썸네일 생성
  • 200x200px 정사각형 썸네일 자동 생성
  • 메뉴 이미지 업로드 시 즉시 생성
  • 로컬 서버 저장 + Object Storage 동시 저장
  • 고객 테이블 로딩 속도 대폭 개선
일괄 썸네일 생성 기능
  • 매장관리자 → 메뉴관리 → "🖼️ 전체 썸네일 생성"
  • 실시간 진행률 표시 (n/total)
  • 취소 버튼으로 중단 가능
  • 기존 썸네일 있으면 자동 스킵
고객 테이블 최적화
  • 썸네일 우선 → 원본 폴백 로딩
  • 네트워크 트래픽 90% 감소
  • 저사양 태블릿 메모리 절약
2026-01-15 ✨ UI/UX POS + Customer + Kitchen

터치 인터페이스 최적화 및 UI 개선

hover 효과 제거
  • 카운터 POS: 테이블 카드 hover 효과 제거
  • 터치 기반 인터페이스에 불필요한 hover 제거
  • 터치 시 깜빡임 현상 해결
주방 모니터 색상 개선
  • 직원호출 알림카드: 녹색파란색
  • 조리완료 카드와 명확히 구분
  • 시인성 대폭 개선
고객 테이블 UI 개선
  • 긴 메뉴명 2줄 표시 (줄바꿈)
  • 메뉴설명 ↔ 가격 여백 축소
  • 카테고리명 자동 텍스트 크기 조절
  • 주문내역에서 주문상태 표시 제거
2026-01-15 🐛 BUG FIX Store Admin + Customer

인기/추천 메뉴 드래그 순서 버그 수정

문제 현상
  • 드래그로 순서 변경 후 즉시 원래대로 복원
  • 서버에는 저장되지만 UI에 반영 안됨
원인 분석
  • featured_order로 정렬 후 display_order로 재정렬
  • renderMenuList()가 정렬 덮어쓰기
수정 내용
  • 매장관리자: 인기/추천 → display_order 재정렬 스킵
  • 고객테이블: featured_order로 정렬 추가
  • 드래그 즉시 반영 + 새로고침 후에도 순서 유지
2026-01-15 🌍 i18n Customer Table

고객 테이블 다국어 지원 대폭 개선

언어 전환 UX
  • 언어 변경 시 로딩 인디케이터 표시
  • 🇰🇷🇺🇸🇨🇳🇯🇵 국기 + 약어 표시
  • 선택 언어 localStorage 저장 (세션 유지)
번역 적용 범위
  • 메뉴명/설명 DB 번역 테이블 조회
  • 카테고리명 다국어 지원
  • 빠른 문구 (직원호출 등) 번역
  • 장바구니/결제/주문내역 UI 텍스트
  • 메뉴 로드 후 번역 재적용
캐시 관리
  • 번역 파일 캐시 버스팅 (?v= 파라미터)
  • /api/menu/localized?locale=en API
2026-01-14 🌐 TRANSLATION Store Admin

다국어 번역 관리 시스템

카테고리 번역
  • 카테고리 수정 시 "다국어 번역" 버튼
  • 한국어/영어/중국어/일본어 개별 입력
  • category_translations 테이블 저장
빠른 문구 번역
  • 직원호출 문구 다국어 지원
  • 버튼 라벨 + 문구 내용 분리 번역
  • 매장설정 → 고객용 문구 관리
매장 설정 개선
  • 다국어 지원 ON/OFF 토글
  • 사용할 언어 체크박스 선택
  • 설정 페이지 레이아웃 재구성
2026-01-14 🧾 RECEIPT Kitchen + Server

신규/추가 주문 구분 및 영수증 개선

신규/추가 주문 자동 구분
  • [신규]: 손님이 테이블에 앉아 처음 주문 → 물, 물티슈, 수저 서빙 필요
  • [추가]: 이미 주문한 적 있는 테이블 → 조리 메뉴만 서빙
  • 세션 기반 판단: 해당 세션의 첫 주문 ID와 비교
  • 다른 알림포인트로 간 주문도 고려 (대행 출력 시나리오 대응)
영수증 형식 개선
  • 테이블번호 40px로 확대, 위아래 공백 축소
  • 주문시간 맨 아래로 이동
  • 알림포인트명 표시: [신규 - 주방 주문서]
영수증 미리보기 디버그 모달
  • PRINTER_DEBUG_MODE = true 시 출력 전 미리보기
  • 실제 프린터 연동 전 레이아웃 확인 가능
  • 확인 버튼 클릭 후 실제 출력 진행
2026-01-14 UX FIX Store Admin

메뉴 관리 스크롤 위치 유지

문제 해결
  • 기존: 메뉴 수정 후 리스트가 맨 위로 스크롤 초기화
  • 수정: 저장 후 스크롤 위치 유지
  • scrollTop 저장 → loadMenu() → 복원
2026-01-13 🖨️ PRINTER Kitchen Monitor

네트워크 영수증 프린터 연동

알림포인트 타입 분리
  • monitor_printer: 화면 표시 + 프린터 출력
  • printer_only: 프린터 출력만 (화면 없음)
  • 대행 출력: monitor_printer가 printer_only 대신 출력
메뉴 필터링 시스템
  • 각 알림포인트별 연결된 메뉴만 영수증에 출력
  • /api/notification-points/:id/menus API
  • 대행 출력 시 해당 프린터에 연결된 메뉴만 필터링
Kitchen Monitor 앱 기능
  • 네트워크 프린터 IP/Port 설정
  • TCP 소켓 연결 테스트
  • window.Android.printOrderReceipt() JS Interface
2026-01-13 🔓 MAINTENANCE All Android Apps

Device Owner 해제 기능

유지보수용 해제 명령
  • ADB 명령어 한 줄로 Device Owner 해제:
  • adb shell am start -n com.orderbox.<app>/.MainActivity --ez clear_device_owner true
  • 적용 앱: customer-table, counter-pos, kitchen-monitor
키오스크 모드 유연성
  • 운영 시: Device Owner로 키오스크 잠금
  • 유지보수 시: 명령어로 해제 후 설정 변경
  • 해제 후 재설정: dpm set-device-owner
2026-01-12 ⭐ ARCHITECTURE Server + Auth

3단계 관리자 계층 구조 완성

관리자 계층 구조
  • 슈퍼관리자 (superadmin): 플랫폼 전체 관리, 여러 본사 통합 관리
  • 본사관리자 (hqadmin): 본사 단위 매장/직원/APK/미디어 관리
  • 매장관리자 (store_admin): 개별 매장 메뉴/테이블/알림 관리
역할별 URL 및 테마
  • /login/super-admin/super-admin (Dark Indigo 테마, ⭐ 아이콘)
  • /login/hq-admin/hq-admin (Purple 테마, 👑 아이콘)
  • /login/admin/admin (Blue-Cyan 테마)
권한 체계
  • 슈퍼관리자: 모든 페이지 접근 가능 (본사/매장/기기 페이지 포함)
  • 본사관리자: 매장관리자 이하 접근 가능
  • 계정 필터링: 하위 관리자에게 상위 계정 숨김 (보안)
계정 ID 규칙 개선
  • 언더바(_) 허용: 매장별 구분 가능 pcg_gangnam, bonga_jeju
  • 허용 문자: 소문자 + 숫자 + 언더바 (정규식: ^[a-z0-9_]+$)
  • 테스트 계정: orderboxadmin(슈퍼), testhqadmin(본사), pcgis(매장)
구현 파일
  • server/pages/super-admin.ts - 슈퍼관리자 페이지
  • server/pages/hq-admin.ts - 본사관리자 페이지
  • server/auth.ts - getRoleHierarchy(), requirePageAuth()
2026-01-12 🚀 MAJOR Server + Android

자체 OTA 자동 업데이트 시스템

본사관리자 APK 관리
  • APK 업로드: 버전명, 버전코드, 릴리즈노트 입력
  • 버전 이력: 활성화/다운로드/삭제 + 릴리즈노트 표시
  • 롤백: 이전 버전 즉시 활성화 가능
  • 경로 보기: 짧은 URL, 최신 버전 URL, 전체 URL 복사
서버 API
  • android_app_versions 테이블: 앱별 버전 관리
  • Object Storage 저장: .private/android-apks/
  • SHA-256 체크섬 자동 계산 및 저장
  • 서버 프록시 다운로드: Object Storage 서명 URL 제약 해결
짧은 URL 서비스
  • /apk/ct/2.6.6 → customer-table v2.6.6
  • /apk/cp/latest → counter-pos 최신
  • /apk/km/latest → kitchen-monitor 최신
  • ADB 설치: curl -L -o app.apk .../apk/ct/latest && adb install -r app.apk
Android UpdateManager
  • 30분 주기 자동 업데이트 체크 (최초 실행 시 즉시)
  • 백그라운드 코루틴으로 다운로드
  • SHA-256 검증: 파일 무결성 확인
  • Device Owner 모드: 사용자 확인 없이 자동 설치
  • InstallReceiver: 설치 완료 후 앱 자동 재실행
운영 편의성
  • 본사관리자에서 APK 업로드 → 1-2초 내 전체 태블릿 자동 업데이트
  • Play Store/구글 계정 불필요 (Device Owner 모드)
  • 버전 규칙: 2.6.6 → 266 (각 자리 0~9)
2026-01-11 🔥 HOT FIX Counter POS

영수증 시스템 완성 및 버그 수정

영수증 재출력 기능
  • 전체 재출력: 주문내역 + "(재출력)" 라벨 표시
  • 결제정보만 출력: 좌석/메뉴 제외, 결제 정보만
  • showReceiptReprintOptions() 모달 추가
재출력 결제방법 버그 수정
  • 기존: 카드 결제도 "현금"으로 표시
  • 수정: /api/payments/session/:id API로 결제정보 별도 조회
  • camelCase/snake_case 필드명 둘 다 지원
한자→한글 자동 변환
  • 문제: 감열 프린터 한자 출력 불가
  • 해결: hanjaToHangul() 함수 구현
  • 中→중, 大→대, 小→소, 上→상, 下→하, 特→특 등 40여개 변환
영수증 컬럼 정렬 개선
  • 헤더: 상품명(25) + 단가(7) + 수량(2) + 금액(7)
  • "금액" 컬럼 10→7칸 축소 (간격 3칸 감소)
  • 47자 고정폭 레이아웃 유지
2026-01-10~11 🖨️ PRINT Counter POS + VAN

PLUS-VCAT 영수증 출력 시스템

ESC/POS 명령어 구현
  • \x1D\x21\x11 2배 확대, \x1D\x21\x01 2배 높이
  • \x1B\x45\x01/00 굵게 ON/OFF
  • \x1B\x61\x01/00 중앙/좌측 정렬
  • \x1D\x56\x00 자동 절단
영수증 구성
  • 매장 정보: 상호명(2배), 사업자번호, 대표자, 주소, 전화
  • 주문 내역: 상품명, 단가, 수량, 금액 (컬럼 정렬)
  • 합계: 공급가액, 부가세, 총액 (한국 세법 준수)
  • 결제 정보: 카드사, 카드번호(마스킹), 승인번호, 가맹점번호
한글 폭 계산 시스템
  • getDisplayWidth(): 한글/한자/전각=2칸, 영문/숫자=1칸
  • padRight() / padLeft(): 고정폭 정렬
  • 47자 고정폭 레이아웃
VAN 연동
  • PLUS-VCAT SZ100 필드에 ESC/POS 전송
  • VAN 단말기가 그대로 프린터 출력
  • 디버그 팝업/로그 제거로 운영 환경 최적화
2026-01-10 v2.4.0 NEW Customer Table

Google Play 인앱 업데이트 (OTA)

Play Core 라이브러리
  • AppUpdateManager로 자동 업데이트 감지
  • IMMEDIATE 업데이트 - 키오스크 모드 자동 설치
  • 다운로드 후 5초 뒤 자동 설치
  • 실패 시 30초 후 재시도
자동화 기능
  • onCreate() 앱 시작 시 업데이트 확인
  • onResume() 중단된 업데이트 자동 재개
  • InstallStateUpdatedListener 상태 모니터링
배포 방법
  • Google Play Console 비공개 테스트 트랙에 AAB 업로드
  • 테스터 이메일 등록 후 Play Store에서 설치
  • 이후 업데이트는 자동 감지 및 설치
2026-01-10 SECURITY Server

API 보안 및 인증 강화

인증 미들웨어 개선
  • 공개 엔드포인트 허용 목록 관리
  • /tablets/heartbeat 세션 없이 허용
  • device_id 기반 인증으로 모니터링 유지
XSS 방지
  • 모든 서버 렌더링 페이지에 입력값 이스케이프 적용
  • customer-login, pos, kitchen 등 전체 적용
태블릿 모니터링 안정화
  • 세션 만료 후에도 태블릿 상태 모니터링 유지
  • 오프라인 표시 오류 방지
2026-01-09 NEW Admin / Kitchen

주방 모니터 관리 시스템

태블릿 설정 페이지
  • 주방 모니터 섹션 추가 (고객 테이블과 분리)
  • 알림 포인트 선택 및 디바이스 할당
  • 디바이스별 상태 모니터링 표시
원격 제어 모달
  • 새로고침, 화면 ON/OFF, 앱 재시작
  • 종료, 재부팅 명령
  • 잠금 화면에서도 앱 표시
자동 등록
  • 주방 모니터 앱 실행 시 자동 디바이스 등록
  • 플랫폼 정보 파싱 및 표시
2026-01-09 v1.5.0 Kitchen Monitor

주방 모니터 영업시간 자동 화면 제어

하트비트 기반 자동 제어
  • 30초 간격 영업시간 체크
  • 영업시간 중: 화면 자동 ON
  • 영업시간 외: 화면 자동 OFF
  • 서버 business_hours JSON 파싱
HeartbeatService 개선
  • checkBusinessHoursAndControlScreen()
  • 백그라운드 서비스에서 독립 실행
  • 화면 상태 중복 변경 방지
2026-01-09 FIX Counter POS

테이블 상태 즉시 반영

문제 해결
  • 기존: 이용시작/이용종료/계산완료 후 10~20초 후 반영
  • 수정: 즉시 테이블 목록에 반영
기술적 개선
  • updateSingleTable() 함수 개선
  • 개별 테이블 + 세션 정보 병렬 조회
  • 로컬 캐시 업데이트 후 데이터 재조회 없이 렌더링
  • renderTables(false, skipDataFetch=true) 옵션 추가
2026-01-09 NEW Counter POS

테이블 이용종료 기능

주문 없는 테이블 처리
  • 테이블 상세에 "이용종료" 버튼 추가
  • 주문이 있는 테이블에서는 숨김
  • 결제 완료와 동일한 처리 로직 적용
병렬 처리
  • 세션 완료 /api/sessions/:id/complete
  • 테이블 상태 → available
  • 일행 해제 (있을 경우)
2026-01-09 UI/UX Counter POS

결제 확인 모달 디자인 개선

결제 내역 섹션 (하늘색)
  • 상품 금액 - 장바구니 아이콘
  • 메뉴/추가 할인 - 주황색 강조
  • 최종 금액 - 파란 그라데이션 + 노란 금액
결제 수단 섹션 (연녹색)
  • 현금 - 초록색 강조
  • 카드 - 파란색 강조
레이아웃 최적화
  • ? 아이콘 → 제목 옆으로 이동 (세로 공간 절약)
  • 패딩 축소: p-8 → p-6
  • 중복 질문 문구 제거
2026-01-09 UI Admin

UI 스케일 슬라이더 스타일

커스텀 CSS 적용
  • 글로벌 스케일: 녹색 테마 정사각 핸들
  • 개별 디바이스: 기존 스타일 유지
  • 투명 배경 + 8px 트랙 높이
  • 28px 핸들 + 흰색 테두리
2026-01-07 v1.9.6 NEW Counter POS

고객용 보조 디스플레이 (듀얼 스크린)

Android Presentation API
  • 화면 복제 상태에서도 별도 화면 표시 가능
  • 1024x600 저사양 디스플레이 지원
  • 앱 시작 시 자동 감지 및 연결
대기화면
  • "{매장명}을 방문해주셔서 감사합니다"
  • 매장명 노란색, 나머지 흰색 스타일링
  • 실시간 시계 + 날짜 표시 (분 단위 갱신)
  • 저사양 기기 최적화: 60초 간격 업데이트
결제 진행 화면
  • 주문 내역: 메뉴명, 수량, 금액 표시
  • 할인 금액 빨간색 강조 (있을 때만)
  • 결제 대기 → 진행 중 → 완료/실패 상태 표시
  • 결제 모달 닫으면 자동 대기화면 복귀
JavaScript Interface
  • isCustomerDisplayAvailable() - 사용 가능 여부
  • showCustomerWelcomeWithStoreName()
  • showCustomerOrderItems(JSON) - 주문 내역
  • showCustomerPayment...() - Ready/Processing/Complete/Failed
2026-01-07 v2.5.0 UI/UX

POS 및 고객화면 UI 개선

고객 테이블 화면
  • 다양한 화면 크기 대응 (카트 표시 문제 해결)
  • 레이아웃 반응형 개선
POS 화면
  • 테이블 표시 세션/일행 동기화 개선
  • 결제 아이템 열 정렬 수정
  • 헤더/스크롤바 패딩 조정
2026-01-07 Cleanup

코드 정리 및 문서화

불필요 코드 삭제
  • 중복 함수 loadStoreSettings() 제거
  • 디버그 오버레이 debugInfo TextView 제거
  • initPosParallel()에서 통합 처리
replit.md 문서화
  • Android zip 패키징 주의사항 추가
  • 필수 파일 목록: build.gradle, settings.gradle
  • 제외 패턴 실수 방지: -x "*.gradle*"-x "*/.gradle/*"
  • 버전 표시 구현법: packageManager.getPackageInfo()
2026-01-05 v2.4.0 Android OTA

태블릿 자동화면제어 및 OTA 업데이트 준비

영업시간 기반 자동화
  • 영업시작 시간에 화면 자동 ON
  • 영업종료 시간에 화면 자동 OFF
  • 영업시작 5분 내 앱 자동 재시작 (하루 1회)
  • SharedPreferences로 재시작 상태 영구 저장
OTA 업데이트 전략
  • Google Play 비공개 트랙 권장 ($25 일회성)
  • 영업시작 앱 재시작 → OTA 업데이트 자동 적용
  • 대규모 운영: TeamViewer OEM/MDM 고려
영업시간 저장 오류 수정
  • API snake_case → camelCase 변환 추가
  • business_open_timebusinessOpenTime
2026-01-05 v2.3.2 POS 개선

결제 취소 및 UI 개선

VAN 카드 취소 버그 수정
  • 테스트 모드 취소 시 VAN_TEST_CARD_AMOUNT(1004원) 사용
  • 기존: 원래 금액으로 취소 요청 → "취소불가 승인내역확인요" 오류
  • 수정: 승인 금액과 동일한 테스트 금액으로 취소 요청
결제 상세 표시 개선
  • 취소된 결제 한 줄 통합: 결제시간 + 취소시간
  • 음수 금액 레코드 숨김: 중복 표시 제거
  • 표시 형식: 결제: 01.04 오후 07:49 취소: 01.05 오전 01:53
결제내역 초기 로딩 개선
  • 기존: "날짜를 선택하고 조회를 클릭하세요"
  • 수정: 스피너 + "결제 내역을 조회하고 있습니다..."
  • 자동 오늘 날짜 조회 시 로딩 상태 명확히 표시
2026-01-04 v2.3.4 Android

고객 테이블 앱 리다이렉트 개선

화면보호기 종료 후 리다이렉트
  • 빈자리/착석 모두 /customer 페이지로 리다이렉트
  • 웹 페이지에서 세션 상태 기반 UI 전환 처리
  • 무한 리다이렉트 루프 문제 해결
API 필드명 정규화
  • snake_case 통일: table_number
  • camelCase 제거: tableNumber
  • 테이블 표시 정상화 (예: "VIP룸")
2026-01-04 v1.8.0 Screensaver v2

화면보호기 완전 개선

ExoPlayer 전환
  • VideoView → ExoPlayer: 10초 끊김 문제 해결
  • 재생 버튼 깜박임 제거: useController = false
  • 비디오 음소거: volume = 0f
  • CENTER_CROP 스케일링 (화면 가득 채우기)
이미지 최적화
  • 가로 맞춤 스케일링: FIT_CENTER
  • 이미지 프리로딩: 다음 이미지 미리 로드
  • 메모리 관리: inSampleSize 최적화
버그 수정
  • 비디오 블랙스크린 해결: fadeOut 후 alpha 복원
  • 테이블 상태 동기화: 이용중→빈자리 전환 시 화면보호기 갱신
  • 빈테이블 타임아웃 수정: screensaverSettings 로드 추가
  • 백그라운드 실행 방지: 앱 실행 중에만 동작
디스플레이 설정
  • 화면 밝기 85% 고정
  • 버전 오버레이 개선: 반투명 배경
2026-01-04 v1.8.1 Global Settings

화면보호기 타임아웃 중앙 관리

본사관리자 전역 설정
  • 화면보호기 비활성 타임아웃 전역 설정
  • 옵션: 10초 ~ 5분 (10초/30초/1분/2분/3분/5분)
  • tablet_media_global_settings 테이블에 저장
매장별 설정 제거
  • 매장 관리자 페이지에서 타임아웃 설정 UI 제거
  • 우선순위: 전역설정 > 매장설정 > 기본값(60초)
  • 앱 수정 불필요: 서버 반환값 자동 적용
2026-01-04 v1.8.2 App Icons

앱 아이콘 업데이트

오더박스 공식 아이콘 적용
  • 고객 테이블 앱: 새 아이콘 적용
  • 카운터 POS 앱: 새 아이콘 적용
  • 주방 모니터 앱: 새 아이콘 적용
  • 모든 해상도(hdpi~xxxhdpi) 지원
2026-01-03 v1.7.0 Chunked Upload

청크 업로드 시스템

대용량 파일 분할 업로드
  • 파일을 5MB 청크로 분할하여 순차 업로드
  • Replit 프로덕션 프록시 제한 우회
  • 업로드 완료 후 서버에서 GCS로 전송
API 엔드포인트
  • POST /api/chunked-upload/init - 세션 시작
  • POST /api/chunked-upload/chunk - 청크 전송
  • POST /api/chunked-upload/complete - 완료 및 GCS 전송
  • DELETE /api/chunked-upload/:sessionId - 취소
세션 관리
  • 세션 만료: 1시간 후 자동 정리
  • 임시 저장: /tmp/uploads 폴더
2026-01-01 v2.1.0 Sales Analytics

매출 분석 시스템

일별 매출 통계
  • 일별 매출 차트 시각화
  • 카드/현금 결제 금액 구분
  • 할인 금액 추적: 메뉴별 할인 내역
월별 매출 통계
  • 최근 12개월 트렌드 차트
  • 월 선택 필터 기능
  • 월 평균 매출 비교
메뉴별 매출 분석
  • 전체 메뉴 목록 매출 순위
  • 메뉴별 매출액, 판매수량 표시
  • 할인 비례 배분: 공유 메뉴 할인액 정확 분배
2026-01-02 v2.0.0 CSS Optimization

Admin 페이지 CSS 최적화

로딩 속도 대폭 개선
  • 기존: Tailwind CSS CDN (3MB+ 다운로드)
  • 수정: 로컬 빌드 CSS (54KB)
  • 용량 약 50배 감소
2025-12-30 v1.9.1 Menu Options

메뉴 옵션 시스템

옵션 그룹 관리
  • 메뉴별 옵션 그룹 추가 (예: 맵기 선택, 토핑)
  • 그룹당 옵션 항목 관리 (예: 순한맛, 매운맛)
  • 추가 금액 설정 가능 (price_delta)
고객 주문 화면
  • 옵션 메뉴 클릭 시 전체화면 모달
  • 그룹당 1개 필수 선택
  • 터치 친화적 UI (min-height 52px)
장바구니 및 주문 표시
  • 장바구니에 선택 옵션 표시
  • POS/주방: 보라색 텍스트로 옵션 표시
  • 주문 시 옵션 스냅샷 저장
2026-01-03 v1.6.0 Media Cache

태블릿 미디어 캐싱 시스템

로컬 미디어 캐싱
  • 화면보호기 미디어를 로컬에 저장
  • 버전 기반 동기화: 변경된 파일만 재다운로드
  • 네트워크 트래픽 최소화
  • 서버 버전 체크 → 매니페스트 비교 → 증분 다운로드
네이티브 화면보호기
  • 착석 테이블: 이미지 10초, 동영상 끝까지 (최대 5개 로테이션)
  • 빈 테이블: 고정 이미지 1개 (배터리 절약)
  • 터치 시 즉시 종료
파일 크기 제한
  • 이미지: 최대 10MB
  • 동영상: 최대 100MB
  • 권장 해상도: 3200x2000px (16:10)
JavaScript Interface
  • startScreensaver(tableStatus) - 화면보호기 시작
  • syncMedia(storeId) - 미디어 동기화
  • getCachedMediaVersion() - 캐시 버전 조회
  • clearMediaCache() - 캐시 삭제
2026-01-03 v1.5.5 HQ Media

본사 미디어 관리 시스템

본사(HQ) 미디어 업로드
  • 화면보호기 미디어 최대 5개
  • 빈테이블 이미지 최대 1개
  • 대상 매장 선택: 전체 또는 특정 매장
전역 강제 적용
  • 전체 매장 강제 적용 토글
  • 활성화 시 매장 자체 미디어 무시
  • 우선순위: 본사 강제 > 매장별 강제 > 병합
매장별 미디어 모니터링
  • 전체 매장 미디어 현황 조회
  • 매장 미디어 원격 삭제
  • 착석/빈테이블 미디어 구분 표시
2026-01-03 v1.5.0 Payment VAN

NICE VAN 카드결제 연동

ANDNVCAT 단말기 연동
  • 카드 승인 (transactionType: 0200)
  • 카드 취소 (transactionType: 0420)
  • 승인번호, 카드정보, 발급사/매입사 저장
  • JavaScript Interface 통신
현금영수증
  • 현금결제 시 소득공제/지출증빙 선택
  • 휴대폰 번호 / 사업자번호 입력
  • VAN 승인 후 영수증번호 저장
2026-01-03 v1.4.5 Party Payment

일행/분할/합산 결제 시스템

일행 결제 (Party Payment)
  • 여러 테이블 하나의 결제로 처리
  • 테이블 추가/제거로 일행 구성
  • 합산 / 개별 승인 모드 선택
분할 결제 (Split Payment)
  • 현금 + 카드 혼합 결제
  • 금액 직접 입력 또는 잔액 자동 계산
  • 결제 취소 시 부분/전체 취소
합산 결제 재시도
  • 합산 결제 실패 시 자동 재시도 지원
  • 동일 금액으로 새 결제 그룹 생성
  • 취소된 그룹 추적 및 복구
2026-01-03 v1.4.0 Staff Call

스탭호출 시스템

고객 호출 기능
  • 고객 태블릿에서 직원 호출 버튼
  • 호출 사유 선택 (주문, 리필, 계산 등)
  • 호출 이력 저장 및 조회
POS/주방 알림
  • 실시간 알림 (WebSocket)
  • 사운드 알림
  • 호출 확인 처리
  • 주방 모니터 가로 스크롤 지원
스팸 방지
  • pending 상태 호출 있으면 추가 호출 차단
  • 테이블별 중복 호출 방지
  • 캐시 버스팅으로 최신 데이터 보장
2026-01-03 v1.3.5 Kitchen Monitor

주방모니터 개선

알림포인트 변경
  • 주방모니터에서 알림포인트 변경 버튼
  • 주방/숯방 등 포인트 전환
시간 표시 개선
  • 초 단위 시간 표시 추가
  • 가독성 향상 (폰트 크기 조정)
2026-01-03 v1.3.0 Tablet Auto

태블릿 자동 설정

밝기/볼륨 자동 조절
  • 앱 실행 시 화면 밝기 85% 자동 설정
  • 미디어 볼륨 50% 자동 설정
  • Android 시스템 설정 권한 활용
복수 태블릿 관리
  • 하나의 테이블에 여러 태블릿 지원
  • 태블릿별 개별 명령 전송
  • 그리드 형태로 태블릿 표시
2026-01-03 v1.2.5 Customer UI

고객 화면 개선

웰컴 화면
  • 테이블 번호 크게 표시
  • 직원 호출 버튼 추가
  • 터치 영역 확대
  • 프리미엄 디자인 적용
빈테이블 화면
  • 비밀 메뉴 접근 (로고 5회 탭)
  • 빈테이블에서도 직원 호출 가능
  • 화면 레이아웃 최적화
2026-01-02 v2.3.1 Kitchen & Kiosk

주방모니터 관리 및 비밀 메뉴 시스템

주방모니터 관리 UI
  • 수정: updateTabletCounts() null 오류로 섹션 미표시 문제
  • 레이아웃 변경: 세로 리스트 → 컴팩트 그리드
  • 알림포인트별 그룹핑: 주방, 숯방
  • 전체 새로고침 버튼: 주방모니터 일괄 명령
Android 앱 비밀 메뉴 (좌측 상단 5회 탭)
  • 진입: 화면 좌측 상단 10% 영역 5회 터치
  • 비밀번호 인증 후 메뉴 표시
  • 앱 목록: 키오스크 해제 후 홈화면
  • 키오스크 모드 종료
  • 설정 페이지로 이동
웹페이지 비밀 메뉴 (인원수 영역 5회 탭)
  • 진입: 인원수 표시 영역 5회 터치
  • 비밀번호 인증 모달 표시
  • 테이블 변경: mode=change로 자동 리다이렉트 방지
  • 로그아웃
테이블 자동 할당 시스템
  • device_id 기반 태블릿-테이블 자동 매칭
  • 앱 재시작 시 저장된 테이블로 자동 복귀
  • 수정: 테이블 변경 시 자동 리다이렉트 버그
  • URL 파라미터 mode=change 추가
2026-01-01 v2.3.0 Remote Monitoring

원격 태블릿 모니터링 및 제어 시스템

태블릿 원격 모니터링
  • 매장관리자 → 태블릿 관리 탭 추가
  • 하트비트 기반 온라인/오프라인 실시간 추적 (30초 주기)
  • 배터리 잔량 및 충전 상태 표시
  • 마지막 접속 시간 상대적 표시 (예: "2분 전")
  • 90초 타임아웃 기반 오프라인 판정
원격 명령 시스템
  • 새로고침, 앱재시작, 화면켜기/끄기 원격 제어
  • 명령 큐잉: queued → sent → acked
  • 전체 태블릿 일괄 명령 지원
화면 켜기/끄기 원격 제어
  • SCREEN_OFF: 화면만 끄기 (앱은 백그라운드 동작)
  • SCREEN_ON: WakeLock으로 화면 깨우기
  • Android Accessibility Service 활용
영업시간 기반 자동 스케줄링
  • 마감 시간 → 자동 화면 끄기
  • 시작 시간 → 자동 화면 켜기
  • 배터리 절약 야간 자동 관리
태블릿-테이블 연결 관리
  • 할당된 태블릿: 연결해제 버튼
  • 미할당 태블릿: 드롭다운 선택 후 연결
  • 중복 연결 방지 (이미 연결된 테이블 제외)
Database & API
  • tablet_devices: device_id, is_online, battery_pct
  • tablet_commands: command_type, status
  • HeartbeatService.kt, ScreenControlService.kt
2025-12-31 v2.2.2 UX & Performance

POS 시계/새로고침 버튼 및 저사양 Android 최적화

POS 헤더 실시간 시계
  • AM/PM 12시간 형식 (초 단위까지 표시)
  • 앱 먹통 감지용 - 시계 멈추면 문제 인지
  • AM/PM 흰색 / 시간 노란색
POS 새로고침 버튼
  • 앱 재시작 없이 데이터 새로고침
  • 회전 애니메이션으로 로딩 상태 표시
저사양 Android 기기 최적화
  • Tailwind CDN 3MB+로컬 89KB
  • 터치 피드백: 0.03s 즉각 반응
  • GPU 가속: will-change, backface-visibility
  • 대상: Cortex-A55 4코어, 2GB RAM
2025-12-30 v2.2.1 Bug Fix

메뉴 순서변경 버그 수정 및 레거시 정리

메뉴 순서변경 버그 수정
  • 문제: 드래그 순서변경 시 SQL 오류
  • 원인: Express 라우트 순서 문제
  • 해결: reorder 엔드포인트 우선순위 수정
레거시 기능 제거
  • POS 즐겨찾기 버튼설정 섹션 삭제
  • 관련 JavaScript 코드 정리
2025-12-30 v2.2.0 VAN Integration

VAN 연결 상태 표시 및 ANDNVCAT 연동

POS 헤더 VAN 연결 상태
  • 녹색: VAN 연결됨
  • 노란색: VCAT 미설치 (Mock)
  • 파란색: 브라우저 Mock 모드
ANDNVCAT 연동
  • 패키지명: kr.co.nicevan.androidnvcat
  • Android 11+ 패키지 가시성 설정
  • 180도 회전 지원 (sensorLandscape)
고객 테이블 키오스크 모드
  • Lock Task Mode: 홈/최근앱 버튼 비활성화
  • 관리자 탈출: 우측 상단 5회 탭
  • 기본 비밀번호: 1234
2025-12-13 v2.1.3 Android Apps

안드로이드 앱 프로젝트 3종

고객 테이블
com.orderbox.customertable
카운터 POS
com.orderbox.counterpos
주방 모니터
com.orderbox.kitchenmonitor
공통 기능
  • 전체 화면 모드 (상태바/네비바 숨김)
  • Doze 모드 대응 (자동 갱신)
  • Gradle 8.5, Kotlin 1.9.20, SDK 34
2025-12-13 v2.1.2 Bug Fix

합산 결제 재결제 버그 수정

  • 문제: 합산 결제 취소 후 개별 재결제 가능했음
  • 해결: 서브 세션 재결제 버튼 비활성화
  • 모달 z-index 충돌 수정 (z-[9999])
2025-12-10 v2.1.1 Split Payment

분할 결제 (나눠서 결제하기)

분할 결제 모달 UI
  • 총액 / 결제됨 / 남은금액 표시
  • 프리셋 버튼: 1/2 1/3 1/4 전액
  • 현금/카드 선택 + 현금영수증 옵션
2025-12-10 v2.1.0 Payment

합산 결제 취소 후 재결제

  • 합산 재승인: 전체 금액 1건 VAN 승인
  • 개별 재승인: 테이블별 개별 VAN 승인
  • 마스터 레코드 생성 실패 시 VAN 자동 취소
2025-12-09 v2.0.5 VAN Integration

NICE ANDNVCAT VAN 결제 시스템

일행 결제 카드 승인 모드
  • 1건으로 합산: 전체 카드금액 단일 승인
  • 테이블별 개별: 각 테이블 별도 승인
현금영수증 VAN 발급
  • 미발급
  • 소득공제 (휴대폰 번호)
  • 지출증빙 (사업자번호)
2025-12-08 v2.0.4 Android APK

ANDNVCAT VAN 연동 앱 패키징

  • APK: Signed_ANDNVCAT_Release.apk
  • WebView ↔ Native 브릿지
  • NICE 연동 문서 포함
2025-12-08 v2.0.3 Documentation

사용자 매뉴얼 페이지

  • /manual 별도 페이지 분리
  • 좌측 사이드바 네비게이션 (8개 섹션)
  • 다크 테마 적용 (#333 / #ffcc00)
2025-12-07 v2.0.2 Backend

전체 API 및 스토리지 레이어 완성

  • 스토리지 인터페이스 100% 구현
  • PostgreSQL/Drizzle ORM 연동
  • 주문 관리 API 완성
  • 결제 시스템 (현금/카드/모바일)
2025-12-06 v2.0.1 Frontend

역할별 화면 템플릿 마이그레이션

/customer
/kitchen
/pos
/admin
/hq-admin
2025-12-05 v2.0.0 Major Release

Cloudflare → Replit 완전 마이그레이션

이전
  • Cloudflare Workers
  • SQLite (D1)
  • Hono Framework
이후
  • Replit (PostgreSQL)
  • Express.js
  • Drizzle ORM
  • 34개 테이블 스키마 이전
  • 30+ API 엔드포인트 재구현
2025-12-03 v1.9.18~42 UI/UX

카운터POS UI/UX 완전 개편 & 일행 기능

POS 메뉴 그리드
  • 반응형 레이아웃 (백분율 기반)
  • 카테고리 탭 모던 디자인
  • 스크롤바 제거, 고정 높이
일행 기능 완성
  • 계산 완료/이용종료 시 자동 해제
  • 합산 금액 직접 계산
  • 모달 즉시 표시 (0.1초)
  • 중복 클릭 방지
2025-12-02 v1.9.13~17 Kitchen

주방 디스플레이 고도화

  • DB 스키마 정상화 (다대다 관계)
  • 알림포인트: 64메뉴 × 2 = 496 rows
  • 완료 주문 당일 자정까지 표시
2025-12-01 v1.9.6~10 Security

멀티테넌트 보안 강화

  • CRITICAL: store_id 보안 점검
  • 67개 axios 호출 점검 완료
  • 매장 간 데이터 격리 100%
  • 테이블 복사 기능 추가
2025-11-30 v1.9.1

즐겨찾기 메뉴 & 할인 시스템

  • 10개 즐겨찾기 버튼 UI
  • 메뉴별 개별 할인 (금액/%, 서비스)
  • 할인 중복 차감 버그 수정
2025-11-10 ~ 11-29 v1.0.0~1.9.0

초기 개발 히스토리

v1.8.x
POS 시스템 완성
v1.5~1.6
일행 관리 시스템
v1.0~1.4
초기 시스템 구축
D1
Cloudflare 기반

총 커밋: 200+개 | 마지막 업데이트: 2026-01-05 v2.4.0 (Android OTA & 매출분석)