| 계층 | 기술 | 위치 | 역할 |
|---|---|---|---|
| 프론트 | React 19 + Vite | client/src/ | 고객 UI, API 호출 |
| API 레이어 | Express Router | server/routes/ | REST API, 인증, 검증 |
| 서비스 | Claude AI, Playwright | server/services/ | AI 채팅, 크롤링, 인센티브 |
| DB | Supabase (PostgreSQL) | dugaqvvnhsgenhmhuyju | 23개 테이블, RLS |
| 어드민 | HTML 단일파일 (정적) | server/public/admin/ | 관리자 UI, API fetch |
| Method | Path | 설명 | Request | Response |
|---|---|---|---|---|
| GET | /api/products/categories | 상품 카테고리 | — | [{id, name, icon, desc}] |
| GET | /api/products/:category | 카테고리별 상품 | — | [{ticket, name, price}] |
| GET | /api/products/used-phone-catalog | 중고폰 기종/용량 | — | {makers, series, storages, total:302} |
| GET | /api/stores | 매장 목록 | — | [{name, address, phone, lat, lng}] |
| POST | /api/applications | 셀프 신청 | {name, phone, product_ticket} | {id, status:'신청완료'} |
| POST | /api/chat/message | AI 채팅 | {sessionId, message} | {reply, tools_used} |
| GET | /api/reviews | 후기 목록 | — | [{author, rating, content}] |
| POST | /api/reviews | 후기 작성 | {category, rating, content} | {id, created_at} |
| GET | /api/rental/:ticket | 렌탈 상세 | — | {ticket, category, brand, ...} |
| GET | /api/cash/balance | 포인트 잔액 | — | {balance, user_id} |
| POST | /api/cash/withdraw | 출금 신청 | {amount, bank_name, account_number} | {id, status:'대기'} |
| POST | /api/referrals/register | 친구초대 등록 | {referrer_code, phone} | {referral_id} |
| POST | /api/alarms | 돈지키미 알람 등록 | {type, product, end_date} | {id, alarm_id} |
| Method | Path | 설명 | DB 테이블 | 데이터 수 |
|---|---|---|---|---|
| GET | /api/admin/platform/stats | 대시보드 통계 | 여러 테이블 집계 | — |
| GET | /api/admin/platform/members | 회원 목록 | user_profiles + agents | 13명 |
| GET | /api/admin/platform/used-phones | 중고폰 매입 시세 | bongi_used_phone_prices | 302개 |
| PATCH | /api/admin/platform/used-phones/price | 개별 시세 수정 | bongi_used_phone_prices | — |
| GET | /api/admin/platform/rental | 렌탈 상품 | bongi_rental_products | 51개 |
| PATCH | /api/admin/platform/rental/:id | 렌탈 수정 (→티켓연동) | rental + tickets | — |
| GET | /api/admin/platform/mobile-plans | 요금제 | bongi_mobile_plans | 168개 |
| GET | /api/admin/platform/phone-prices | 신규폰 시세 | bongi_phone_prices | 18개 |
| GET | /api/admin/platform/carrier-products | 인터넷+TV 전체 | speeds+tv+wifi+settop | 56개 |
| PATCH | /api/admin/platform/internet-speed/:id | 속도 수정 (→티켓) | speeds + tickets | — |
| PATCH | /api/admin/platform/tv-product/:id | TV 수정 (→티켓) | tv + tickets | — |
| PATCH | /api/admin/platform/wifi-product/:id | WiFi 수정 (→티켓) | wifi + tickets | — |
| PATCH | /api/admin/platform/settop-box/:id | 셋톱 수정 (→티켓) | settop + tickets | — |
| GET | /api/admin/platform/tickets | 티켓 목록 | bongi_tickets | 1,053개 |
| POST | /api/admin/platform/tickets/sync | 티켓 동기화 | 전체 연쇄 비활성 | — |
| GET | /api/admin/platform/applications | 신청 현황 | bongi_applications | 12건 |
| GET | /api/admin/platform/stores | 매장 관리 | bongi_stores | 8개 |
| GET | /api/admin/platform/gifts | 사은품 | bongi_gifts | 0건 |
| GET | /api/admin/platform/reviews | 후기 관리 | bongi_reviews | 99건 |
| GET | /api/admin/platform/cash/withdrawals | 출금 관리 | bongi_withdrawals | 0건 |
| GET | /api/admin/platform/don-jikimi | 돈지키미 | bongi_user_alarms | 0건 |
| GET | /api/admin/platform/notifications | 알림 관리 | bongi_notifications | 0건 |
| GET | /api/admin/platform/subsidy | 공시지원금 | bongi_subsidy_data | 크롤링 |
| POST | /api/admin/platform/subsidy/crawl | 수동 크롤링 | smartchoice.or.kr | — |
| 고객 입력 (프론트) | API 필드 | DB 컬럼 | 어드민 표시 (show(6)) |
|---|---|---|---|
| 이름 | name | bongi_applications.name | 고객명 |
| 전화번호 | phone | bongi_applications.phone | 연락처 |
| 선택한 상품 티켓 | product_ticket | bongi_applications.product_ticket | 티켓번호 (SK0188) |
| 상품명 (자동) | product_name | bongi_applications.product_name | 상품 |
| — | channel: '셀프신청' | bongi_applications.channel | 유입경로 셀프신청 |
| — | type: 'self' | bongi_applications.type | — |
| — | status: '신청완료' | bongi_applications.status | 상태 신청완료 |
| — | sync_direction: '어드민→CRM' | bongi_applications.sync_direction | 동기화 방향 |
| 고객 입력 | API 필드 | DB 컬럼 | 어드민 표시 (show(1)) |
|---|---|---|---|
| 카카오/구글 로그인 | provider | bongi_user_profiles.social_provider | 소셜 카카오 |
| 이름 (소셜에서) | display_name | bongi_user_profiles.display_name | 이름 |
| 전화번호 | phone | bongi_user_profiles.phone | 전화번호 |
| PASS 본인인증 | verified_at | bongi_user_profiles.verified_at | 인증 완료 |
| 계좌 등록 | bank_name | bongi_user_profiles.bank_name | 계좌 등록 |
| — | user_type: '앱회원' | bongi_user_profiles.user_type | 유형 앱회원 |
| — | point_balance | bongi_user_profiles.point_balance | 포인트 12,000P |
| 고객 선택 (채팅 UI) | API 필드 | DB 컬럼 | 어드민 표시 | AI 채팅 응답 |
|---|---|---|---|---|
| 제조사 (Apple) | manufacturer | bongi_used_phone_prices.manufacturer | 제조사 | "아이폰 시세입니다" |
| 시리즈 (iPhone 16) | series | bongi_used_phone_prices.series | 시리즈 | — |
| 모델 (Pro Max) | model | bongi_used_phone_prices.model | 모델명 | "iPhone 16 Pro Max" |
| 용량 (256G) | storage | bongi_used_phone_prices.storage | 용량 | "256G 기준" |
| 등급 (A) | — | bongi_used_phone_prices.grade_a | A등급 가격 | "A등급: 1,110,000원" |
| # | 메뉴 | show() | API 엔드포인트 | DB 테이블 | fetch 함수 |
|---|---|---|---|---|---|
| 01 | 대시보드 | show(0) | GET /stats | 여러 테이블 집계 | loadDashboardStats() |
| 02 | 회원 관리 | show(1) | GET /members | user_profiles + agents | loadMembers() |
| 03 | SKT 상품 | showCarrier('SKT') | GET /carrier-products | speeds+tv+wifi+settop | 하드코딩 + generateCombos() |
| 04 | KT 상품 | showCarrier('KT') | GET /carrier-products | speeds+tv+wifi+settop | 하드코딩 + generateCombos() |
| 05 | LG U+ 상품 | showCarrier('LGU') | GET /carrier-products | speeds+tv+wifi+settop | 하드코딩 + generateCombos() |
| 06 | 렌탈 상품 | showProd('rental') | GET /rental | bongi_rental_products | loadRentalData() |
| 07 | 중고폰 매입 | showProd('phone') | GET /used-phones | bongi_used_phone_prices | loadUsedPhoneData() |
| 08 | 매장 관리 | show(4) | GET /stores | bongi_stores | loadStores() |
| 09 | 티켓 관리 | show(5) | GET /tickets | bongi_tickets | loadTickets() + renderTicketCombo() |
| 10 | 신청 현황 | show(6) | GET /applications | bongi_applications | loadApplications() |
| 11 | 중고폰 현황 | show(19) | GET /used-phones | bongi_used_phone_prices | renderUsedPhoneTable() |
| 13 | 사은품 관리 | show(7) | GET /gifts | bongi_gifts | loadGiftsAdmin() |
| 14 | 포인트 관리 | show(8) | GET /cash/withdrawals | bongi_withdrawals | loadWithdrawals() |
| 15 | 후기 관리 | show(9) | GET /reviews | bongi_reviews | loadReviewsAdmin() |
| 16 | 돈지키미 | show(10) | GET /don-jikimi | bongi_user_alarms | loadDonJikimi() |
| 17 | 알림 관리 | show(24) | GET /notifications | bongi_notifications | loadNotifications() |
| 18 | 통계 | show(11) | GET /stats | 여러 테이블 집계 | loadDashboardStats() |
| 19 | 모바일 요금제 | show(12) | GET /mobile-plans | bongi_mobile_plans | loadMobilePlanData() |
| 20 | 공시지원금 | show(23) | GET /subsidy | bongi_subsidy_data | loadSubsidyData() |
| 21 | 가족결합 | show(14) | — | — | 하드코딩 (simBundles) |
| 22 | 가이드 | show(17) | — | — | 하드코딩 |
| 23 | 시뮬레이터 | show(21) | — | — | 하드코딩 (simInet/simTV) |
| 24 | 크롤링 관리 | show(20) | POST /subsidy/crawl | bongi_subsidy_data | syncTickets() |
| 25 | 체크리스트 | show(22) | — | — | localStorage |