- PyQt5 POS 판매 조회 GUI (Phase 1 완료) - Flask API 서버 스켈레톤 (Phase 2 준비) - SQLite 마일리지 DB 스키마 설계 - 프로젝트 문서 및 README 추가 - 기본 디렉터리 구조 생성 Phase 1: POS 판매 내역 조회 GUI 완료 Phase 2: QR 토큰 생성 및 마일리지 적립 (예정) Phase 3: 카카오 로그인 연동 (예정) Phase 4: 마일리지 시스템 완성 (예정) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
88 lines
1.8 KiB
Python
88 lines
1.8 KiB
Python
"""
|
|
Flask API 서버
|
|
QR 토큰 생성 및 마일리지 적립 API
|
|
"""
|
|
|
|
from flask import Flask, request, jsonify
|
|
from flask_cors import CORS
|
|
import sys
|
|
import os
|
|
|
|
# 프로젝트 루트를 Python 경로에 추가
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
app = Flask(__name__)
|
|
CORS(app)
|
|
|
|
# TODO: Phase 2에서 구현 예정
|
|
|
|
|
|
@app.route('/health', methods=['GET'])
|
|
def health_check():
|
|
"""헬스 체크 엔드포인트"""
|
|
return jsonify({
|
|
'status': 'healthy',
|
|
'message': 'Pharmacy POS QR System API'
|
|
})
|
|
|
|
|
|
@app.route('/api/claim/token/generate', methods=['POST'])
|
|
def generate_claim_token():
|
|
"""
|
|
영수증 QR 토큰 생성
|
|
|
|
Request:
|
|
{
|
|
"transaction_id": "20251024000042",
|
|
"total_amount": 50000,
|
|
"pharmacy_id": "YANGGU001"
|
|
}
|
|
|
|
Response:
|
|
{
|
|
"success": true,
|
|
"qr_url": "https://pharmacy.example.com/claim?t=...",
|
|
"claimable_points": 1500,
|
|
"expires_at": "2025-11-23T14:30:00"
|
|
}
|
|
"""
|
|
# TODO: Phase 2에서 구현
|
|
return jsonify({
|
|
'success': False,
|
|
'message': 'Not implemented yet (Phase 2)'
|
|
}), 501
|
|
|
|
|
|
@app.route('/api/claim', methods=['GET'])
|
|
def validate_claim_token():
|
|
"""
|
|
토큰 검증 및 정보 조회
|
|
|
|
Query: ?t={token}
|
|
"""
|
|
# TODO: Phase 2에서 구현
|
|
return jsonify({
|
|
'valid': False,
|
|
'error': 'not_implemented'
|
|
}), 501
|
|
|
|
|
|
@app.route('/api/claim/confirm', methods=['POST'])
|
|
def confirm_claim():
|
|
"""
|
|
마일리지 적립 실행 (로그인 후)
|
|
"""
|
|
# TODO: Phase 2에서 구현
|
|
return jsonify({
|
|
'success': False,
|
|
'message': 'Not implemented yet (Phase 2)'
|
|
}), 501
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(
|
|
host='0.0.0.0',
|
|
port=5000,
|
|
debug=True
|
|
)
|