문제
- 출근길과 점심시간에 성수동 개인 카페 줄이 길어 손님은 10~15분을 기다리며 시간을 버리고, 카페는 몰리는 시간에 주문을 다 처리하지 못해 대기 손님이 이탈한다.
- 개인 카페는 앱 개발 비용이나 플랫폼 수수료 부담 없이 쓸 수 있는 사전 주문 수단이 없다(사이렌 오더는 체인 전용, 배달앱은 수수료 부담).
- 카페 사장님 입장에서 가장 중요한 가치는 주문 처리 효율화와 대기 손님 이탈 방지다.
목표
- 손님이 앱 설치 없이 웹에서 미리 주문·결제하고 지정한 픽업 시간에 줄 없이 수령하게 한다.
- 카페가 관리자 페이지에서 주문을 효율적으로 접수·처리하게 한다.
- 검증 지표: 재주문율, 피크 타임 사전 주문 건수, 주문 접수부터 픽업 완료까지 처리 시간, 대기 손님 이탈 감소 여부(사장님 인터뷰·관찰). 목표 수치는 확정 필요.
출시 범위
- 포함: 메뉴 조회, 장바구니·주문, 결제, 픽업 시간 선택, 주문 상태 확인·알림, 카페 관리자 페이지(주문 관리, 메뉴 관리, 픽업 시간 슬롯 관리), 회원가입·로그인 및 회원 관리, 비회원 주문(가정, 전화번호 기반 조회).
- 포함: 카페 월 구독료 과금의 최소 운영 기반(구독 상태 표시, 구체 가격은 확정 필요, 초기 1곳 무료 파일럿 가정).
- 제외(범위 밖·다음 단계): 배달, 다중 카페 확장, 포인트·쿠폰, 리뷰·후기, 관리자 계정·권한 세분화, 앱.
역할과 권한
- 방문자(비회원): 메뉴 조회, 주문·결제, 주문번호·전화번호로 주문 상태 조회.
- 회원(출근직 직장인): 비회원 기능 + 주문 내역·재주문, 저장된 주문 정보.
- 카페 운영자(사장님): 관리자 페이지에서 주문 접수·상태 변경(접수→제조 중→픽업 완료), 메뉴·품절 관리, 픽업 시간 슬롯·영업시간 관리, 구독 상태 확인.
- 서비스 운영자(플랫폼 관리자): 카페 온보딩, 회원 관리, 구독 관리, 전체 주문 조회. 초기 1개 카페 운영이므로 최소 권한 구조(가정).
사용자 시나리오
- 김지원(출근직): 출근길 지하철에서 QR로 접속 → 메뉴 선택·결제 → 8시 30분 픽업 지정 → 도착 알림 확인 → 매장에서 줄 없이 수령.
- 박서연(점심시간): 회원 로그인 → 최근 주문 재주문 → 12시 40분 픽업 지정 → 상태 페이지에서 '제조 중' 확인 후 매장 이동.
- 이현우(사장님): 관리자 페이지에서 신규 주문 알림 확인 → 접수 → 제조 완료 시 '픽업 완료 대기'로 변경 → 손님 도착 시 완료 처리.
핵심 기능
- 메뉴 조회·주문: 카테고리별 메뉴 목록, 옵션(사이즈·샷 추가 등, 가정), 장바구니, 품절 메뉴 비노출.
- 결제: 웹에서 즉시 결제 완료(결제 대행 연동, PG 확정 필요), 결제 실패 시 재시도.
- 픽업 시간 선택: 영업시간 내 10분 단위 슬롯 선택(가정), 카페가 슬롯별 최대 주문 수 설정 가능.
- 주문 상태 확인·알림: 접수→제조 중→픽업 완료 대기→완료 상태를 웹 페이지에서 실시간 확인, 준비 완료 시 SMS 또는 카카오톡 알림(채널 확정 필요).
- 카페 관리자 페이지: 신규 주문 목록·상세·상태 변경, 메뉴·품절 관리, 픽업 슬롯 관리, 일별 주문 통계.
기술 스택과 아키텍처
- PHP 8(프레임워크 없이), MySQL/MariaDB(utf8mb4, mysqli·prepared statement), Apache.
- 카페24 VPS(또는 웹호스팅) 배포, HTTPS 필수.
- 구조: 사용자 웹(/), 카페 관리자(/admin/cafe), 플랫폼 운영자(/admin/platform) 3개 영역, 공통 DB 계층은 prepared statement로 통일.
- 알림은 외부 SMS/알림톡 API 호출(비동기 큐 테이블 방식, 가정).
전체 IA와 화면 흐름
- 사용자: 홈(카페 소개·메뉴 진입) → 메뉴 목록 → 메뉴 상세·옵션 → 장바구니 → 주문·결제(픽업 시간 선택 포함) → 주문 완료 → 주문 상태 페이지(새로고침·알림) → 마이페이지(주문 내역·재주문) / 회원가입·로그인.
- 카페 운영자 관리자 화면: 로그인 → 주문 목록(실시간, 상태별 필터) → 주문 상세·상태 변경 / 메뉴 관리(목록·등록·수정·품절) / 픽업 슬롯·영업시간 관리 / 통계(일별 주문·처리 시간) / 구독 상태.
- 플랫폼 운영자 관리자 화면: 카페 관리(등록·정보 수정) / 회원 관리(목록·상세) / 구독 관리(상태·이력) / 전체 주문 조회.
- 공지·FAQ·배너 등 운영자 콘텐츠는 이번 출시 범위에 없으므로 해당 관리 화면 없음.
데이터 모델
- users: 회원(이메일·비밀번호 해시·전화번호·마케팅 수신 동의).
- cafes: 카페 정보(이름·주소·영업시간·구독 상태).
- menus: 메뉴(카페 FK·이름·가격·카테고리·품절 여부·설명·이미지).
- menu_options: 옵션(메뉴 FK·이름·가격).
- pickup_slots: 픽업 슬롯(카페 FK·날짜·시각·최대 주문 수·현재 건수).
- orders: 주문(주문번호·회원 FK 또는 비회원 전화번호·카페 FK·총액·픽업 시각·상태·결제 상태·결제 키).
- order_items: 주문 항목(주문 FK·메뉴 FK·옵션 스냅샷·수량·단가).
- notifications: 알림 큐(주문 FK·채널·발송 상태).
- subscriptions: 구독(카페 FK·시작일·상태·월 요금).
API와 외부 연동
- 내부 API(POST 기반, 세션 인증): 메뉴 조회, 장바구니·주문 생성, 주문 상태 조회, 관리자 주문 상태 변경, 메뉴 CRUD, 슬롯 CRUD.
- 외부 연동: PG 결제 모듈(결제 승인·취소, 확정 필요), SMS/알림톡 발송 API(확정 필요).
- 연동 규격 관리·차단 정책 등은 범위 밖.
UI·UX 요구사항
- 모바일 웹 우선 설계, 앱 설치 유도 없이 QR·링크로 바로 주문 시작.
- 주문 완료까지 3단계 이내(메뉴→결제·픽업 시간→완료), 상태 페이지는 새로고침 없이 갱신(폴링, 가정).
- 관리자 주문 목록은 신규 주문 강조와 상태 변경 버튼을 한 화면에 배치해 원터치 처리.
- 픽업 시간 선택은 품절·마감 슬롯 비활성화로 오주 방지.
보안과 개인정보
- 비밀번호 해시 저장(password_hash), 모든 쿼리 prepared statement, 세션 쿠키 HttpOnly·Secure.
- 개인정보 수집 항목: 이름·전화번호·주문 내역. 수집·이용 동의 별도 획득, 마케팅 수신은 선택 동의 + 수신거부 기능 제공.
- 보관·파기: 주문 내역은 전자상거래 기록 기준 보관(5년, 가정), 회원 탈퇴 시 개인정보 즉시 파기 및 고지.
- 결제 정보는 PG에 위임, 카드 정보는 자체 저장하지 않음.
비기능 요구사항
- 피크 타임(출근·점심) 동시 접속 대응: 주문 생성·상태 조회 페이지 응답 2초 이내(가정 기준치).
- 주문 데이터 정합성: 슬롯 초과 주문 방지(트랜잭션 처리).
- 가용성: 카페24 호스팅 기준 일일 백업, 장애 시 수동 복구 절차 문서화.
- 브라우저: 최신 Chrome·Safari·Samsung Internet 지원.
구현 계획
- 1단계: DB 설계, 회원·로그인, 메뉴 조회·주문·결제, 픽업 시간 선택.
- 2단계: 주문 상태 페이지·알림, 카페 관리자 페이지(주문·메뉴·슬롯 관리).
- 3단계: 플랫폼 운영자 화면, 통계, 성수동 1개 카페 파일럿 온보딩·현장 테스트.
- 출시일·구독 가격 확정은 별도(확정 필요).
수용 기준과 QA
- 회원·비회원 모두 주문 생성→결제 승인→픽업 시간 지정→상태 변경→완료 알림까지 오류 없이 완료.
- 슬롯 최대 주문 수 초과 시 주문이 거부되고 다른 슬롯을 안내한다.
- 관리자에서 상태 변경 시 사용자 상태 페이지에 즉시 반영된다.
- 품절 메뉴는 사용자 화면에 노출되지 않는다.
- 개인정보 동의 미체크 시 회원가입이 불가하고, 마케팅 미동의자에게 광고 알림이 발송되지 않는다.
배포와 운영
- 카페24 VPS에 Apache + PHP 8 + MySQL 배포, HTTPS 인증서 적용, 배포는 FTP/SFTP 수동 배포(가정).
- DB 일일 백업, 주문·결제 로그 보관.
- 운영 모니터링: 에러 로그 확인, 알림 발송 실패 재처리 절차.
- 파일럿 카페 온보딩 지원: 메뉴 등록 대행, 현장 QR 안내물 배치, 사장님 사용 가이드 제공.