# 청춘약국 마일리지 시스템 — 실행 구조

## 실행해야 할 프로그램 (2개)

### 1. Flask 서버 (`backend/app.py`)
```bash
cd c:\Users\청춘약국\source\pharmacy-pos-qr-system
python backend/app.py
```
- **포트**: 7001 (0.0.0.0)
- **외부 도메인**: `mile.0bin.in` (→ 내부 7001 포트로 프록시)
- **역할**: 웹 서비스 전체 담당

#### 제공하는 페이지/API
| 경로 | 설명 |
|------|------|
| `/` | 메인 페이지 |
| `/signup` | 회원가입 |
| `/claim` | QR 적립 (폰번호 방식) |
| `/claim/kakao/start` | QR 적립 (카카오 로그인) |
| `/my-page` | 마이페이지 |
| `/kiosk` | **키오스크 대기 화면** (약국 내 태블릿) |
| `/admin` | 관리자 페이지 |
| `/admin/transaction/<id>` | 거래 상세 |
| `/admin/user/<id>` | 회원 상세 |
| `/admin/search/user` | 회원 검색 |
| `/admin/search/product` | 상품 검색 |
| `/api/kiosk/trigger` | 키오스크 QR 트리거 (POST) |
| `/api/kiosk/current` | 키오스크 현재 상태 |
| `/api/kiosk/claim` | 키오스크 적립 처리 (POST) |

#### 사용하는 DB
- **SQLite** (`backend/db/mileage.db`) — 회원, 적립, QR 토큰
- **MSSQL** (`192.168.0.4\PM2014`, DB: `PM_PRES`) — POS 판매 데이터 (읽기 전용)

---

### 2. Qt POS GUI (`backend/gui/pos_sales_gui.py`)
```bash
cd c:\Users\청춘약국\source\pharmacy-pos-qr-system
python backend/gui/pos_sales_gui.py
```
- **역할**: POS 판매 내역 조회 + QR 라벨 발행
- **PyQt5 기반** 데스크톱 앱
- Flask 서버와 **독립적으로 실행** (별도 프로세스)

#### 주요 기능
- 일자별 판매 내역 조회 (SALE_MAIN + CD_SUNAB)
- 결제수단 표시 (카드/현금/현영)
- 할인 표시
- QR 라벨 프린터 출력 (Zebra / POS 프린터)
- 적립자 클릭 → 회원 적립 내역 팝업

#### 사용하는 DB
- **MSSQL** — SALE_MAIN, SALE_SUB, CD_SUNAB 조회
- **SQLite** — claim_tokens, users 조회 (적립 정보)

---

## 실행 순서

```
1. Flask 서버 먼저 실행 (키오스크, 웹 서비스 제공)
2. Qt POS GUI 실행 (판매 내역 조회, QR 발행)
```

순서는 상관없으나, Flask가 먼저 떠 있어야 키오스크(`mile.0bin.in/kiosk`)와
웹 서비스(`mile.0bin.in`)가 접속 가능.

---

## 프로세스 확인

```bash
# 실행 중인 Python 프로세스 확인
tasklist /FI "IMAGENAME eq python.exe"

# 정상 상태: Python 프로세스 3개
#   - Flask 서버 (메인)
#   - Flask 서버 (debug reloader 워커)
#   - Qt POS GUI
```

---

## 주의사항

- `taskkill /F /IM python.exe` 사용 시 **Flask + GUI 모두 종료됨**
- GUI만 재시작하려면 해당 PID만 종료할 것
- Flask 서버는 `debug=True`로 실행되어 코드 변경 시 자동 리로드
- Python 경로: `C:\Users\청춘약국\AppData\Local\Programs\Python\Python312\python.exe`
