- 알림톡 발송 로그: alimtalk_logs SQLite 테이블 + DB 자동 기록 - /admin/alimtalk 페이지: 서버 로그, NHN Cloud 내역 조회, 수동 발송 테스트 - 적립일시 포맷 수정: %Y-%m-%d %H:%M (16자 초과) → %m/%d %H:%M (11자) - POS GUI 현금영수증(현영) 표시: 청록색 볼드 - 결제수납구조.md: CD_SUNAB/PS_main/SALE_MAIN 3테이블 관계 문서 - 실행구조.md: Flask 서버 + Qt GUI 실행 가이드 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
2.8 KiB
Markdown
92 lines
2.8 KiB
Markdown
# 청춘약국 마일리지 시스템 — 실행 구조
|
|
|
|
## 실행해야 할 프로그램 (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`
|