약국 생성 시 장비 자동 등록 기능 추가
## 주요 변경사항
### 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:
parent
02137c50a8
commit
4f7929fc61
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user