데이터베이스 구조
데이터베이스 개요
이 시스템은 두 개의 독립적인 데이터베이스를 사용합니다:
- MSSQL (PM_PRES): 기존 POS 판매 데이터
- SQLite (mileage.db): 신규 마일리지 시스템 데이터
MSSQL (기존 POS 데이터)
1. SALE_MAIN (판매 헤더)
| 컬럼명 |
타입 |
설명 |
| SL_NO_order |
VARCHAR(20) |
주문번호 (PK) |
| SL_DT_appl |
VARCHAR(8) |
판매일자 (YYYYMMDD) |
| SL_NM_custom |
VARCHAR(50) |
고객명 |
| SL_CD_custom |
VARCHAR(10) |
고객코드 |
| SL_MY_total |
DECIMAL |
총 매출액 |
| SL_MY_sale |
DECIMAL |
실 판매액 |
| InsertTime |
DATETIME |
등록시간 |
2. SALE_SUB (판매 상세)
| 컬럼명 |
타입 |
설명 |
| SL_NO_order |
VARCHAR(20) |
주문번호 (FK) |
| DrugCode |
VARCHAR(20) |
약품코드 |
| SL_NM_item |
INT |
수량 |
| SL_TOTAL_PRICE |
DECIMAL |
판매가 |
3. CD_PERSON (고객 정보)
| 컬럼명 |
타입 |
설명 |
| CUSCODE |
VARCHAR(10) |
고객코드 (PK) |
| PANAME |
VARCHAR(20) |
고객명 |
| PHONE |
VARCHAR(20) |
휴대폰 |
SQLite (신규 마일리지 데이터)
1. users (카카오 계정)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK |
| nickname |
VARCHAR(100) |
닉네임 |
| email |
VARCHAR(200) |
이메일 |
| phone |
VARCHAR(20) |
전화번호 |
| mileage_balance |
INTEGER |
마일리지 잔액 |
2. customer_identities (외부 로그인)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK |
| user_id |
INTEGER |
FK → users.id |
| provider |
VARCHAR(20) |
'kakao' |
| provider_user_id |
VARCHAR(100) |
카카오 user id |
3. claim_tokens (QR 토큰)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK |
| transaction_id |
VARCHAR(20) |
SALE_MAIN.SL_NO_order |
| token_hash |
VARCHAR(64) |
SHA256 해시 |
| claimable_points |
INTEGER |
적립 가능 포인트 |
| expires_at |
DATETIME |
만료시간 |
| claimed_at |
DATETIME |
적립 완료 시간 |
| claimed_by_user_id |
INTEGER |
FK → users.id |
4. mileage_ledger (마일리지 원장)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK |
| user_id |
INTEGER |
FK → users.id |
| transaction_id |
VARCHAR(20) |
SALE_MAIN.SL_NO_order |
| points |
INTEGER |
+ 적립, - 사용 |
| balance_after |
INTEGER |
거래 후 잔액 |
| reason |
VARCHAR(50) |
'PURCHASE_CLAIM' 등 |
5. pos_customer_links (POS 고객 연결)
| 컬럼명 |
타입 |
설명 |
| id |
INTEGER |
PK |
| user_id |
INTEGER |
FK → users.id |
| cuscode |
VARCHAR(10) |
CD_PERSON.CUSCODE |
| customer_name |
VARCHAR(50) |
고객명 |
데이터 연결 구조
MSSQL SQLite
──────────────────────────── ────────────────────────────
SALE_MAIN.SL_NO_order ────────→ claim_tokens.transaction_id
↓
mileage_ledger.transaction_id
↓
users.id
↓
CD_PERSON.CUSCODE ─────────────→ pos_customer_links.cuscode
스키마 초기화
# SQLite 데이터베이스 생성
sqlite3 backend/db/mileage.db < backend/db/mileage_schema.sql