feat: 동물약 APC 일괄 매핑 (7개 완료)
This commit is contained in:
45
backend/scripts/detailed_search.py
Normal file
45
backend/scripts/detailed_search.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys, io
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
pg = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect()
|
||||
|
||||
# 약국 제품 → PostgreSQL 매칭 (체중/용량 포함)
|
||||
mappings = [
|
||||
# (약국제품명, 검색키워드)
|
||||
('제스타제(10정)', '제스타제', '10'),
|
||||
('파라캅L(5kg이상)', '파라캅', 'L'),
|
||||
('파라캅S(5kg이하)', '파라캅', 'S'),
|
||||
('하트캅츄어블(11kg이하)', '하트캅', '11'),
|
||||
('넥스가드L(15~30kg)', '넥스가드', '15'),
|
||||
('넥스가드xs(2~3.5kg)', '넥스가드', '2'),
|
||||
('다이로하트정M(12~22kg)', '다이로하트', '12'),
|
||||
('다이로하트정S(5.6~11kg)', '다이로하트', '5.6'),
|
||||
('다이로하트정SS(5.6kg이하)', '다이로하트', 'SS'),
|
||||
('세레니아정16mg(개멀미약)', '세레니아', '16'),
|
||||
('세레니아정24mg(개멀미약)', '세레니아', '24'),
|
||||
('하트세이버츄어블M(12~22kg)', '하트세이버', '12'),
|
||||
('하트세이버츄어블S(5.6~11kg)', '하트세이버', '5.6'),
|
||||
('하트웜솔루션츄어블M(12~22kg)', '하트웜', '12'),
|
||||
('하트웜솔루션츄어블S(11kg이하)', '하트웜', '11'),
|
||||
]
|
||||
|
||||
print('=== 상세 매칭 검색 ===\n')
|
||||
|
||||
for pharm_name, keyword, size in mappings:
|
||||
result = pg.execute(text("""
|
||||
SELECT apc, product_name, packaging,
|
||||
llm_pharm->>'사용가능 동물' as target
|
||||
FROM apc
|
||||
WHERE product_name ILIKE :kw
|
||||
ORDER BY product_name
|
||||
LIMIT 10
|
||||
"""), {'kw': f'%{keyword}%'})
|
||||
|
||||
print(f'\n📦 {pharm_name} (검색: {keyword}, 사이즈: {size})')
|
||||
for r in result:
|
||||
mark = '⭐' if size.lower() in r.product_name.lower() else ' '
|
||||
print(f'{mark} {r.apc}: {r.product_name[:50]}')
|
||||
|
||||
pg.close()
|
||||
Reference in New Issue
Block a user