# 청춘약국 마일리지 시스템 — 실행 구조 ## 실행해야 할 프로그램 (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/` | 거래 상세 | | `/admin/user/` | 회원 상세 | | `/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`