관리자 대시보드에 신규 주문이 안 뜨던 버그, 원인은 "베이직 플랜"이었다
"주문이 들어왔는데 대시보드에는 적용이 안되는거야"
실사용 중에 이런 제보를 받았습니다. 고객이 청첩장을 주문했는데, 관리자 대시보드(첫 화면)에는 그 주문이 전혀 반영되지 않는 현상이었어요.
관리자 대시보드(HomePage.tsx)를 뜯어보니, 대시보드는 /api/basic-customers와 /api/permanent-customers 두 API만 조회하고 있었습니다. 정작 실제 주문이 쌓이는 /api/orders(주문 테이블)는 아예 조회하지 않고 있었던 거죠.
여기에 더 근본적인 구조 문제가 있었습니다:
orders 테이블엔 무조건 저장됩니다.permanent_customers가 즉시 생성되는 반면,basic_customers가 생성되는 구조였습니다.즉, 베이직 플랜 주문이 들어오면 관리자가 그 주문을 열어서 게시 버튼을 누르기 전까지는:
이 어느 지표에도 전혀 반영되지 않고 있었습니다. "주문 관리" 페이지에는 이미 정상적으로 떠 있었지만, 정작 관리자가 매일 보는 대시보드 첫 화면은 그대로였던 것이 문제의 핵심이었습니다.
HomePage.tsx: /api/orders?limit=1000도 함께 조회하도록 추가orders.status가 pending/edit_submitted인 건수를 집계, 0보다 크면 주황색으로 강조 표시basic_customers 기준이라 게시가 늦어지면 매출 추정에서 누락되거나 엉뚱한 달로 집계될 위험이 있었는데, orders 테이블 기준으로 바꿔서 접수 즉시 반영되도록 수정functions/api/orders/index.ts: GET /api/orders의 limit 상한을 200 → 1000으로 상향 (고객 API들과 기준 통일, 대시보드가 이번 달 주문을 놓치지 않도록)types.ts: 그동안 OrdersPage.tsx에만 로컬로 있던 Order 타입을 공용 타입으로 추가npm run build(tsc -b && vite build), npx eslint src functions 둘 다 0건wrangler pages dev --local, 프로덕션 DB 미접촉)로 실제 시나리오 재현:가장 많이 팔리는 베이직 플랜 주문이 "게시"라는 수동 단계를 거치기 전까지는 대시보드 어디에도 안 보이던 구조적 사각지대를 찾아 메웠습니다. 이제 주문이 들어오는 즉시 대시보드에서 확인할 수 있습니다.