# headscale-quick-install.sh 개선 계획 ## 목표 Headscale VPN 등록 시 **farmq.db와 gateway.db에 자동으로 약국 및 관리자 계정 생성**하여 스크립트 실행만으로 **즉시 프론트엔드 로그인 가능**하게 만들기 ## 자동 생성 플로우 ``` 1. Headscale VPN 등록 → VPN IP 부여 (예: 100.64.0.25) 2. farmq-admin API 호출 → farmq.db에 약국 생성 - pharmacy_code: P0005 (자동 증가) - pharmacy_name: 사용자 입력 - tailscale_ip: 100.64.0.25 (VPN IP) - hira_code: 사용자 입력 (선택) - api_port: 8082 (기본값) 3. gateway API 호출 → gateway.db에 admin 계정 생성 - username: p0005 (pharmacy_code 소문자) - password: 1234 (기본 비밀번호) - email: p0005@pharmq.internal - name: {pharmacy_name} 관리자 - role: admin - primary_pharmacy_code: P0005 - pharmacy_members에도 자동 매핑됨 4. 로그인 정보 출력 ``` ## 추가할 함수들 ### 1. `collect_pharmacy_info()` 약국 기본 정보를 사용자로부터 입력받음 ```bash collect_pharmacy_info() { echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo -e "${WHITE}약국 정보 입력${NC}" echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" # 약국명 입력 (필수) while [ -z "$PHARMACY_NAME" ]; do read -p "약국명을 입력하세요: " PHARMACY_NAME done # 요양기관부호 입력 (선택) read -p "요양기관부호 (선택, Enter로 건너뛰기): " HIRA_CODE # 약국 주소 입력 (선택) read -p "약국 주소 (선택): " PHARMACY_ADDRESS # 약국장 이름 입력 (선택) read -p "약국장 이름 (선택): " OWNER_NAME # 연락처 입력 (선택) read -p "약국 연락처 (선택): " PHARMACY_PHONE echo -e "${GREEN}✓ 약국 정보 입력 완료${NC}" } ``` ### 2. `get_assigned_vpn_ip()` Headscale에서 부여받은 VPN IP 가져오기 ```bash get_assigned_vpn_ip() { echo -e "${BLUE}VPN IP 확인 중...${NC}" # tailscale status로 IP 추출 VPN_IP=$(tailscale status --json 2>/dev/null | grep -oP '"TailscaleIPs":\["(\d+\.\d+\.\d+\.\d+)"' | grep -oP '\d+\.\d+\.\d+\.\d+' | head -1) if [ -z "$VPN_IP" ]; then echo -e "${RED}✗ VPN IP를 가져올 수 없습니다${NC}" return 1 fi echo -e "${GREEN}✓ VPN IP: $VPN_IP${NC}" return 0 } ``` ### 3. `create_pharmacy_via_api()` farmq-admin API를 호출하여 약국 생성 ```bash create_pharmacy_via_api() { echo -e "${BLUE}약국 등록 중 (farmq.db)...${NC}" # JSON 데이터 구성 JSON_DATA=$(cat <