feat: 알림톡 발송 로그 시스템 + 현영 표시 + 문서화

- 알림톡 발송 로그: 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>
This commit is contained in:
thug0bin
2026-02-26 19:28:29 +09:00
parent 0c52542713
commit a3ff69b67f
10 changed files with 1117 additions and 82 deletions

View File

@@ -237,7 +237,7 @@ class DatabaseManager:
print(f"[DB Manager] SQLite 스키마 초기화 완료")
def _migrate_sqlite(self):
"""기존 DB에 새 컬럼 추가 (마이그레이션)"""
"""기존 DB에 새 컬럼/테이블 추가 (마이그레이션)"""
cursor = self.sqlite_conn.cursor()
cursor.execute("PRAGMA table_info(users)")
columns = [row[1] for row in cursor.fetchall()]
@@ -246,6 +246,29 @@ class DatabaseManager:
self.sqlite_conn.commit()
print("[DB Manager] SQLite 마이그레이션: users.birthday 컬럼 추가")
# alimtalk_logs 테이블 생성
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='alimtalk_logs'")
if not cursor.fetchone():
cursor.executescript("""
CREATE TABLE IF NOT EXISTS alimtalk_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
template_code VARCHAR(50) NOT NULL,
recipient_no VARCHAR(20) NOT NULL,
user_id INTEGER,
trigger_source VARCHAR(20) NOT NULL,
template_params TEXT,
success BOOLEAN NOT NULL,
result_message TEXT,
transaction_id VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE INDEX IF NOT EXISTS idx_alimtalk_created ON alimtalk_logs(created_at);
CREATE INDEX IF NOT EXISTS idx_alimtalk_recipient ON alimtalk_logs(recipient_no);
""")
self.sqlite_conn.commit()
print("[DB Manager] SQLite 마이그레이션: alimtalk_logs 테이블 생성")
def test_connection(self, database='PM_BASE'):
"""연결 테스트"""
try:

View File

@@ -80,3 +80,21 @@ CREATE TABLE IF NOT EXISTS pos_customer_links (
);
CREATE INDEX IF NOT EXISTS idx_links_cuscode ON pos_customer_links(cuscode);
-- 6. 알림톡 발송 로그 테이블
CREATE TABLE IF NOT EXISTS alimtalk_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
template_code VARCHAR(50) NOT NULL,
recipient_no VARCHAR(20) NOT NULL,
user_id INTEGER,
trigger_source VARCHAR(20) NOT NULL, -- 'kiosk', 'admin', 'manual' 등
template_params TEXT, -- JSON 문자열
success BOOLEAN NOT NULL,
result_message TEXT,
transaction_id VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE INDEX IF NOT EXISTS idx_alimtalk_created ON alimtalk_logs(created_at);
CREATE INDEX IF NOT EXISTS idx_alimtalk_recipient ON alimtalk_logs(recipient_no);