From 009d133aef12c14b8e7de2974e84900032bd2322 Mon Sep 17 00:00:00 2001 From: thug0bin Date: Sat, 28 Feb 2026 10:46:31 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20gitignore=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=B6=94=EC=A0=81=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 ++ backend/scripts/analyze_mapping_keys.py | 82 --------------------- backend/scripts/check_animal_basecode.py | 53 -------------- backend/scripts/check_animal_codes.py | 44 ----------- backend/scripts/check_apc_added.py | 76 ------------------- backend/scripts/check_basecode.py | 64 ---------------- backend/scripts/check_basecode_stats.py | 26 ------- backend/scripts/check_basecode_usage.py | 74 ------------------- backend/scripts/check_cd_barcode.py | 71 ------------------ backend/scripts/check_king.py | 53 -------------- backend/scripts/check_multi_barcode.py | 74 ------------------- backend/scripts/check_name.py | 24 ------ backend/scripts/check_new_apc.py | 82 --------------------- backend/scripts/check_pgsql_animal_info.py | 58 --------------- backend/scripts/check_pgsql_antelmin.py | 26 ------- backend/scripts/check_pgsql_columns.py | 32 -------- backend/scripts/check_salegoods.py | 47 ------------ backend/scripts/check_table_relations.py | 80 -------------------- backend/scripts/compare_tables.py | 64 ---------------- backend/scripts/find_apc.py | 26 ------- backend/scripts/find_barcode_tables.py | 53 -------------- backend/scripts/find_recent.py | 85 ---------------------- backend/scripts/search_apc_everywhere.py | 57 --------------- backend/scripts/search_mssql.py | 30 -------- 24 files changed, 7 insertions(+), 1281 deletions(-) delete mode 100644 backend/scripts/analyze_mapping_keys.py delete mode 100644 backend/scripts/check_animal_basecode.py delete mode 100644 backend/scripts/check_animal_codes.py delete mode 100644 backend/scripts/check_apc_added.py delete mode 100644 backend/scripts/check_basecode.py delete mode 100644 backend/scripts/check_basecode_stats.py delete mode 100644 backend/scripts/check_basecode_usage.py delete mode 100644 backend/scripts/check_cd_barcode.py delete mode 100644 backend/scripts/check_king.py delete mode 100644 backend/scripts/check_multi_barcode.py delete mode 100644 backend/scripts/check_name.py delete mode 100644 backend/scripts/check_new_apc.py delete mode 100644 backend/scripts/check_pgsql_animal_info.py delete mode 100644 backend/scripts/check_pgsql_antelmin.py delete mode 100644 backend/scripts/check_pgsql_columns.py delete mode 100644 backend/scripts/check_salegoods.py delete mode 100644 backend/scripts/check_table_relations.py delete mode 100644 backend/scripts/compare_tables.py delete mode 100644 backend/scripts/find_apc.py delete mode 100644 backend/scripts/find_barcode_tables.py delete mode 100644 backend/scripts/find_recent.py delete mode 100644 backend/scripts/search_apc_everywhere.py delete mode 100644 backend/scripts/search_mssql.py diff --git a/.gitignore b/.gitignore index 31dedaa..5a90b9e 100644 --- a/.gitignore +++ b/.gitignore @@ -87,5 +87,12 @@ tmp/ *.tmp .claude/ +# Test/Debug scripts (일회성 분석용) +backend/scripts/check_*.py +backend/scripts/find_*.py +backend/scripts/search_*.py +backend/scripts/compare_*.py +backend/scripts/analyze_*.py + # GUI settings (user-specific) gui_settings.json diff --git a/backend/scripts/analyze_mapping_keys.py b/backend/scripts/analyze_mapping_keys.py deleted file mode 100644 index 3759651..0000000 --- a/backend/scripts/analyze_mapping_keys.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -""" -CD_GOODS / CD_BARCODE에서 외부 DB와 매핑 가능한 키 분석 -""" -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=' * 60) -print('=== CD_GOODS 주요 컬럼 (외부 매핑 후보) ===') -print('=' * 60) - -# CD_GOODS 샘플 -result = session.execute(text(""" - SELECT TOP 3 - DrugCode, GoodsName, BARCODE, BaseCode, - SUNG_CODE, TITLECODE, EffctCode - FROM CD_GOODS - WHERE GoodsSelCode = 'B' - ORDER BY DrugCode -""")) - -for row in result: - print(f'\nDrugCode: {row.DrugCode}') - print(f' GoodsName: {row.GoodsName}') - print(f' BARCODE: {row.BARCODE or "(없음)"}') - print(f' BaseCode: {row.BaseCode or "(없음)"}') - print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}') - print(f' TITLECODE: {row.TITLECODE or "(없음)"}') - -print('\n' + '=' * 60) -print('=== CD_BARCODE 주요 컬럼 (외부 매핑 후보) ===') -print('=' * 60) - -# CD_BARCODE 샘플 -result2 = session.execute(text(""" - SELECT TOP 3 - DRUGCODE, BARCODE, BASECODE, ETCNAME, SPLNAME, - SUNG_CODE, DIK_CODE, TITLECODE - FROM CD_BARCODE - WHERE BASECODE IS NOT NULL AND BASECODE != '' -""")) - -for row in result2: - print(f'\nDRUGCODE: {row.DRUGCODE}') - print(f' BARCODE: {row.BARCODE}') - print(f' BASECODE: {row.BASECODE}') - print(f' ETCNAME: {row.ETCNAME}') - print(f' SPLNAME: {row.SPLNAME}') - print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}') - print(f' DIK_CODE: {row.DIK_CODE or "(없음)"}') - print(f' TITLECODE: {row.TITLECODE}') - -print('\n' + '=' * 60) -print('=== 매핑 키 후보 통계 ===') -print('=' * 60) - -# 각 코드 현황 -result3 = session.execute(text(""" - SELECT - COUNT(*) as total, - SUM(CASE WHEN BARCODE IS NOT NULL AND BARCODE != '' THEN 1 ELSE 0 END) as has_barcode, - SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as has_basecode, - SUM(CASE WHEN SUNG_CODE IS NOT NULL AND SUNG_CODE != '' THEN 1 ELSE 0 END) as has_sungcode, - SUM(CASE WHEN DIK_CODE IS NOT NULL AND DIK_CODE != '' THEN 1 ELSE 0 END) as has_dikcode, - SUM(CASE WHEN TITLECODE IS NOT NULL AND TITLECODE != '' THEN 1 ELSE 0 END) as has_titlecode - FROM CD_BARCODE -""")) - -row = result3.fetchone() -print(f'\nCD_BARCODE 전체: {row.total:,}개') -print(f' BARCODE 있음: {row.has_barcode:,}개 ({row.has_barcode/row.total*100:.1f}%)') -print(f' BASECODE 있음: {row.has_basecode:,}개 ({row.has_basecode/row.total*100:.1f}%)') -print(f' SUNG_CODE 있음: {row.has_sungcode:,}개 ({row.has_sungcode/row.total*100:.1f}%)') -print(f' DIK_CODE 있음: {row.has_dikcode:,}개 ({row.has_dikcode/row.total*100:.1f}%)') -print(f' TITLECODE 있음: {row.has_titlecode:,}개 ({row.has_titlecode/row.total*100:.1f}%)') - -session.close() diff --git a/backend/scripts/check_animal_basecode.py b/backend/scripts/check_animal_basecode.py deleted file mode 100644 index 36f3065..0000000 --- a/backend/scripts/check_animal_basecode.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -# 동물약(POS_BOON='010103')을 CD_BARCODE와 JOIN해서 BASECODE 찾기 -print('=== 동물약 BASECODE 조회 (CD_GOODS + CD_BARCODE JOIN) ===\n') - -result = session.execute(text(""" - SELECT - g.DrugCode, - g.GoodsName, - g.BARCODE as goods_barcode, - b.BARCODE as std_barcode, - b.BASECODE, - b.SUNG_CODE, - b.DIK_CODE, - b.ETCNAME - FROM CD_GOODS g - LEFT JOIN CD_BARCODE b ON g.DrugCode = b.DRUGCODE - WHERE g.POS_BOON = '010103' AND g.GoodsSelCode = 'B' - ORDER BY g.GoodsName -""")) - -found = 0 -not_found = 0 - -for row in result: - if row.BASECODE: - found += 1 - mark = '[O]' - else: - not_found += 1 - mark = '[X]' - - print(f'{mark} {row.GoodsName}') - print(f' DrugCode: {row.DrugCode}') - print(f' CD_GOODS.BARCODE: {row.goods_barcode or "(없음)"}') - if row.BASECODE: - print(f' CD_BARCODE.BARCODE: {row.std_barcode}') - print(f' BASECODE: {row.BASECODE}') - print(f' SUNG_CODE: {row.SUNG_CODE}') - print() - -print('---') -print(f'CD_BARCODE에서 찾음: {found}개') -print(f'CD_BARCODE에 없음: {not_found}개') - -session.close() diff --git a/backend/scripts/check_animal_codes.py b/backend/scripts/check_animal_codes.py deleted file mode 100644 index 6b124ec..0000000 --- a/backend/scripts/check_animal_codes.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE, BaseCode - FROM CD_GOODS - WHERE POS_BOON = '010103' AND GoodsSelCode = 'B' - ORDER BY GoodsName -""")) - -print('=== 동물약 바코드/표준코드 현황 ===\n') - -barcode_count = 0 -basecode_count = 0 -total = 0 - -for row in result: - barcode = row.BARCODE.strip() if row.BARCODE else '' - basecode = row.BaseCode.strip() if row.BaseCode else '' - - if barcode: barcode_count += 1 - if basecode: basecode_count += 1 - total += 1 - - b_mark = 'O' if barcode else 'X' - c_mark = 'O' if basecode else 'X' - print(f'{row.GoodsName}') - print(f' DrugCode: {row.DrugCode}') - print(f' Barcode: {b_mark} [{barcode}]') - print(f' BaseCode: {c_mark} [{basecode}]') - print() - -print('---') -print(f'Total: {total}개') -print(f'With Barcode: {barcode_count}개') -print(f'With BaseCode: {basecode_count}개') - -session.close() diff --git a/backend/scripts/check_apc_added.py b/backend/scripts/check_apc_added.py deleted file mode 100644 index c15bce9..0000000 --- a/backend/scripts/check_apc_added.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=' * 60) -print('=== 1. CD_GOODS 테이블 확인 (안텔민뽀삐) ===') -print('=' * 60) - -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE, BaseCode - FROM CD_GOODS - WHERE DrugCode = 'LB000003158' -""")) - -for row in result: - print(f'DrugCode: {row.DrugCode}') - print(f'GoodsName: {row.GoodsName}') - print(f'BARCODE: {row.BARCODE or "(없음)"}') - print(f'BaseCode: {row.BaseCode or "(없음)"}') - -print() -print('=' * 60) -print('=== 2. CD_BARCODE 테이블 확인 (DrugCode로 검색) ===') -print('=' * 60) - -result2 = session.execute(text(""" - SELECT * - FROM CD_BARCODE - WHERE DRUGCODE = 'LB000003158' -""")) - -columns = result2.keys() -rows = list(result2) - -if rows: - for row in rows: - print(f'\n--- 바코드 레코드 ---') - for col in columns: - val = getattr(row, col) - if val: - print(f' {col}: {val}') -else: - print('(CD_BARCODE에 레코드 없음)') - -print() -print('=' * 60) -print('=== 3. CD_BARCODE에서 APC로 직접 검색 ===') -print('=' * 60) - -result3 = session.execute(text(""" - SELECT * - FROM CD_BARCODE - WHERE BARCODE = '0230237010107' - OR BASECODE = '0230237010107' - OR TITLECODE = '0230237010107' -""")) - -rows3 = list(result3) -if rows3: - for row in rows3: - print(f'\n--- APC로 찾은 레코드 ---') - for col in columns: - val = getattr(row, col) - if val: - print(f' {col}: {val}') -else: - print('(APC로 검색된 레코드 없음)') - -session.close() diff --git a/backend/scripts/check_basecode.py b/backend/scripts/check_basecode.py deleted file mode 100644 index 8faa922..0000000 --- a/backend/scripts/check_basecode.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -# 1. BaseCode가 있는 제품 수 확인 -result = session.execute(text(""" - SELECT - COUNT(*) as total, - SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode - FROM CD_GOODS - WHERE GoodsSelCode = 'B' -""")) -row = result.fetchone() -print(f'=== BaseCode 사용 현황 ===') -print(f'판매중 전체 제품: {row.total}개') -print(f'BaseCode 있는 제품: {row.with_basecode}개') -print() - -# 2. BaseCode가 있는 제품 샘플 (최대 20개) -result2 = session.execute(text(""" - SELECT TOP 20 DrugCode, GoodsName, BaseCode, POS_BOON - FROM CD_GOODS - WHERE GoodsSelCode = 'B' - AND BaseCode IS NOT NULL - AND BaseCode != '' - ORDER BY GoodsName -""")) - -print('=== BaseCode 있는 제품 샘플 ===') -count = 0 -for row in result2: - count += 1 - print(f'{row.GoodsName}') - print(f' DrugCode: {row.DrugCode}') - print(f' BaseCode: {row.BaseCode}') - print(f' 분류: {row.POS_BOON}') - print() - -if count == 0: - print('(BaseCode가 있는 제품이 없습니다)') - -# 3. 분류별 BaseCode 사용 현황 -print('=== 분류(POS_BOON)별 BaseCode 현황 ===') -result3 = session.execute(text(""" - SELECT - POS_BOON, - COUNT(*) as total, - SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode - FROM CD_GOODS - WHERE GoodsSelCode = 'B' - GROUP BY POS_BOON - HAVING SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) > 0 - ORDER BY with_basecode DESC -""")) - -for row in result3: - print(f'분류 {row.POS_BOON}: {row.with_basecode}/{row.total}개') - -session.close() diff --git a/backend/scripts/check_basecode_stats.py b/backend/scripts/check_basecode_stats.py deleted file mode 100644 index 8032646..0000000 --- a/backend/scripts/check_basecode_stats.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -result = session.execute(text(""" - SELECT - COUNT(*) as total, - SUM(CASE WHEN BASECODE IS NULL THEN 1 ELSE 0 END) as null_count, - SUM(CASE WHEN BASECODE = '' THEN 1 ELSE 0 END) as empty_count, - SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as has_value - FROM CD_BARCODE -""")) - -row = result.fetchone() -print('=== CD_BARCODE.BASECODE 현황 ===') -print(f'전체: {row.total:,}개') -print(f'NULL: {row.null_count:,}개') -print(f'빈문자열: {row.empty_count:,}개') -print(f'값 있음: {row.has_value:,}개 ({row.has_value/row.total*100:.1f}%)') - -session.close() diff --git a/backend/scripts/check_basecode_usage.py b/backend/scripts/check_basecode_usage.py deleted file mode 100644 index 1cdb296..0000000 --- a/backend/scripts/check_basecode_usage.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -# PM_DRUG, PM_PRES, PM_BASE 모든 DB 확인 -databases = ['PM_DRUG', 'PM_PRES', 'PM_BASE'] - -for db_name in databases: - print(f'\n{"="*50}') - print(f'=== {db_name} 데이터베이스 ===') - print(f'{"="*50}') - - try: - session = get_db_session(db_name) - - # 1. BaseCode 컬럼이 있는 테이블 찾기 - result = session.execute(text(""" - SELECT TABLE_NAME, COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE COLUMN_NAME LIKE '%BaseCode%' - OR COLUMN_NAME LIKE '%BASECODE%' - OR COLUMN_NAME LIKE '%basecode%' - ORDER BY TABLE_NAME - """)) - - tables = list(result) - if tables: - print(f'\nBaseCode 관련 컬럼 발견:') - for row in tables: - print(f' - {row.TABLE_NAME}.{row.COLUMN_NAME}') - else: - print(f'\nBaseCode 관련 컬럼 없음') - - # 2. 표준코드 관련 컬럼 찾기 (Stand, Standard 등) - result2 = session.execute(text(""" - SELECT TABLE_NAME, COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE COLUMN_NAME LIKE '%Stand%' - OR COLUMN_NAME LIKE '%Standard%' - OR COLUMN_NAME LIKE '%KD%' - ORDER BY TABLE_NAME - """)) - - tables2 = list(result2) - if tables2: - print(f'\n표준코드 관련 컬럼:') - for row in tables2: - print(f' - {row.TABLE_NAME}.{row.COLUMN_NAME}') - - session.close() - - except Exception as e: - print(f'Error: {e}') - -# 3. CD_GOODS의 BaseCode가 실제로 어떤 값인지 상위 10개 확인 -print(f'\n{"="*50}') -print('=== CD_GOODS.BaseCode 샘플 데이터 ===') -print(f'{"="*50}') - -session = get_db_session('PM_DRUG') -result = session.execute(text(""" - SELECT TOP 10 DrugCode, GoodsName, BaseCode - FROM CD_GOODS - ORDER BY DrugCode -""")) - -for row in result: - bc = row.BaseCode if row.BaseCode else '(NULL/빈값)' - print(f'{row.DrugCode}: BaseCode=[{bc}]') - -session.close() diff --git a/backend/scripts/check_cd_barcode.py b/backend/scripts/check_cd_barcode.py deleted file mode 100644 index 7733c4b..0000000 --- a/backend/scripts/check_cd_barcode.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -# 1. CD_BARCODE 테이블 구조 -print('=== CD_BARCODE 테이블 구조 ===') -result = session.execute(text(""" - SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'CD_BARCODE' - ORDER BY ORDINAL_POSITION -""")) -for row in result: - print(f' {row.COLUMN_NAME} ({row.DATA_TYPE})') - -# 2. CD_BARCODE 데이터 샘플 -print('\n=== CD_BARCODE 샘플 데이터 (BASECODE 있는 것) ===') -result2 = session.execute(text(""" - SELECT TOP 20 * - FROM CD_BARCODE - WHERE BASECODE IS NOT NULL AND BASECODE != '' -""")) - -columns = result2.keys() -print(f'컬럼: {list(columns)}') -print() - -count = 0 -for row in result2: - count += 1 - print(f'--- Row {count} ---') - for col in columns: - val = getattr(row, col) - if val: - print(f' {col}: {val}') - -if count == 0: - print('(BASECODE가 있는 레코드 없음)') - - # BASECODE 없어도 샘플 보기 - print('\n=== CD_BARCODE 전체 샘플 (상위 5개) ===') - result3 = session.execute(text(""" - SELECT TOP 5 * - FROM CD_BARCODE - """)) - for row in result3: - print(f'---') - for col in columns: - val = getattr(row, col) - print(f' {col}: {val}') - -# 3. CD_BARCODE 전체 레코드 수 -print('\n=== CD_BARCODE 통계 ===') -result4 = session.execute(text(""" - SELECT - COUNT(*) as total, - SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as with_basecode, - SUM(CASE WHEN DSTANDARD IS NOT NULL AND DSTANDARD != '' THEN 1 ELSE 0 END) as with_dstandard - FROM CD_BARCODE -""")) -row = result4.fetchone() -print(f'전체 레코드: {row.total}개') -print(f'BASECODE 있음: {row.with_basecode}개') -print(f'DSTANDARD 있음: {row.with_dstandard}개') - -session.close() diff --git a/backend/scripts/check_king.py b/backend/scripts/check_king.py deleted file mode 100644 index 0edfa77..0000000 --- a/backend/scripts/check_king.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== CD_GOODS (안텔민킹 - LB000003157) ===') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE, BaseCode - FROM CD_GOODS - WHERE DrugCode = 'LB000003157' -""")) - -for row in result: - print(f'DrugCode: {row.DrugCode}') - print(f'GoodsName: {row.GoodsName}') - print(f'BARCODE: [{row.BARCODE}]') - print(f'BaseCode: [{row.BaseCode}]') - -print('\n=== CD_BARCODE (DrugCode = LB000003157) ===') -result2 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, BASECODE, TITLECODE, ETCNAME - FROM CD_BARCODE - WHERE DRUGCODE = 'LB000003157' -""")) - -for row in result2: - print(f'DRUGCODE: {row.DRUGCODE}') - print(f'BARCODE: {row.BARCODE}') - print(f'BASECODE: {row.BASECODE}') - print(f'TITLECODE: {row.TITLECODE}') - print(f'ETCNAME: {row.ETCNAME}') - -print('\n=== APC로 직접 검색 ===') -result3 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME - FROM CD_BARCODE - WHERE BARCODE = '0230237010107' -""")) - -rows = list(result3) -if rows: - for row in rows: - print(f'★ 발견! DRUGCODE: {row.DRUGCODE}, BARCODE: {row.BARCODE}') -else: - print('(APC로 검색 안됨)') - -session.close() diff --git a/backend/scripts/check_multi_barcode.py b/backend/scripts/check_multi_barcode.py deleted file mode 100644 index 0d911a3..0000000 --- a/backend/scripts/check_multi_barcode.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== 안텔민킹 (LB000003157) 바코드 전체 조회 ===\n') - -# 1. CD_SALEGOODS에서 같은 DrugCode로 여러 행? -print('1. CD_SALEGOODS (DrugCode = LB000003157):') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_SALEGOODS - WHERE DrugCode = 'LB000003157' -""")) -for row in result: - print(f' {row.BARCODE}') - -# 2. 바코드 전용 테이블이 따로 있나? -print('\n2. 바코드 관련 테이블에서 LB000003157 검색:') - -tables = [ - 'CD_BARCODE', - 'CD_Bundle', - 'CD_ITEM_UNIT_MEMBER', - 'CD_NameTag', - 'BI_DRUG_MAPPING', - 'PharmBridgeMapping' -] - -for tbl in tables: - try: - result = session.execute(text(f""" - SELECT * FROM {tbl} - WHERE DrugCode = 'LB000003157' OR DRUGCODE = 'LB000003157' - """)) - rows = list(result) - if rows: - print(f'\n ★ {tbl}: {len(rows)}개 발견!') - for row in rows: - print(f' {dict(row._mapping)}') - except: - pass - -# 3. 바코드 값으로 역검색 (APC) -print('\n3. APC 0230237810109 검색 (전체 테이블):') -apc = '0230237810109' - -for tbl in ['CD_GOODS', 'CD_SALEGOODS', 'CD_BARCODE', 'CD_Bundle', 'BI_DRUG_MAPPING', 'PharmBridgeMapping']: - try: - # 바코드 관련 컬럼 찾기 - cols = session.execute(text(f""" - SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = '{tbl}' AND COLUMN_NAME LIKE '%BARCODE%' - """)) - for col_row in cols: - col = col_row.COLUMN_NAME - result = session.execute(text(f""" - SELECT * FROM {tbl} WHERE {col} = '{apc}' - """)) - rows = list(result) - if rows: - print(f' ★ {tbl}.{col}: {len(rows)}개!') - for row in rows: - print(f' {dict(row._mapping)}') - except Exception as e: - pass - -session.close() diff --git a/backend/scripts/check_name.py b/backend/scripts/check_name.py deleted file mode 100644 index 99375dd..0000000 --- a/backend/scripts/check_name.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') -result = session.execute(text(""" - SELECT DrugCode, GoodsName - FROM CD_GOODS - WHERE DrugCode = 'LB000003158' -""")) - -row = result.fetchone() -name = row.GoodsName -print('GoodsName:', name) -print('repr:', repr(name)) - -# 각 글자 확인 -for i, char in enumerate(name): - print(f' [{i}] {char} = U+{ord(char):04X}') - -session.close() diff --git a/backend/scripts/check_new_apc.py b/backend/scripts/check_new_apc.py deleted file mode 100644 index cb8852b..0000000 --- a/backend/scripts/check_new_apc.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -apc = '0230237810109' - -print(f'=== APC "{apc}" 검색 ===\n') - -# 1. CD_GOODS에서 안텔민킹 확인 -print('1. CD_GOODS (안텔민킹):') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE, BaseCode - FROM CD_GOODS - WHERE DrugCode = 'LB000003157' -""")) -for row in result: - print(f' BARCODE: [{row.BARCODE}]') - -# 2. CD_BARCODE에서 DRUGCODE로 검색 -print('\n2. CD_BARCODE (DRUGCODE=LB000003157):') -result2 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME - FROM CD_BARCODE - WHERE DRUGCODE = 'LB000003157' -""")) -rows = list(result2) -if rows: - for row in rows: - print(f' BARCODE: {row.BARCODE}, BASECODE: {row.BASECODE}') -else: - print(' (없음)') - -# 3. CD_BARCODE에서 APC 직접 검색 -print(f'\n3. CD_BARCODE에서 BARCODE="{apc}":') -result3 = session.execute(text(f""" - SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME - FROM CD_BARCODE - WHERE BARCODE = '{apc}' -""")) -rows = list(result3) -if rows: - for row in rows: - print(f' ★ 발견! DRUGCODE: {row.DRUGCODE}') -else: - print(' (없음)') - -# 4. CD_GOODS에서 BARCODE로 검색 -print(f'\n4. CD_GOODS에서 BARCODE="{apc}":') -result4 = session.execute(text(f""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE BARCODE = '{apc}' -""")) -rows = list(result4) -if rows: - for row in rows: - print(f' ★ 발견! {row.DrugCode}: {row.GoodsName}') -else: - print(' (없음)') - -# 5. 전체 DB에서 LIKE 검색 -print(f'\n5. 전체 LIKE 검색:') -result5 = session.execute(text(f""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE BARCODE LIKE '%{apc}%' -""")) -rows = list(result5) -if rows: - for row in rows: - print(f' ★ {row.DrugCode}: BARCODE=[{row.BARCODE}]') -else: - print(' (없음)') - -session.close() diff --git a/backend/scripts/check_pgsql_animal_info.py b/backend/scripts/check_pgsql_animal_info.py deleted file mode 100644 index 1cbe1d2..0000000 --- a/backend/scripts/check_pgsql_animal_info.py +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('anipharmacopeia') - -# 안텔민킹 APC로 검색 -apc = '0230237810109' - -print(f'=== PostgreSQL에서 APC {apc} 조회 ===\n') - -# anipharmacopeia 테이블 확인 -result = session.execute(text(""" - SELECT * FROM anipharmacopeia - WHERE apc = :apc -"""), {'apc': apc}) - -row = result.fetchone() -if row: - print('★ 발견!\n') - cols = result.keys() - for col in cols: - val = getattr(row, col) - if val: - print(f' {col}: {val}') -else: - print('(없음)') - -# 개/고양이 관련 컬럼 확인 -print('\n=== 개/고양이 관련 컬럼 확인 ===\n') -result2 = session.execute(text(""" - SELECT column_name, data_type - FROM information_schema.columns - WHERE table_name = 'anipharmacopeia' - AND (column_name LIKE '%dog%' OR column_name LIKE '%cat%' - OR column_name LIKE '%canine%' OR column_name LIKE '%feline%' - OR column_name LIKE '%animal%' OR column_name LIKE '%species%' - OR column_name LIKE '%target%' OR column_name LIKE '%use%') -""")) -for r in result2: - print(f' {r.column_name}: {r.data_type}') - -# 전체 컬럼 목록 -print('\n=== 전체 컬럼 목록 ===\n') -result3 = session.execute(text(""" - SELECT column_name FROM information_schema.columns - WHERE table_name = 'anipharmacopeia' - ORDER BY ordinal_position -""")) -for r in result3: - print(f' {r.column_name}') - -session.close() diff --git a/backend/scripts/check_pgsql_antelmin.py b/backend/scripts/check_pgsql_antelmin.py deleted file mode 100644 index c360cb1..0000000 --- a/backend/scripts/check_pgsql_antelmin.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from sqlalchemy import create_engine, text - -conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect() - -# 안텔민 전체 - 유니코드 확인 -result = conn.execute(text(""" - SELECT apc, product_name - FROM apc - WHERE product_name ILIKE '%안텔민%' - ORDER BY product_name -""")) - -print('=== PostgreSQL 안텔민 전체 (유니코드 확인) ===\n') -for row in result: - name = row.product_name - print(f'APC: {row.apc}') - print(f'Name: {name}') - - # "사" 또는 "뽀" 글자 찾아서 유니코드 확인 - for i, c in enumerate(name): - if c in ['사', '뽀', '삐', '킹']: - print(f' [{i}] "{c}" = U+{ord(c):04X}') - print() - -conn.close() diff --git a/backend/scripts/check_pgsql_columns.py b/backend/scripts/check_pgsql_columns.py deleted file mode 100644 index 7f2c934..0000000 --- a/backend/scripts/check_pgsql_columns.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') - -from sqlalchemy import create_engine, text - -conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect() - -print('=== apc 테이블 전체 컬럼 ===\n') -result = conn.execute(text(""" - SELECT column_name, data_type - FROM information_schema.columns - WHERE table_name = 'apc' - ORDER BY ordinal_position -""")) -for r in result: - print(f' {r.column_name}: {r.data_type}') - -# 안텔민킹 전체 데이터 -apc_code = '0230237810109' -print(f'\n=== 안텔민킹 ({apc_code}) 전체 데이터 ===\n') -result2 = conn.execute(text(f"SELECT * FROM apc WHERE apc = '{apc_code}'")) -row = result2.fetchone() -if row: - cols = result2.keys() - for col in cols: - val = getattr(row, col) - if val: - print(f' {col}: {val}') - -conn.close() diff --git a/backend/scripts/check_salegoods.py b/backend/scripts/check_salegoods.py deleted file mode 100644 index 8af34b8..0000000 --- a/backend/scripts/check_salegoods.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== CD_SALEGOODS 테이블 구조 ===\n') -result = session.execute(text(""" - SELECT COLUMN_NAME, DATA_TYPE - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'CD_SALEGOODS' - ORDER BY ORDINAL_POSITION -""")) -for row in result: - print(f' {row.COLUMN_NAME}: {row.DATA_TYPE}') - -print('\n=== CD_SALEGOODS에서 안텔민 검색 ===\n') -result2 = session.execute(text(""" - SELECT * - FROM CD_SALEGOODS - WHERE DrugCode LIKE 'LB00000315%' OR BARCODE LIKE '0230237%' -""")) - -rows = list(result2) -if rows: - for row in rows: - print(f'★ 발견!') - print(f' {dict(row._mapping)}') -else: - print('(없음)') - -print('\n=== CD_SALEGOODS 최근 데이터 (상위 10개) ===\n') -result3 = session.execute(text(""" - SELECT TOP 10 * - FROM CD_SALEGOODS - ORDER BY DrugCode DESC -""")) - -for row in result3: - print(dict(row._mapping)) - -session.close() diff --git a/backend/scripts/check_table_relations.py b/backend/scripts/check_table_relations.py deleted file mode 100644 index c90a913..0000000 --- a/backend/scripts/check_table_relations.py +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== CD_ITEM_UNIT_MEMBER 테이블 구조 ===\n') -result = session.execute(text(""" - SELECT COLUMN_NAME, DATA_TYPE - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'CD_ITEM_UNIT_MEMBER' - ORDER BY ORDINAL_POSITION -""")) -for row in result: - print(f' {row.COLUMN_NAME}: {row.DATA_TYPE}') - -print('\n=== 관계 확인: 안텔민킹 ===\n') - -# CD_GOODS -print('1. CD_GOODS:') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS WHERE DrugCode = 'LB000003157' -""")) -for row in result: - print(f' DrugCode: {row.DrugCode}') - print(f' GoodsName: {row.GoodsName}') - print(f' BARCODE: [{row.BARCODE}]') - -# CD_SALEGOODS -print('\n2. CD_SALEGOODS:') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_SALEGOODS WHERE DrugCode = 'LB000003157' -""")) -for row in result: - print(f' DrugCode: {row.DrugCode}') - print(f' BARCODE: [{row.BARCODE}]') - -# CD_ITEM_UNIT_MEMBER -print('\n3. CD_ITEM_UNIT_MEMBER:') -result = session.execute(text(""" - SELECT DRUGCODE, CD_CD_UNIT, CD_CD_BARCODE, CHANGE_DATE - FROM CD_ITEM_UNIT_MEMBER - WHERE DRUGCODE = 'LB000003157' - ORDER BY SN DESC -""")) -for row in result: - print(f' DRUGCODE: {row.DRUGCODE} | UNIT: {row.CD_CD_UNIT} | BARCODE: {row.CD_CD_BARCODE} | DATE: {row.CHANGE_DATE}') - -# CD_SALEGOODS.BARCODE 와 CD_ITEM_UNIT_MEMBER.CD_CD_BARCODE 비교 -print('\n=== 다른 제품으로 관계 확인 (안텔민) ===\n') -result = session.execute(text(""" - SELECT - g.DrugCode, - g.GoodsName, - s.BARCODE as SALE_BARCODE, - u.CD_CD_BARCODE as UNIT_BARCODE, - u.CD_CD_UNIT - FROM CD_GOODS g - LEFT JOIN CD_SALEGOODS s ON g.DrugCode = s.DrugCode - LEFT JOIN CD_ITEM_UNIT_MEMBER u ON g.DrugCode = u.DRUGCODE - WHERE g.GoodsName LIKE N'%안텔민%' - ORDER BY g.DrugCode, u.SN DESC -""")) - -current_drug = None -for row in result: - if row.DrugCode != current_drug: - print(f'\n{row.DrugCode}: {row.GoodsName}') - print(f' CD_SALEGOODS.BARCODE: {row.SALE_BARCODE}') - current_drug = row.DrugCode - print(f' └ CD_ITEM_UNIT_MEMBER: {row.UNIT_BARCODE} (UNIT: {row.CD_CD_UNIT})') - -session.close() diff --git a/backend/scripts/compare_tables.py b/backend/scripts/compare_tables.py deleted file mode 100644 index aae6e19..0000000 --- a/backend/scripts/compare_tables.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== 테이블별 레코드 수 ===\n') - -tables = ['CD_GOODS', 'CD_SALEGOODS', 'CD_BARCODE'] -for tbl in tables: - result = session.execute(text(f"SELECT COUNT(*) as cnt FROM {tbl}")) - cnt = result.fetchone().cnt - print(f'{tbl}: {cnt:,}개') - -print('\n=== 안텔민 비교 (CD_GOODS vs CD_SALEGOODS) ===\n') - -# CD_GOODS -print('CD_GOODS:') -result = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE GoodsName LIKE N'%안텔민%' -""")) -for row in result: - print(f' {row.DrugCode}: {row.GoodsName} | BARCODE: [{row.BARCODE}]') - -# CD_SALEGOODS -print('\nCD_SALEGOODS:') -result2 = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_SALEGOODS - WHERE GoodsName LIKE N'%안텔민%' -""")) -for row in result2: - print(f' {row.DrugCode}: {row.GoodsName} | BARCODE: [{row.BARCODE}]') - -# CD_BARCODE -print('\nCD_BARCODE (안텔민 관련):') -result3 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, ETCNAME - FROM CD_BARCODE - WHERE ETCNAME LIKE N'%안텔민%' -""")) -rows = list(result3) -if rows: - for row in rows: - print(f' {row.DRUGCODE}: {row.ETCNAME} | BARCODE: [{row.BARCODE}]') -else: - print(' (없음 - 동물약은 CD_BARCODE에 없음)') - -print('\n=== CD_BARCODE는 어떤 용도? (샘플) ===\n') -result4 = session.execute(text(""" - SELECT TOP 5 DRUGCODE, BARCODE, ETCNAME, CL_GUBUN - FROM CD_BARCODE -""")) -for row in result4: - print(f' {row.DRUGCODE}: {row.ETCNAME} | {row.CL_GUBUN}') - -session.close() diff --git a/backend/scripts/find_apc.py b/backend/scripts/find_apc.py deleted file mode 100644 index 434824f..0000000 --- a/backend/scripts/find_apc.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') - -from sqlalchemy import create_engine, text - -conn = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect() - -# 안텔민 뽀삐 10정 검색 -result = conn.execute(text(""" - SELECT apc, product_name, image_url1, godoimage_url_f - FROM apc - WHERE product_name ILIKE '%안텔민%뽀삐%' - AND product_name ILIKE '%10 정%' -""")) - -print('=== 안텔민 뽀삐 정 10정 APC ===\n') -for row in result: - print(f'★ APC: {row.apc}') - print(f' 제품명: {row.product_name}') - print(f' 이미지: {row.image_url1}') - print(f' 고도몰: {row.godoimage_url_f}') - print() - -conn.close() diff --git a/backend/scripts/find_barcode_tables.py b/backend/scripts/find_barcode_tables.py deleted file mode 100644 index b6dd66c..0000000 --- a/backend/scripts/find_barcode_tables.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=== PM_DRUG 전체 테이블 목록 ===\n') - -result = session.execute(text(""" - SELECT TABLE_NAME - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_TYPE = 'BASE TABLE' - ORDER BY TABLE_NAME -""")) - -for row in result: - print(row.TABLE_NAME) - -print('\n=== BARCODE 관련 컬럼이 있는 테이블 ===\n') - -result2 = session.execute(text(""" - SELECT TABLE_NAME, COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE COLUMN_NAME LIKE '%BARCODE%' OR COLUMN_NAME LIKE '%BAR%' - ORDER BY TABLE_NAME -""")) - -for row in result2: - print(f'{row.TABLE_NAME}.{row.COLUMN_NAME}') - -print('\n=== LB000003157 이 들어있는 테이블 찾기 ===\n') - -# 주요 테이블들에서 검색 -tables_to_check = ['CD_GOODS', 'CD_BARCODE', 'CD_ETCGOODS', 'TEMP_ETCGOODS'] - -for tbl in tables_to_check: - try: - result = session.execute(text(f""" - SELECT TOP 1 * FROM {tbl} WHERE DrugCode = 'LB000003157' OR DRUGCODE = 'LB000003157' - """)) - row = result.fetchone() - if row: - print(f'★ {tbl}: 발견!') - print(f' {dict(row._mapping)}') - except Exception as e: - pass - -session.close() diff --git a/backend/scripts/find_recent.py b/backend/scripts/find_recent.py deleted file mode 100644 index 5669b82..0000000 --- a/backend/scripts/find_recent.py +++ /dev/null @@ -1,85 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -session = get_db_session('PM_DRUG') - -print('=' * 60) -print('=== 1. CD_BARCODE 최근 추가된 행 (상위 20개) ===') -print('=' * 60) - -# ACTDATE가 최근인 것들 -result = session.execute(text(""" - SELECT TOP 20 DRUGCODE, BARCODE, BASECODE, ETCNAME, ACTDATE - FROM CD_BARCODE - ORDER BY ACTDATE DESC -""")) - -for row in result: - print(f'{row.ACTDATE} | {row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}') - -print('\n' + '=' * 60) -print('=== 2. CD_BARCODE에서 "안텔민" 포함 (ETCNAME) ===') -print('=' * 60) - -result2 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, BASECODE, ETCNAME - FROM CD_BARCODE - WHERE ETCNAME LIKE N'%안텔민%' -""")) - -rows = list(result2) -if rows: - for row in rows: - print(f'{row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}') -else: - print('(없음)') - -print('\n' + '=' * 60) -print('=== 3. CD_GOODS에서 안텔민 BARCODE 확인 ===') -print('=' * 60) - -result3 = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE GoodsName LIKE N'%안텔민%' -""")) - -for row in result3: - print(f'{row.DrugCode} | {row.GoodsName} | BARCODE: [{row.BARCODE}]') - -print('\n' + '=' * 60) -print('=== 4. 0230237 로 시작하는 바코드 검색 ===') -print('=' * 60) - -result4 = session.execute(text(""" - SELECT DRUGCODE, BARCODE, ETCNAME - FROM CD_BARCODE - WHERE BARCODE LIKE '0230237%' -""")) - -rows = list(result4) -if rows: - for row in rows: - print(f'{row.DRUGCODE} | {row.BARCODE} | {row.ETCNAME}') -else: - print('(없음)') - -# CD_GOODS에서도 -result5 = session.execute(text(""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE BARCODE LIKE '0230237%' -""")) - -rows = list(result5) -if rows: - for row in rows: - print(f'{row.DrugCode} | {row.GoodsName} | {row.BARCODE}') - -session.close() diff --git a/backend/scripts/search_apc_everywhere.py b/backend/scripts/search_apc_everywhere.py deleted file mode 100644 index 5169946..0000000 --- a/backend/scripts/search_apc_everywhere.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -apc = '0230237010107' - -for db_name in ['PM_DRUG', 'PM_PRES', 'PM_BASE']: - print(f'\n{"="*60}') - print(f'=== {db_name} 데이터베이스에서 "{apc}" 검색 ===') - print(f'{"="*60}') - - try: - session = get_db_session(db_name) - - # 모든 테이블에서 해당 값 검색 - tables = session.execute(text(""" - SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_TYPE = 'BASE TABLE' - """)) - - for table_row in tables: - table_name = table_row.TABLE_NAME - - # 각 테이블의 문자열 컬럼에서 검색 - try: - columns = session.execute(text(f""" - SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = '{table_name}' - AND DATA_TYPE IN ('varchar', 'nvarchar', 'char', 'nchar', 'text') - """)) - - for col_row in columns: - col_name = col_row.COLUMN_NAME - try: - result = session.execute(text(f""" - SELECT TOP 1 * FROM [{table_name}] - WHERE [{col_name}] = '{apc}' - """)) - row = result.fetchone() - if row: - print(f'\n★ 발견! {table_name}.{col_name}') - print(f' 레코드: {dict(row._mapping)}') - except: - pass - except: - pass - - session.close() - except Exception as e: - print(f'Error: {e}') - -print('\n검색 완료!') diff --git a/backend/scripts/search_mssql.py b/backend/scripts/search_mssql.py deleted file mode 100644 index 0214f55..0000000 --- a/backend/scripts/search_mssql.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import io - -# ═══════════════════════════════════════════════════════════ -# 인코딩 설정 (Windows CP949 문제 방지) -# ═══════════════════════════════════════════════════════════ -sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') -sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') - -sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend') - -from db.dbsetup import get_db_session -from sqlalchemy import text - -keyword = sys.argv[1] if len(sys.argv) > 1 else '안텔민' - -session = get_db_session('PM_DRUG') -result = session.execute(text(f""" - SELECT DrugCode, GoodsName, BARCODE - FROM CD_GOODS - WHERE GoodsName LIKE N'%{keyword}%' -""")) - -print(f'=== MSSQL "{keyword}" 검색 ===') -for row in result: - bc = row.BARCODE if row.BARCODE else '(없음)' - print(f'{row.DrugCode}: {row.GoodsName} | 바코드: {bc}') - -session.close()