셀러들의 비밀무기 셀러허브 (SellerHub) 개발 상세 계획
내부 개발용 문서 – 아키텍처, 네이밍 전략, 일정, 구현 범위를 정리한 기술 기획안입니다.
프로젝트명: 셀러들의 비밀무기 셀러허브 (SellerHub)
예상 개발기간: 약 3주
개발환경: Ubuntu VPS · Apache · PHP · MariaDB · jQuery
1. 시스템 개요 및 목적
1-1. 시스템 목적 및 홈페이지 제작 이유
여러 명품/패션 플랫폼(네이버가격비교/머스트잇/필웨이/트렌비/리본즈/구구스/크림/캉카스) 8개 플랫폼의 데이터를 수집·분석해서
"잘 팔리는 상품(브랜드/모델)"을 빠르게 찾아주는 도매/사입용 소싱 인텔리전스 사이트.
각 플랫폼별로:
- 잘 판매되는 제품
- 최근에 뜨는 제품
- 꾸준히 판매되는 스테디셀러
등을 필터로 찾을 수 있게 하는 것이 핵심 목적입니다.
홈페이지를 만드는 이유:
- 여러 플랫폼의 데이터를 한 곳에서 통합 조회하여 소싱 시간 단축.
- 판매량, 찜 수, 가격 등 다양한 기준으로 소팅하여 사입할만한 제품을 빠르게 발견.
- AI 기반 트렌드 분석으로 최신 인기 상품을 선제적으로 파악.
- 각 플랫폼별 평균가격, 최근 판매량 등 상세한 분석 데이터 제공으로 의사결정 지원.
- 회원제 폐쇄형 시스템으로 경쟁사에게 노출되지 않는 내부 소싱 도구로 활용.
- 크림의 일반판매/보관판매 가격, 네이버가격비교 해외직구 제외 등 플랫폼별 특수 정보를 통합 제공.
1-2. 개발 철학 및 원칙
데이터/품질 방향:
- 정확도 및 퀄리티 최우선: DB 수집, 가격분석, 트렌드분석, 상세정보 등 모든 데이터는 100% 정확한 정보만 제공.
- 검증된 정보만 제공: 2025년 하반기부터 오늘까지의 키워드 검색량, 관련정보들을 상세 분석 후 100% 검증된 결과만 제공.
UX/구조 설계:
- 사용자 편의성: 사용자가 쓰기 편하게 모든 구조/화면을 직관적으로 맞춤.
- 한 화면 통합 제공: 상품 1개(브랜드명 또는 모델명) 검색 시 각 플랫폼별 평균가격, 최근 판매량, 관련 인기상품(비슷한 카테고리/모델명) 추천까지 한 화면에서 제공.
1-3. 주요 기능
- 회원 승인 기반 비공개 서비스 (관리자 승인 계정만 검색 기능 사용 가능).
- 사이드바 + 메인 컨텐츠 UI, PC/모바일 반응형 구성.
- 실시간 검색: 사용자 검색 시 각 플랫폼에서 즉시 결과 수집 및 통합 표시.
- 1개 상품(브랜드나 모델명) 검색 시 각 플랫폼별 평균가격, 최근판매량 등 상세 정보 제공.
- 비슷한 카테고리나 모델명의 인기상품 추천 기능.
- 각 플랫폼별 브랜드 인기상품 조회 기능 제공.
- AI 연동 시스템: 최신 뜨는 브랜드, 최근 검색량 증가한 브랜드/모델명 분석 기능.
- 다양한 필터 제공: 잘 판매되는 제품, 최근 뜨는 제품, 꾸준한 스테디셀러 등.
- 외부 노출 시 구조 해석을 어렵게 하기 위해 모든 폴더명·파일명·함수명 난수화.
1-4. 플랫폼별 특수 처리
- 크림: 머스트잇, 트렌비 같은 사이트처럼 나와있는 데이터 기반으로 최근 잘 판매되는 제품 분석. 일반판매 가격과 보관판매 평균 가격을 취합하여 표시.
- 네이버가격비교: 해외직구 제품은 제외하고 국내 판매 제품만 표시.
1-5. 한 줄 요약
"여러 명품/패션 플랫폼의 판매·가격·트렌드 데이터를 모아서,
잘 팔리는 상품과 뜨는 브랜드를 AI로 분석해 보여주는
'도매/사입용 소싱 인텔리전스 사이트'를 만든다."
2. 시스템 아키텍처
2-1. 계층 구조
- 프론트엔드: HTML, CSS, jQuery, Vanilla JS
- 백엔드: PHP (MVC 강제 X, 모듈 분리 중심)
- 데이터베이스: MariaDB (정규화 + 집계용 테이블 병행)
- 서버: Ubuntu VPS + Apache, 실시간 검색 처리
2-2. 주요 모듈
- 인증/권한 모듈 (로그인, 회원 승인, 세션 관리, 관리자 권한으로 유료회원 승인/기간 설정).
- 회원가입 모듈 (아이디 중복체크, 회원정보 등록, 가입경로 저장, 신규가입 시 텔레그램 알림 발송).
- 마이페이지 모듈 (회원정보 조회/변경, 결제 플랜 정보 조회, 이용 기간 조회, 최근 분석 내역 조회).
- 검색 통합 모듈 (플랫폼별 실시간 검색 API 호출 또는 크롤러).
- 결과 파싱/정제 모듈 (각 플랫폼 검색 결과 파싱 및 통일된 형식으로 변환, 해외직구 제품 필터링).
- 검색 결과 통합/정렬 모듈 (여러 플랫폼 결과를 하나로 합치고 정렬, 평균가격 계산, 판매량 기반 소팅).
- 판매량 분석 모듈 (최근 판매량, 찜 수, 판매 트렌드 분석).
- 브랜드 인기상품 모듈 (플랫폼별 브랜드 인기상품 조회 및 통합, 잘 판매되는/최근 뜨는/꾸준한 스테디셀러 필터).
- AI 분석 모듈 (최신 뜨는 브랜드 분석, 최근 검색량 증가한 브랜드/모델명 분석, 트렌드 예측).
- 유사 상품 추천 모듈 (비슷한 카테고리나 모델명의 인기상품 추천).
- 조회 API 모듈 (검색 결과 제공, 검색 이력 저장, 평균가격 정보 제공, 판매량 정보 제공).
- 보안 모듈 (CSRF 토큰 생성/검증, 입력값 검증, XSS 방어).
- UI 컴포넌트 모듈 (전역 모달 팝업, 토스팅 메시지 인스턴스).
- AI 설정 모듈 (GPT/제미나이 모델 선택, API 키 입력/수정/저장, 관리자 페이지에서 설정).
- 텔레그램 알림 모듈 (회원 신규가입 시 알림 발송, 챗ID 추출, 테스트 메시지 발송, 관리자 페이지에서 설정).
- 관리자용 모듈 (회원 관리, 유료회원 승인/기간 설정, 검색 통계, 플랫폼 연동 상태 확인, AI/텔레그램 설정 관리).
3. 기술 스택 및 규칙
3-1. 공통 스택
Ubuntu
Apache
PHP 7.4+
MariaDB
Bootstrap
jQuery 3.x
Vanilla JS
3-2. 폴더/파일/함수 네이밍 정책
사용자 페이지 파일명: 의미있는 이름 사용 (예: home.php, search.php, mypage.php 등). 디렉터리 최상단에 직접 배치.
나머지 요소들은 난수화: 외부에서 구조 파악을 어렵게 하기 위해, 다음 요소들은 모두 의미 없는 난수형 이름을 사용한다.
- 디렉터리/폴더명 (예:
/m4p8q/, /p7q3w/, /a5d9k/)
- PHP 모듈 파일 (예:
/p7q3w/k2p8d1.php)
- CSS/JS 파일 (공통, 페이지별, 모바일, 사이드바 등)
- 주요 함수명 (검색 처리, 결과 파싱, 권한 체크 등)
- 관리자 페이지 파일명
개발 편의를 위해, 논리 이름과 실제 난수 이름의 대응 관계는 내부 전용 맵핑 파일/문서에서 관리한다.
3-3. 맵핑 설계 (논리 이름 ↔ 실제 이름)
SEARCH_MAIN
home.php (의미있는 파일명), /t3n7v/p7w1s/home.css (난수 폴더/파일명), /j8f2h/p7w1s/home.js (난수 폴더/파일명)
SEARCH_RESULT
search.php (의미있는 파일명), /t3n7v/p7w1s/search.css (난수 폴더/파일명), /j8f2h/p7w1s/search.js (난수 폴더/파일명)
GET_USER_APPROVAL_STATUS
/p7q3w/auth/fn_q7m3a.php (난수 폴더/파일명/함수명)
실제 구현 시에는 Git/내부 위키에 별도 표 형태로 정리하여, 신규 투입 인원이 전체 구조를 빠르게 파악할 수 있도록 한다.
4. 디렉터리 구조 (개념)
실제 디렉터리는 다음과 같은 역할 구조로 설계한다. 사용자 페이지 파일만 의미있는 이름을 사용하고, 나머지는 난수화한다.
/root
├── home.php # 메인 페이지 (의미있는 파일명)
├── search.php # 검색 결과 페이지 (의미있는 파일명)
├── brand.php # 브랜드 인기상품 페이지 (의미있는 파일명)
├── trend.php # 트렌드 분석 페이지 (의미있는 파일명)
├── mypage.php # 마이페이지 (의미있는 파일명)
├── register.php # 회원가입 페이지 (의미있는 파일명)
├── login.php # 로그인 페이지 (의미있는 파일명)
├── /m4p8q # 사이드바 전용 PHP (난수 폴더명)
├── /t3n7v # CSS 파일들 (난수 폴더명)
│ ├── /x9k2m # 공통 CSS (난수 파일명)
│ ├── /p7w1s # 페이지별 PC용 CSS (난수 폴더명)
│ ├── /k5m9r # 페이지별 모바일 CSS (난수 폴더명)
│ ├── /m4p8q # 사이드바 CSS (난수 폴더명)
│ └── ...
├── /j8f2h # JS 파일들 (난수 폴더명)
│ ├── /x9k2m # 공통 JS (난수 파일명)
│ ├── /p7w1s # 페이지별 JS (난수 폴더명)
│ ├── /m4p8q # 사이드바 전용 JS (난수 폴더명)
│ └── ...
├── /p7q3w # PHP 모듈 파일들 (난수 폴더명)
│ ├── /db # DB 연결 (난수 파일명)
│ ├── /util # 공통 유틸 함수 (난수 파일명)
│ ├── /auth # 로그인/회원 승인 (난수 파일명)
│ ├── /search # 검색 통합 처리 (난수 파일명)
│ ├── /platform # 플랫폼별 검색 모듈 (난수 폴더명)
│ │ ├── /naver # 네이버가격비교 모듈 (난수 파일명)
│ │ ├── /mustit # 머스트잇 모듈 (난수 파일명)
│ │ ├── /philway # 필웨이 모듈 (난수 파일명)
│ │ ├── /trendy # 트렌비 모듈 (난수 파일명)
│ │ ├── /ribbons # 리본즈 모듈 (난수 파일명)
│ │ ├── /gugus # 구구스 모듈 (난수 파일명)
│ │ ├── /kream # 크림 모듈 (난수 파일명)
│ │ └── /kangkas # 캉카스 모듈 (난수 파일명)
│ ├── /brand # 브랜드 인기상품 모듈 (난수 파일명)
│ └── ...
├── /a5d9k # 관리자 페이지 전용 폴더 (난수 폴더명)
│ ├── /x9k2m # 관리자 페이지 PHP (난수 파일명)
│ ├── /m4p8q # 관리자 사이드바 전용 PHP (난수 파일명)
│ ├── /t3n7v # 관리자 페이지 CSS (난수 파일명)
│ ├── /m4p8q # 관리자 사이드바 CSS (난수 파일명)
│ ├── /j8f2h # 관리자 페이지 JS (난수 파일명)
│ ├── /m4p8q # 관리자 사이드바 JS (난수 파일명)
│ └── /p7q3w # 관리자 기능 PHP 모듈 (난수 파일명)
│ ├── /ai # AI 설정 모듈 (난수 파일명)
│ └── /telegram # 텔레그램 알림 모듈 (난수 파일명)
└── /l2r6t # 로그 파일들 (난수 폴더명)
사용자 페이지 파일명 규칙:
- 사용자 페이지 파일들은 디렉터리 최상단에 직접 배치 (별도 폴더 없음).
- 사용자 페이지 파일명은 의미있는 이름 사용 (예:
home.php, search.php, mypage.php 등).
- 나머지 폴더명과 파일명(사이드바, CSS, JS, PHP 모듈, 관리자 페이지 등)은 난수화하여 외부에서 구조 파악을 어렵게 함.
- 내부 문서에서만 논리적 이름과의 매핑 관계를 유지한다.
예: 논리명 "SEARCH_MAIN" → 실제 파일 "home.php", 논리명 "SEARCH_RESULT" → 실제 파일 "search.php"
5. 권한 및 플로우 설계
5-1. 사용자 유형
- 일반 사용자: 가입 후 관리자 승인 대기 → 승인 시 시스템 접근 가능.
- 유료 회원: 관리자가 사이트 결제 없이도 직접 승인하거나 임의로 기간을 설정하여 유료 회원으로 승인 가능.
- 관리자: 회원 승인/정지, 유료회원 승인/기간 설정, 검색 통계 확인, 플랫폼 연동 상태 확인, 기본 설정 관리.
5-2. 기본 플로우
- 회원가입 요청 → 관리자 페이지에서 목록 확인.
- 관리자가 승인/거절/정지 상태 변경.
- 승인된 계정만 로그인 후 검색 기능 사용 가능.
- 승인 대기/거절 계정은 안내용 전용 페이지로 분기.
6. 검색 처리 설계
6-1. 검색 처리 방식
- 실시간 검색: 사용자 검색 요청 시 각 플랫폼에서 즉시 검색 수행.
- 병렬 처리: 여러 플랫폼 검색을 동시에 실행하여 응답 시간 최소화.
- 타임아웃 설정: 각 플랫폼별 최대 대기 시간 설정 (기본 5초).
- 캐싱: 동일 키워드 검색 결과를 일정 시간(예: 10분) 캐시하여 재검색 속도 향상.
6-2. 처리 파이프라인
- 사용자 검색 키워드 입력 (브랜드명, 모델명, 일반 키워드).
- 키워드 전처리 (공백 제거, 특수문자 처리, 인코딩).
- 각 플랫폼별 검색 모듈 병렬 호출 (네이버가격비교, 머스트잇, 필웨이, 트렌비, 리본즈, 구구스, 크림, 캉카스).
- 플랫폼별 검색 결과 수신 및 파싱 (상품명, 가격, 이미지, 링크, 브랜드명 등).
- 결과 통합 및 정렬 (가격순, 플랫폼별, 인기순 등).
- 각 플랫폼별 평균가격 계산 및 표시 (동일 상품이 여러 플랫폼에 있을 경우 평균가격 산출).
- 검색 결과 화면에 표시 (상품 정보, 플랫폼별 가격, 평균가격, 플랫폼별 링크) 및 검색 이력 저장 (선택).
6-3. 지원 플랫폼 목록
- 네이버가격비교 (Naver Price Comparison)
- 머스트잇 (Mustit)
- 필웨이 (Philway)
- 트렌비 (Trendy)
- 리본즈 (Ribbons)
- 구구스 (Gugus)
- 크림 (Kream)
- 캉카스 (Kangkas)
6-4. 검색 결과 표시 정보
- 상품명, 브랜드명, 모델명
- 각 플랫폼별 가격 (플랫폼명과 함께 표시)
- 평균가격 (동일 상품이 여러 플랫폼에 있을 경우)
- 최근 판매량 (플랫폼별, 기간별)
- 찜 수, 관심 상품 수
- 판매 트렌드 (최근 뜨는 제품, 꾸준히 잘 나가는 제품(스테디셀러) 표시)
- 상품 이미지
- 각 플랫폼별 상품 링크
- 플랫폼별 재고 상태 (가능한 경우)
- 크림 특수 정보: 일반판매 가격, 보관판매 평균 가격
6-5. 브랜드 인기상품 기능
- 각 플랫폼별 브랜드 인기상품 조회 기능 제공.
- 브랜드명 입력 시 해당 브랜드의 인기상품을 플랫폼별로 조회.
- 플랫폼별 인기상품 결과를 통합하여 표시 (랭킹, 판매량, 가격 등).
- 브랜드별 평균가격, 최저가, 최고가 정보 제공.
- 필터 옵션: 잘 판매되는 제품, 최근 뜨는 제품, 꾸준히 잘 나가는 제품(스테디셀러).
6-6. AI 연동 기능
AI 기반 분석 기능:
- 최신 뜨는 브랜드: AI 기반 트렌드 분석으로 최근 인기 상승 브랜드 식별.
- 최근 검색량 급증한 브랜드·모델명: 2025년 하반기부터 오늘까지의 키워드 검색량 변화 분석 및 급증 추세 식별.
- 검증된 데이터만 제공: 상세 분석 후 100% 검증된 결과만 제공하여 정확도 보장.
- 트렌드 예측 및 사입 추천: 판매 트렌드 예측 및 잘 팔릴 만한 유사 상품 추천.
- AI 기반 유사 상품 추천: 트렌드 분석 결과를 자동으로 보여주는 기능.
6-7. 필터 및 소팅 기능
"판매가 잘 되는 데이터"를 찾기 위한 다양한 필터 제공:
- 정렬 옵션:
- 잘 팔리는 순 (판매량 기준)
- 최근 급상승 (최근 판매량 증가율 기준)
- 꾸준한 스테디셀러 (장기간 꾸준히 판매되는 제품)
- 찜 수 순
- 가격 순 (낮은 가격, 높은 가격, 평균가격 기준)
- 필터 옵션:
- 브랜드별 필터: 특정 브랜드만 조회
- 카테고리별 필터: 상품 카테고리별 조회
- 기간별 필터: 특정 기간(1일, 7일, 30일, 3개월, 6개월 등)의 데이터만 조회
- 플랫폼별 필터: 특정 플랫폼만 조회
- 판매 트렌드 필터: 최근 뜨는 제품, 꾸준히 잘 나가는 제품(스테디셀러), 신규 상품
6-8. 유사 상품 추천 기능
- 검색한 상품과 비슷한 카테고리나 모델명의 인기상품 자동 추천.
- 관련 브랜드 상품 추천.
- 가격대별 유사 상품 추천.
7. 화면 및 컴포넌트 구조
7-1. 공통 레이아웃
- PC: 좌측 사이드바 + 우측 메인 컨텐츠.
- 모바일: 상단 고정 헤더(왼쪽 햄버거, 가운데 텍스트 로고) + 슬라이드 인 사이드바.
- 사이드바는 독립 PHP + 전용 CSS/JS로 구성.
- 관리자 페이지도 동일하게 사이드바+메인 구조로 구성.
- 관리자 사이드바는 별도 PHP 파일로 구성 (일반 사용자 사이드바와 분리).
7-2. 주요 페이지 논리 목록 및 실제 파일명
SEARCH_MAIN
home.php
검색 메인 페이지 (검색 입력창, 최근 검색어, 인기 검색어, AI 추천 브랜드/모델명)
SEARCH_RESULT
search.php
검색 결과 페이지 (통합 결과 표시, 플랫폼별 필터, 정렬 옵션, 평균가격 표시, 판매량 정보, 유사 상품 추천)
BRAND_POPULAR
brand.php
브랜드 인기상품 페이지 (플랫폼별 브랜드 인기상품 조회 및 통합 표시, 잘 판매되는/최근 뜨는/꾸준한 스테디셀러 필터)
TREND_ANALYSIS
trend.php
트렌드 분석 페이지 (AI 기반 최신 뜨는 브랜드, 검색량 증가 분석, 트렌드 예측)
MY_PAGE
mypage.php
마이페이지 (회원정보 조회/변경, 결제 플랜 정보, 이용 기간, 최근 분석 내역)
REGISTER
register.php
회원가입 페이지 (아이디 중복체크, 비밀번호 입력, 전화번호, 이메일, 가입경로)
ADMIN_PANEL
/a5d9k/ (난수 폴더 내 난수 파일명)
관리자 페이지 (회원 관리, 유료회원 승인/기간 설정, 검색 통계, 플랫폼 연동 상태, AI 모델 설정, 텔레그램 알림 설정) - 별도 폴더에서 관리, 사이드바+메인 구조
파일명 규칙: 사용자 페이지 파일명만 의미있는 이름을 사용하고, 나머지(사이드바, CSS, JS, PHP 모듈, 관리자 페이지 등)는 난수화한다.
7-3. HTML/CSS 구조 설계 원칙
파일 구조:
- 각 페이지는 PHP 파일에 전체 로직 포함 (비즈니스 로직, DB 접근, 권한 체크 등).
- HTML은 껍데기(마크업)만 담당 (레이아웃, 구조만).
- PHP 파일 내에서 HTML 마크업을 직접 작성하거나, 별도 HTML 템플릿을 include하여 사용.
HTML 클래스 네이밍 규칙:
- 각 페이지별로 고유한 클래스명 사용 (페이지 간 클래스명 충돌 방지).
- 각 섹션(section), 컨테이너(container)별로 고유한 클래스명 사용.
- 예시:
search-main-header, search-main-input-section, search-result-item-container 등.
- 같은 기능이라도 페이지가 다르면 다른 클래스명 사용 (예: 검색 메인 페이지의 버튼과 결과 페이지의 버튼은 다른 클래스명).
CSS 구조 원칙:
- 각 클래스를 별도의 개별 스타일로 구성.
- 1개 섹션이나 1개 컨테이너에 대한 스타일은 해당 클래스에만 적용되도록 작성.
- 공통 스타일은 공통 CSS 파일에, 페이지별 스타일은 페이지 전용 CSS 파일에 분리.
- 인라인 스타일 사용 금지 (CSS 파일에만 정의).
- 클래스명은 의미 있는 이름 사용 (난수화는 파일명에만 적용, 클래스명은 개발 편의를 위해 의미 있는 이름 사용).
JavaScript 규칙:
- 주석 절대 금지: JS 파일 내에 주석(개발용 주석 포함)을 달지 않음.
- 변수명, 함수명은 난독화 스타일로 작성 (의미 없는 이름 사용).
7-4. 디자인 규칙 및 반응형 설계
아이콘 및 UI 라이브러리:
- 아이콘 대신 부스트트랩(Bootstrap) 활용.
- 부스트트랩의 아이콘, 컴포넌트, 유틸리티 클래스를 적극 활용.
반응형 브레이크포인트:
- PC 버전: 1200px 이상
- 태블릿: 992px ~ 1199px
- 큰 폰: 768px ~ 991px
- 중간 폰: 576px ~ 767px
- 작은 폰: 575px 이하
모바일 디자인 원칙:
- 모바일에서는 한 화면에 최대한 많은 정보가 담기도록 설계.
- 상품 카드:
- 무조건 1열 2그리드 또는 3그리드로 가로 배치.
- 세로 스크롤 방식이 아닌 가로 그리드 배치.
- 텍스트 및 섹션:
- 텍스트나 섹션도 가로로 배치하여 공간 효율성 극대화.
- 가능한 한 세로 스크롤을 최소화하고 가로 레이아웃 활용.
디자인 스타일 제한:
- AI 같은 컬러 금지: 과도하게 밝거나 눈에 띄는 AI 스타일 컬러 사용 금지.
- 애니메이션 스타일 금지: 과도한 애니메이션, 트랜지션 효과 사용 금지.
- 심플하고 실용적인 디자인을 지향.
7-4-1. 디자인 테마: 고급 화이트 부티크 미래지향 스타일
참고 디자인: 구구스 디자인 참고용 폴더의 스타일을 분석하여, 다크 테마를 화이트톤으로 변환한 고급 부티크 미래지향 테마 적용.
컬러 팔레트 (화이트톤 변환):
- 배경색:
- 메인 배경: #ffffff (순수 화이트)
- 섹션 배경: #fafafa, #f5f5f5 (미묘한 그레이 톤)
- 카드/컨테이너 배경: #ffffff (화이트)
- 사이드바 배경: #f8f9fa (연한 그레이)
- 텍스트 색상:
- 주요 텍스트: #1a1a1a, #2c2c2c (다크 그레이)
- 보조 텍스트: #666666, #808080 (미디엄 그레이)
- 약한 텍스트: #999999, #b3b3b3 (라이트 그레이)
- 보더 색상:
- 주요 보더: rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0.12) (미묘한 검은색)
- 호버 보더: rgba(0, 0, 0, 0.2) (약간 진한 검은색)
- 액센트 보더: rgba(0, 0, 0, 0.15) (중간 톤)
- 액센트 컬러:
- 주요 액센트: #525252, #737373 (다크 그레이 계열)
- 강조 색상: #1a1a1a (검은색)
- 성공/에러: 미묘한 그린/레드 톤 (과도하지 않게)
타이포그래피:
- 폰트 패밀리: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif
- 폰트 웨이트: 300 (Light), 400 (Regular), 500 (Medium), 600 (Semi-bold)
- 레터 스페이싱: 0.2px ~ 0.5px (미묘한 간격)
- 라인 하이트: 1.4 ~ 1.7 (여유 있는 간격)
- 폰트 사이즈: 11px ~ 18px (작은 사이즈부터 큰 사이즈까지)
레이아웃 및 간격:
- 패딩: 16px ~ 32px (섹션별 적절한 여백)
- 마진: 20px ~ 32px (요소 간 간격)
- 보더 라디우스: 4px, 6px, 8px (작은 값으로 미니멀한 느낌)
- 그리드 갭: 16px ~ 24px (카드 간 간격)
부티크 스타일 요소:
- 미묘한 그림자: box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05) ~ 0 4px 12px rgba(0, 0, 0, 0.1)
- 은은한 보더: 1px solid rgba(0, 0, 0, 0.08) ~ rgba(0, 0, 0, 0.12)
- 부드러운 호버 효과: transition: all 0.2s ~ 0.3s ease
- 미묘한 그라데이션: linear-gradient (과도하지 않게)
- backdrop-filter: blur (필요한 경우만, 과도하지 않게)
컴포넌트 스타일:
- 카드/컨테이너:
- 배경: #ffffff
- 보더: 1px solid rgba(0, 0, 0, 0.08)
- 보더 라디우스: 4px ~ 8px
- 패딩: 24px ~ 32px
- 호버 시: 보더 색상 약간 진하게, 미묘한 그림자 추가
- 버튼:
- 배경: #f5f5f5 또는 #ffffff
- 보더: 1px solid rgba(0, 0, 0, 0.12)
- 텍스트: #1a1a1a
- 호버: 배경 #fafafa, 보더 rgba(0, 0, 0, 0.2)
- 입력 필드:
- 배경: #ffffff
- 보더: 1px solid rgba(0, 0, 0, 0.12)
- 포커스: 보더 rgba(0, 0, 0, 0.2), 미묘한 그림자
- 사이드바:
- 배경: #f8f9fa
- 보더: 1px solid rgba(0, 0, 0, 0.08)
- 네비게이션 링크: #666666, 호버 시 #1a1a1a
- 액티브: #1a1a1a, 왼쪽 보더 강조
미래지향적 요소 (과도하지 않게):
- 미묘한 그라데이션 효과 (배경이나 텍스트에만, 과도하지 않게)
- 부드러운 transition 효과 (0.2s ~ 0.3s)
- backdrop-filter: blur (필요한 경우만, 성능 고려)
- 미묘한 그림자 효과 (깊이감 표현)
- 과도한 애니메이션 금지 (구구스 스타일의 애니메이션은 제외)
구구스 스타일에서 제외할 요소:
- 과도한 그라데이션 애니메이션 (dashboardTitleGlow 등)
- 펄스 애니메이션 (subtlePulse 등)
- 플로우 애니메이션 (sidebarTitleFlow 등)
- 과도한 색상 변화 애니메이션
- 다크 테마 관련 모든 스타일 (화이트톤으로 변환)
적용 원칙:
- 구구스 디자인 참고용 폴더의 레이아웃 구조와 간격, 타이포그래피 스타일을 참고.
- 다크 테마를 화이트톤으로 변환하되, 고급스러운 부티크 느낌 유지.
- 미래지향적 요소는 미묘하게만 적용 (과도한 애니메이션 제외).
- 전체적으로 깔끔하고 미니멀하면서도 고급스러운 느낌을 추구.
7-5. 마이페이지 상세 기능
- 회원정보 조회/변경:
- 등록된 회원정보 조회 (아이디, 전화번호, 이메일 등).
- 회원정보 변경 기능 (전화번호, 이메일 등 수정 가능 항목만).
- 비밀번호 변경 기능 (별도 섹션).
- 결제 플랜 정보:
- 현재 적용된 결제 플랜 표시 (무료/유료 등).
- 이용 기간 표시 (시작일, 종료일, 남은 기간).
- 관리자가 설정한 기간 정보 표시.
- 최근 분석 내역:
- 최근 검색 이력 목록.
- 최근 분석한 브랜드/모델명 목록.
- 저장한 즐겨찾기 목록.
7-6. 회원가입 페이지 상세 스펙
입력 필드:
- 아이디:
- 중복체크 기능 무조건 필수 (실시간 또는 버튼 클릭).
- 중복체크 완료 전에는 가입 불가.
- 플레이스홀더: "아이디를 입력하세요"
- 비밀번호:
- 비밀번호 입력 텍스트박스 1개만 사용 (비밀번호 확인 컨펌 텍스트박스 사용하지 않음).
- 텍스트박스 오른쪽 끝에 눈 모양 버튼 추가.
- 눈 모양 버튼 클릭 시 비밀번호 마스킹 해제/적용 토글.
- 플레이스홀더: "비밀번호를 입력하세요"
- 전화번호:
- 필수 입력 항목.
- 플레이스홀더: "전화번호를 입력하세요 (예: 010-1234-5678)"
- 이메일:
- 선택 입력 항목.
- 플레이스홀더: "이메일을 입력하세요 (선택)"
- 가입경로:
- 무조건 입력 필수 항목.
- 텍스트로 직접 입력 (드롭다운 X).
- 플레이스홀더: "가입경로를 입력하세요"
플레이스홀더 규칙:
- 모든 텍스트박스는 플레이스홀더 방식으로 텍스트박스 안에서 내용이 나오도록 구현.
- 라벨은 사용하지 않고 플레이스홀더만 사용.
7-7. 보안 및 통신 규칙
- CSRF 토큰 활용:
- 모든 관리자/사용자 페이지에서 발생하는 요청(폼 제출, AJAX 요청 등)에 CSRF 토큰 필수 적용.
- PHP에서 토큰 생성 및 검증 로직 구현.
- AJAX 요청 시에도 CSRF 토큰을 헤더 또는 데이터에 포함하여 전송.
- 통신 방식:
- 모든 서버 요청은 PHP 또는 AJAX를 통해 처리.
- 일반 폼 제출은 PHP로, 비동기 요청은 AJAX로 처리.
7-8. 전역 UI 컴포넌트 (모달/토스팅)
모달 팝업 및 토스팅 메시지:
- 모든 관리자/사용자 페이지에서 일반 팝업(alert, confirm 등) 사용 금지.
- 모든 알림/확인은 모달 팝업 또는 토스팅 메시지로 처리.
- 전역 인스턴스로 선언하여 모든 페이지에서 동일한 방식으로 사용.
- 예시:
- 성공 메시지: 토스팅 메시지 (하단 또는 상단에 일정 시간 표시 후 자동 사라짐).
- 확인 필요 메시지: 모달 팝업 (확인/취소 버튼 포함).
- 에러 메시지: 토스팅 메시지 또는 모달 팝업.
- 사용자 편의성을 최우선으로 하여 직관적이고 일관된 UI 제공.
7-9. 관리자 페이지 상세 기능
레이아웃 구조:
- 관리자 페이지도 사이드바 + 메인 컨텐츠 구조로 구성.
- 관리자 사이드바는 별도 PHP 파일로 구성 (일반 사용자 사이드바와 완전 분리).
- 관리자 사이드바 전용 CSS/JS 파일 사용.
주요 기능:
- 회원 관리 (회원 목록, 승인/거절/정지, 유료회원 승인/기간 설정).
- 검색 통계 (검색 빈도, 인기 키워드, 플랫폼별 통계).
- 플랫폼 연동 상태 확인.
7-10. AI 모델 설정 기능
관리자 페이지에서 AI 모델 설정:
- AI 모델 선택:
- GPT (OpenAI) 또는 제미나이 (Google Gemini) 중 하나 선택 가능.
- 라디오 버튼 또는 드롭다운으로 선택.
- 선택한 모델이 시스템 전역에서 사용됨.
- API 키 관리:
- 선택한 AI 모델의 API 키를 입력/수정/저장 가능.
- API 키는 암호화하여 저장.
- 저장 후 즉시 적용.
- 설정 페이지: AI 설정과 텔레그램 설정을 한 페이지에서 처리.
7-11. 텔레그램 알림 기능
회원 신규가입 알림:
- 회원이 신규가입하면 관리자에게 텔레그램 알림 자동 발송.
- 알림 내용: 가입자 아이디, 전화번호, 이메일, 가입경로, 가입일시 등.
관리자 페이지에서 텔레그램 설정:
- 텔레그램 봇 토큰 입력/수정/저장.
- 챗ID 추출 기능:
- 관리자가 텔레그램 봇과 대화를 시작하면 챗ID를 자동으로 추출.
- 추출된 챗ID를 저장하여 알림 발송 대상으로 설정.
- 테스트 메시지 발송 기능:
- 설정한 텔레그램 봇 토큰과 챗ID로 테스트 메시지 발송.
- 알림 기능이 정상 작동하는지 확인 가능.
- 설정 페이지: AI 설정과 텔레그램 설정을 한 페이지에서 처리.
8. 개발 시작 전 준비 작업 (Pre-Development)
8-1. 추천 작업 순서
1단계: 플랫폼별 엔드포인트 및 데이터 수집 방식 조사 (최우선)
- 각 플랫폼(네이버가격비교, 머스트잇, 필웨이, 트렌비, 리본즈, 구구스, 크림, 캉카스)의 검색 API 엔드포인트 확인.
- 공식 API 제공 여부 확인 (API 키 필요 여부, 사용 제한 등).
- 크롤링이 필요한 경우: 검색 URL 패턴, 파라미터 구조, 응답 형식 분석.
- 각 플랫폼별 수집 가능한 데이터 범위 확인:
- 상품명, 브랜드명, 모델명
- 가격 정보 (일반판매가, 보관판매가 등)
- 판매량, 찜 수, 관심 상품 수
- 상품 이미지 URL
- 상품 상세 링크
- 네이버가격비교: 해외직구 제외 필터링 방법 확인.
- 크림: 일반판매 가격과 보관판매 평균 가격 수집 방법 확인.
2단계: 법적 리스크 및 이용약관 확인
- 각 플랫폼의 이용약관 확인 (자동 수집 허용 여부).
- robots.txt 확인.
- API 사용 정책 확인 (사용 제한, 비용 등).
- 법적 리스크 평가 및 대응 방안 수립.
3단계: DB 스키마 설계
- 회원 테이블 (아이디, 비밀번호, 전화번호, 이메일, 가입경로, 승인상태, 유료회원 여부, 이용기간 등).
- 검색 이력 테이블 (회원ID, 검색 키워드, 검색일시, 결과 수 등).
- 플랫폼별 상품 데이터 테이블 (상품명, 브랜드, 가격, 판매량, 찜 수, 수집일시 등).
- 집계 테이블 (일별/기간별 통계, 평균가격 등).
- 관리자 설정 테이블 (AI 모델 설정, API 키, 텔레그램 설정 등).
4단계: 기본 인프라 구축
- 서버 환경 세팅 (Ubuntu, Apache, PHP, MariaDB).
- 기본 디렉터리 구조 생성 (난수화된 폴더명).
- Git 리포지토리 구성.
- 기본 보안 설정 (방화벽, SSH 키 등).
5단계: 프로토타입 개발 (1개 플랫폼)
- 가장 수집이 쉬운 플랫폼 1개 선택하여 프로토타입 개발.
- 검색 → 데이터 수집 → 파싱 → DB 저장 → 화면 표시 전체 플로우 테스트.
- 프로토타입을 통해 기술적 난이도와 소요 시간 파악.
8-2. 플랫폼별 엔드포인트 조사 체크리스트
※ 상세 조사 내용은 별도 파일 플랫폼별_엔드포인트_조사표.html을 참조하세요.
아래는 각 플랫폼별로 확인해야 할 주요 항목입니다.
네이버가격비교
검색 API 엔드포인트, API 키 필요 여부, 해외직구 필터링 방법, 응답 형식, 사용 제한
머스트잇
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
필웨이
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
트렌비
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
리본즈
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
구구스
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
크림
검색 API/URL 패턴, 일반판매가/보관판매 평균가 수집 방법, 판매량/찜 수 수집 방법, 인증 필요 여부
캉카스
검색 API/URL 패턴, 인증 필요 여부, 데이터 수집 가능 범위, 판매량/찜 수 수집 방법
8-3. 작업 우선순위 권장사항
✅ 추천 순서:
- 플랫폼별 엔드포인트 조사 (1~2일)
- 각 플랫폼의 검색 API/URL 패턴 확인.
- 수집 가능한 데이터 범위 파악.
- 이 작업을 먼저 하면 개발 방향이 명확해짐.
- 법적 리스크 확인 (0.5일)
- 이용약관, robots.txt 확인.
- 법적 문제가 있으면 수집 방식 변경 필요.
- DB 스키마 설계 (1일)
- 수집할 데이터 구조를 파악한 후 스키마 설계.
- 플랫폼별 데이터 구조 차이를 고려한 설계.
- 기본 인프라 구축 (1일)
- 프로토타입 개발 (2~3일)
- 1개 플랫폼으로 전체 플로우 테스트.
- 기술적 난이도 파악 후 일정 조정.
⚠️ 주의사항:
- 플랫폼별 엔드포인트 조사를 먼저 하지 않으면, 개발 중에 수집 불가능한 데이터를 가정하고 개발할 수 있음.
- 법적 리스크를 나중에 확인하면, 이미 개발한 코드를 수정해야 할 수 있음.
- 프로토타입을 먼저 개발하면 실제 난이도를 파악하여 일정을 현실적으로 조정 가능.
9. 개발 일정 (3주 플랜)
D1 ~ D3
서버 세팅(Ubuntu, Apache, PHP, MariaDB), 기본 보안/계정 설정, Git 리포지토리 구성, 기본 디렉터리 구조 생성.
D3 ~ D7
인증/권한 모듈 구현, 회원 승인 플로우, 회원가입 페이지 구현(아이디 중복체크, 비밀번호 마스킹 토글, 플레이스홀더 적용), 기초 DB 스키마 설계 및 구현, CSRF 토큰 모듈 구현, 전역 모달/토스팅 컴포넌트 구현, 플랫폼별 검색 모듈 1~2개 프로토타입.
D7 ~ D12
나머지 플랫폼 검색 모듈 구현(네이버가격비교-해외직구 제외, 머스트잇, 필웨이, 트렌비, 리본즈, 구구스, 크림-일반판매/보관판매 가격 취합, 캉카스), 검색 결과 통합/파싱 로직, 평균가격 계산 로직, 판매량 분석 모듈, 브랜드 인기상품 모듈 구현, 필터/소팅 기능, 검색 API 구현.
D10 ~ D15
프론트엔드 UI(검색 페이지, 결과 페이지, 브랜드 인기상품 페이지, 트렌드 분석 페이지, 마이페이지, 사이드바, 관리자 사이드바), PC/모바일 반응형 레이아웃, 검색 결과 표시 및 정렬 기능, 평균가격 표시 기능, 판매량 정보 표시, 필터/소팅 UI, 유사 상품 추천 기능, 마이페이지 기능(회원정보 조회/변경, 결제 플랜 정보, 최근 분석 내역), 관리자 페이지(별도 폴더, 사이드바+메인 구조, 유료회원 승인/기간 설정 기능, AI 모델 설정 페이지, 텔레그램 알림 설정 페이지).
D15 ~ D21
AI 연동 시스템 구현(최신 뜨는 브랜드, 검색량 증가 분석, GPT/제미나이 모델 연동), 텔레그램 알림 모듈 구현(회원 신규가입 알림, 챗ID 추출, 테스트 메시지 발송), 데이터 검증 로직 구현(100% 정확도 보장), 통합 테스트, 성능 최적화(병렬 처리, 캐싱), 오류 수정, 기본 로그/모니터링 설정, 1차 배포 및 운영 환경 점검.
일정은 개발 난이도, 플랫폼별 검색 구현 난이도, AI 연동 복잡도, 데이터 검증 정확도 요구사항 등에 따라 일부 조정 가능하며, 핵심 기능 우선 구현 후 단계별 고도화 방식으로 진행한다.
특히 데이터 정확도 및 퀄리티를 최우선으로 하여, 검증되지 않은 정보는 제공하지 않는다.
10. 운영 및 모니터링
- 기본 접근/에러 로그 수집 및 주기적 확인.
- 플랫폼별 검색 실패 시 알림(이메일/메신저 등) 구조 추후 확장 가능.
- 연간 관리 비용 80만원(서버·도메인 포함) 안에서 기본 운영 및 패치 처리.
11. 향후 확장 포인트
- 타 플랫폼 추가 연동 (무신사, W컨셉, 29CM 등) 시 동일 검색 모듈 구조 재사용.
- 검색 통계 기능 (인기 검색어, 플랫폼별 검색 빈도, 가격 추이 등).
- 사용자별 즐겨찾기, 검색 이력 저장, 개인화 추천 로직 도입.
- 가격 알림 기능 (특정 상품 가격 변동 시 알림).
- 상품 비교 기능 (여러 플랫폼의 동일 상품 가격 비교, 평균가격 대비 최저가/최고가 표시).
- 브랜드별 통계 기능 (브랜드별 평균가격, 인기상품 트렌드 등).
- 검색 결과를 활용한 가격 분석 및 마진 계산 기능.
- AI 기반 사입 추천 시스템 고도화 (수익성 예측, 리스크 분석).
- 실시간 알림 기능 (관심 상품 가격 변동, 신규 인기 상품 등록 등).