kdrug-inventory-system/add_efficacy_column.py
시골약사 124bc5eaf8 feat: 처방 주요 효능(efficacy) 필드 추가 및 UI 개선
- DB: formulas 테이블에 efficacy 칼럼 추가
- API: 처방 생성/수정/조회 시 efficacy 필드 처리
- UI: 처방 등록/수정 모달에 주요 효능 입력 필드 추가
- UI: 처방 상세 화면에 주요 효능 표시
- 기존 처방들의 주요 효능 데이터 입력 완료

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-18 04:39:05 +00:00

103 lines
3.8 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
formulas 테이블에 efficacy(주요 효능) 칼럼 추가
"""
import sqlite3
def add_efficacy_column():
"""formulas 테이블에 efficacy 칼럼 추가 및 데이터 입력"""
conn = sqlite3.connect('database/kdrug.db')
cursor = conn.cursor()
try:
# 1. efficacy 칼럼이 이미 있는지 확인
cursor.execute("PRAGMA table_info(formulas)")
columns = cursor.fetchall()
column_names = [col[1] for col in columns]
if 'efficacy' not in column_names:
print("📝 efficacy 칼럼 추가 중...")
cursor.execute("""
ALTER TABLE formulas
ADD COLUMN efficacy TEXT
""")
print("✅ efficacy 칼럼 추가 완료")
else:
print(" efficacy 칼럼이 이미 존재합니다")
# 2. 기존 처방들의 주요 효능 데이터 업데이트
print("\n📋 처방별 주요 효능 데이터 추가:")
print("-"*60)
formula_efficacies = {
"십전대보탕": "기혈양허(氣血兩虛)를 치료, 대보기혈(大補氣血), 병후 회복, 수술 후 회복, 만성 피로 개선",
"소청룡탕": "외감풍한(外感風寒), 내정수음(內停水飮)으로 인한 기침, 천식 치료, 해표산한, 온폐화음",
"갈근탕": "외감풍한으로 인한 두통, 발열, 오한, 항강 치료, 해표발한, 생진지갈",
"쌍화탕": "기혈허약, 피로회복, 감기예방, 면역력 증강, 원기회복",
"월비탕 1차": "비만치료 초기단계, 대사촉진, 체중감량, 부종개선",
"월비탕 2차": "비만치료 중기단계, 대사촉진 강화, 체중감량, 부종개선",
"월비탕 3차": "비만치료 후기단계, 대사촉진 최대화, 체중감량, 체질개선",
"월비탕 4차": "비만치료 마무리단계, 체중유지, 체질개선, 요요방지",
"삼소음": "리기화담(理氣化痰), 해표산한(解表散寒), 외감풍한과 내상식적으로 인한 기침, 가래 치료"
}
for formula_name, efficacy in formula_efficacies.items():
cursor.execute("""
UPDATE formulas
SET efficacy = ?
WHERE formula_name = ?
""", (efficacy, formula_name))
if cursor.rowcount > 0:
print(f"{formula_name}: 효능 추가됨")
else:
print(f"⚠️ {formula_name}: 처방을 찾을 수 없음")
conn.commit()
# 3. 업데이트 결과 확인
print("\n📊 업데이트 결과 확인:")
print("-"*60)
cursor.execute("""
SELECT formula_name, efficacy
FROM formulas
WHERE efficacy IS NOT NULL
ORDER BY formula_id
""")
results = cursor.fetchall()
for name, efficacy in results:
print(f"\n{name}:")
print(f" {efficacy[:80]}...")
# 4. 테이블 구조 최종 확인
print("\n📋 formulas 테이블 최종 구조:")
print("-"*60)
cursor.execute("PRAGMA table_info(formulas)")
columns = cursor.fetchall()
for col in columns:
if col[1] in ['formula_name', 'description', 'efficacy']:
print(f" {col[1]:20}: {col[2]}")
except sqlite3.Error as e:
print(f"❌ 데이터베이스 오류: {e}")
conn.rollback()
return False
finally:
conn.close()
return True
if __name__ == "__main__":
print("🌿 처방 효능 칼럼 추가 프로그램")
print("="*60)
if add_efficacy_column():
print("\n✅ efficacy 칼럼 추가 및 데이터 업데이트 완료!")
else:
print("\n❌ 작업 중 오류가 발생했습니다.")