약국 생성 시 장비 자동 등록 기능 추가

## 주요 변경사항

### 1. 장비 타입 자동 감지 (detect_device_info)
- Proxmox Host, Windows PC (WSL), macOS, Linux Server 자동 구분
- 호스트명 자동 수집
- 장비명 자동 생성 (예: "테스트약국 Proxmox Host")

### 2. API 호출 개선
- farmq-admin API(/api/pharmacy)에 장비 정보 전송
  - device_type: proxmox_host/windows_pc/mac/linux_server
  - device_name: 자동 생성된 장비명
  - hostname: 시스템 호스트명
- 응답에서 device_registered 확인 및 사용자 피드백

### 3. 출력 개선
- 장비 감지 정보 실시간 출력
- 최종 완료 메시지에 장비 정보 추가

## 백엔드 연동
- farmq-admin/app.py에서 pharmacy_devices 테이블 자동 등록
- 첫 장비는 자동으로 is_primary=TRUE 설정
- device_role: main_server로 고정

## 테스트
- 문법 검사 완료 (bash -n)
- Proxmox Host 환경에서 테스트 준비 완료

🤖 Generated with Claude Code
This commit is contained in:
Claude 2025-11-15 10:20:38 +00:00
parent 02137c50a8
commit 4f7929fc61

View File

@ -490,6 +490,43 @@ show_final_info() {
# 약국 자동 등록 함수들
# ================================
# 장비 타입 및 정보 자동 감지
detect_device_info() {
echo -e "${BLUE}장비 정보 감지 중...${NC}"
# hostname 수집
DEVICE_HOSTNAME=$(hostname)
# Proxmox 호스트 감지
if [ -f /etc/pve/local/pve-ssl.pem ] || command -v pveversion >/dev/null 2>&1; then
DEVICE_TYPE="proxmox_host"
DEVICE_NAME="${PHARMACY_NAME} Proxmox Host"
echo -e "${GREEN}✓ Proxmox VE 호스트 감지됨${NC}"
# Windows (WSL 환경)
elif grep -qi microsoft /proc/version 2>/dev/null; then
DEVICE_TYPE="windows_pc"
DEVICE_NAME="${PHARMACY_NAME} Windows PC"
echo -e "${GREEN}✓ Windows PC (WSL) 감지됨${NC}"
# macOS
elif [ "$(uname -s)" = "Darwin" ]; then
DEVICE_TYPE="mac"
DEVICE_NAME="${PHARMACY_NAME} Mac"
echo -e "${GREEN}✓ macOS 감지됨${NC}"
# Linux 서버 (일반)
else
DEVICE_TYPE="linux_server"
DEVICE_NAME="${PHARMACY_NAME} Linux Server"
echo -e "${GREEN}✓ Linux 서버 감지됨${NC}"
fi
echo -e "${CYAN} 장비명: $DEVICE_NAME${NC}"
echo -e "${CYAN} 장비 타입: $DEVICE_TYPE${NC}"
echo -e "${CYAN} 호스트명: $DEVICE_HOSTNAME${NC}"
}
# 약국 정보 수집
collect_pharmacy_info() {
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
@ -541,7 +578,7 @@ get_assigned_vpn_ip() {
create_pharmacy_via_api() {
echo -e "${BLUE}약국 등록 중 (farmq.db)...${NC}"
# JSON 데이터 구성
# JSON 데이터 구성 (장비 정보 포함)
JSON_DATA=$(cat <<EOF
{
"pharmacy_name": "$PHARMACY_NAME",
@ -550,7 +587,10 @@ create_pharmacy_via_api() {
"address": "$PHARMACY_ADDRESS",
"owner_name": "$OWNER_NAME",
"phone": "$PHARMACY_PHONE",
"api_port": 8082
"api_port": 8082,
"device_type": "$DEVICE_TYPE",
"device_name": "$DEVICE_NAME",
"hostname": "$DEVICE_HOSTNAME"
}
EOF
)
@ -584,6 +624,14 @@ EOF
fi
echo -e "${GREEN}✓ 약국 생성 완료: $PHARMACY_CODE${NC}"
# 장비 등록 여부 확인
if echo "$RESPONSE" | grep -q '"device_registered"' && echo "$RESPONSE" | grep -q 'true'; then
echo -e "${GREEN}✓ 장비 등록 완료: $DEVICE_TYPE${NC}"
else
echo -e "${YELLOW}⚠️ 장비 등록 실패 (약국은 정상 생성됨)${NC}"
fi
return 0
}
@ -654,6 +702,11 @@ display_login_credentials() {
[ -n "$PHARMACY_ADDRESS" ] && echo -e " 주소: ${WHITE}$PHARMACY_ADDRESS${NC}"
[ -n "$PHARMACY_PHONE" ] && echo -e " 전화번호: ${WHITE}$PHARMACY_PHONE${NC}"
echo -e "\n${GREEN}장비 정보:${NC}"
echo -e " 장비명: ${WHITE}$DEVICE_NAME${NC}"
echo -e " 장비 타입: ${WHITE}$DEVICE_TYPE${NC}"
echo -e " 호스트명: ${WHITE}$DEVICE_HOSTNAME${NC}"
echo -e "\n${YELLOW}⚠ 최초 로그인 후 비밀번호를 변경하세요!${NC}"
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
}
@ -680,7 +733,10 @@ main() {
# 약국 정보 수집
collect_pharmacy_info
# 약국 및 계정 생성
# 장비 정보 자동 감지
detect_device_info
# 약국 및 계정 생성 (장비 등록 포함)
create_pharmacy_via_api || exit 1
create_gateway_user_via_api || exit 1