feat: 애니팜 투약지도서 API 및 마스터 데이터 업데이트

- anipharm_api.py: 동물약 PDF 생성 API 추가
- data/master/*.json: 16종 마스터 데이터 업데이트
- templates: medication_guide_v2, 로고 추가
- docs: AI 매핑 아키텍처, API 스펙 문서
- .gitignore: _dev_scripts/, *.db 제외 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
청춘약국
2026-04-06 18:07:12 +09:00
parent 8a18b530bd
commit dab2ecae44
27 changed files with 3880 additions and 391 deletions

View File

@@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
"""마스터 JSON에 실제 쇼핑몰 APC 매핑"""
import json
import os
# 마스터 JSON → 쇼핑몰 APC 매핑
APC_MAPPING = {
"nexgard_spectra.json": "0232555060207", # 넥스포인트(20~40kg) - 넥스가드 대용
"heartsaver.json": "0230467230300", # 하트세이버L(23~45kg)
"impact.json": "0232873820205", # 임팩트 독(4~10kg)
"antelmin.json": "0230237810109", # 안텔민 킹(5kg이상)
"selight.json": "0232545420203", # 셀라이트 독(4~10kg)
"meloxicash.json": "0232523510309", # 멜록시캐시CH
"asikaff_carprofen.json": "0232635710103", # 아시카프정
"enrofloxacin.json": "0232532310106", # 아시엔로정
"tiergard.json": "0231089420409", # 티어가드(100T)
"chlorhexidine_shampoo.json": "0231334930108", # 클로르헥시딘샴푸(200ml)
"actibet.json": "9240043910403", # 액티벳(100T)
"serenia_maropitant.json": "0231884620107", # 세레니아정 24mg
"terbiderm.json": "0232064110102", # 터비더미 솔루션
"simparica.json": "0232571730106", # 심파리카 트리오 L(20~40kg)
"gaesidin.json": "0231093520106", # 복합개시딘겔(10g)
"oridermyl.json": "0231065620103", # 오이드로믹스클린(10ml) - 귀약 대용
"fronilspot.json": None, # 쇼핑몰 미등록
"apoquel.json": None, # 쇼핑몰 미등록
"bravecto.json": None, # 쇼핑몰 미등록
"gabapentin.json": None, # 쇼핑몰 미등록
"metronidazole.json": None, # 쇼핑몰 미등록
}
MASTER_DIR = os.path.join(os.path.dirname(__file__), "..", "data", "master")
def update_json_files():
updated = []
skipped = []
for filename, apc in APC_MAPPING.items():
filepath = os.path.join(MASTER_DIR, filename)
if not os.path.exists(filepath):
skipped.append(f"{filename} (파일 없음)")
continue
with open(filepath, 'r', encoding='utf-8') as f:
data = json.load(f)
old_apc = data.get('apc_code', '')
if apc:
data['apc_code'] = apc
with open(filepath, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
updated.append(f"{filename}: {old_apc}{apc}")
else:
skipped.append(f"{filename} (매핑 없음)")
print("=" * 60)
print("APC 매핑 업데이트 완료")
print("=" * 60)
print(f"\n✅ 업데이트됨 ({len(updated)}개):")
for item in updated:
print(f" {item}")
print(f"\n⏭️ 건너뜀 ({len(skipped)}개):")
for item in skipped:
print(f" {item}")
if __name__ == "__main__":
update_json_files()