# 프라임애드 서버 전체 프로젝트 구조

## Claude Code 공통 작업 지침

- **모든 답변은 한국어**로 작성
- **수정 전 반드시 해당 파일을 먼저 읽고** 기존 코드 구조를 파악한 뒤 수정
- 현재 시스템은 라이브 운영 중 — **수정 시 극히 신중**

---

## 서버 환경

| 항목 | 버전 |
|------|------|
| OS | Ubuntu 24.04.4 LTS (Linode) |
| Web Server | Apache 2.4.58 |
| PHP | 8.3.6 |
| MySQL | 8.0.45 |
| Node.js | v20.20.0 |
| 도메인 | primead.kr (HTTPS 전용) |

### 서버 제약사항

- **HTTPS 전용**: HTTP 요청 시 `400 Bad Request`
- **POST 차단**: 모든 API는 **GET 방식만** 사용 (파일 업로드는 PUT)

---

## 프로젝트 구조

```
/var/www/html/
├── naverStore/          ← 네이버 스마트스토어 주문 관리 시스템
│   ├── waterbase_Placard/   ← 고객 견적 계산기
│   ├── admin/               ← 관리자 시스템 (통합 탭 레이아웃)
│   ├── customer/            ← 고객 주문 확인서
│   ├── talkbot/             ← 네이버 톡톡 견적 챗봇
│   └── shared/              ← DB 연결 등 공통 모듈
│
├── client_hub/          ← B2B 거래처 주문 관리 대시보드
│   ├── admin/               ← 관리자 대시보드 (naverStore 탭에 통합)
│   ├── client/              ← 거래처 대시보드
│   ├── auth/                ← 인증 API (거래처 전용 로그인)
│   ├── websocket/           ← Node.js WebSocket 서버
│   └── shared/              ← DB 연결, 인증, 파싱, 가격 계산
│
└── CLAUDE.md            ← 이 파일
```

---

## 두 프로젝트의 관계

### DB 구조
- **naverStore**: `dbhataisun` DB — 주문, 단가(overall_price), 관리자 계정
- **client_hub**: `client_hub` DB — 거래처, 배치, 주문항목, 세션
- 동일 MySQL 서버, 동일 계정(`hataisun`)

### 단가 공유
- client_hub의 `PriceCalculator.php`가 naverStore의 `overall_price` 테이블을 **읽기 전용** 조회
- 단가 편집은 naverStore 관리자 페이지(`admin_panel.php`)에서만 가능

### 관리자 인증 통합
- **naverStore 관리자 = client_hub 관리자** (동일인)
- naverStore 4자리 코드 로그인 1회로 양쪽 모두 접근
- client_hub 관리자 페이지는 naverStore 탭 바에 '거래처관리' 탭으로 통합
- client_hub 로그인 페이지는 **거래처 전용**

### 관리자 탭 구성 (통합 레이아웃)
```
[주문관리] [완료주문] [단가관리] [견적도구] [거래처관리] ‖ [계정관리] [로그]
  naverStore 페이지들                    client_hub      master 전용
```

---

## naverStore 프로젝트 개요

네이버 스마트스토어 **현수막 맞춤 제작 주문 관리 시스템**.

### 비즈니스 모델
네이버 스마트스토어에서 1,000원 상품을 수량으로 금액을 표현하는 구조.
고객이 견적 계산기에서 옵션 선택 → 금액 확인 → 네이버 스토어에서 해당 수량으로 구매.

### 주요 영역
| 영역 | 경로 | 역할 |
|------|------|------|
| 고객 견적 계산기 | `waterbase_Placard/` | 소재/사이즈/후가공 선택 → 가격 계산 |
| 관리자 시스템 | `admin/` | 주문관리, 완료주문, 단가관리, 견적도구, 계정관리, 로그 |
| 고객 확인서 | `customer/` | 8자리 ID로 주문 진행상태 확인 |
| 톡톡 챗봇 | `talkbot/` | 네이버 톡톡 Webhook 기반 자동 견적 |

### 가격 계산 파이프라인
```
소재비 → 편집비 → 후가공비 → 기본제작비 → 할인 3종 → 최종가격
```

### API 보안 (매크로 공격 방어)
- 토큰 검증: `init_order.php`에서 발급한 `order_token` 필수
- Rate Limit: 동일 주문번호 3초 이내 재요청 차단
- 옵션 화이트리스트: 유효하지 않은 옵션명 거부

---

## client_hub 프로젝트 개요

B2B **거래처 주문 관리 대시보드**.
하청업체가 파일명 규칙으로 주문 정보를 전달 → 파일명 파싱 → 가격 자동 계산.

### 주요 기능
| 기능 | 설명 |
|------|------|
| 파일명 파싱 | `FileNameParser.php` — 후가공/사이즈/아일렛 개수/복수 주문 분리 |
| 가격 계산 | `PriceCalculator.php` — naverStore DB 단가 기반 |
| NAS 연동 | WebDAV로 파일 업로드/동기화 |
| WebSocket | 실시간 알림 (관리자 ↔ 거래처) |
| 거래처별 설정 | 추가상품 계산 제외 (큐방/로프/테이프) |

### 인증
- 거래처: ID/비밀번호 로그인 → 토큰 쿠키(`ch_client_token`)
- 관리자: naverStore 세션 브리지 (PHP 세션 기반)

---

## 공통 참조

### MySQL 접속 정보
- 호스트: localhost
- 사용자: hataisun
- DB: `dbhataisun` (naverStore), `client_hub` (client_hub)

### 주요 URL
```
고객 견적 계산기:  https://primead.kr/naverStore/waterbase_Placard/quote_calculator.php
관리자 로그인:     https://primead.kr/naverStore/admin/auth/login.php
거래처 로그인:     https://primead.kr/client_hub/
고객 주문 확인서:  https://primead.kr/naverStore/customer/order-check.html?order_id=12345678
```
