- DB: formulas 테이블에 efficacy 칼럼 추가 - API: 처방 생성/수정/조회 시 efficacy 필드 처리 - UI: 처방 등록/수정 모달에 주요 효능 입력 필드 추가 - UI: 처방 상세 화면에 주요 효능 표시 - 기존 처방들의 주요 효능 데이터 입력 완료 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
103 lines
3.8 KiB
Python
103 lines
3.8 KiB
Python
#!/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❌ 작업 중 오류가 발생했습니다.") |