Fix Phase 7 crash + improve error handling across all phases

- Fixed: farmq.db empty date strings causing API 500 error
- Phase 7: exit 1 → return 1 (skip and continue instead of crash)
- Phase 4/7 failures no longer kill the script
- Error trap now shows current progress info (pharmacy, VPN IP, CT VMID, etc.)
- Helps debugging when script fails mid-execution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude
2026-04-07 10:55:02 +00:00
parent dd53e869d0
commit 566280f4c5

View File

@@ -772,12 +772,14 @@ JSONEOF
else else
print_err "pharmacy_code 추출 실패" print_err "pharmacy_code 추출 실패"
print_info "응답: $PHARMACY_RESPONSE" print_info "응답: $PHARMACY_RESPONSE"
exit 1 print_warn "Phase 7을 건너뛰고 계속 진행합니다."
return 1
fi fi
else else
print_err "약국 생성 실패" print_err "약국 생성 실패"
print_info "응답: $PHARMACY_RESPONSE" print_info "응답: $PHARMACY_RESPONSE"
exit 1 print_warn "Phase 7을 건너뛰고 계속 진행합니다."
return 1
fi fi
# 7-2. PVE host 장비 추가 # 7-2. PVE host 장비 추가
@@ -939,7 +941,25 @@ phase8_verify() {
# ============================================================ # ============================================================
# 에러 핸들링 # 에러 핸들링
# ============================================================ # ============================================================
trap 'echo -e "\n${RED}❌ 설치 중 오류가 발생했습니다 (line $LINENO). 로그를 확인해주세요.${NC}"; exit 1' ERR error_handler() {
local exit_code=$?
local line_no=$1
echo ""
echo -e "${RED}════════════════════════════════════════════${NC}"
echo -e "${RED}❌ 오류 발생 (line ${line_no}, exit code ${exit_code})${NC}"
echo -e "${RED}════════════════════════════════════════════${NC}"
echo -e "${YELLOW}현재까지 진행된 정보:${NC}"
[ -n "${PHARMACY_NAME:-}" ] && echo -e " 약국명: ${PHARMACY_NAME}"
[ -n "${PVE_VPN_IP:-}" ] && echo -e " PVE VPN IP: ${PVE_VPN_IP}"
[ -n "${CT_VMID:-}" ] && echo -e " CT VMID: ${CT_VMID}"
[ -n "${CT_VPN_IP:-}" ] && echo -e " CT VPN IP: ${CT_VPN_IP}"
[ -n "${VM_VMID:-}" ] && echo -e " VM VMID: ${VM_VMID}"
[ -n "${PHARMACY_CODE:-}" ] && echo -e " 약국 코드: ${PHARMACY_CODE}"
echo ""
echo -e "${YELLOW}이 정보를 개발자에게 전달해주세요.${NC}"
exit 1
}
trap 'error_handler $LINENO' ERR
# ============================================================ # ============================================================
# 메인 실행 # 메인 실행
@@ -957,10 +977,10 @@ main() {
phase1_repo_fix phase1_repo_fix
phase2_tailscale_pve phase2_tailscale_pve
phase3_collect_info phase3_collect_info
phase4_pbs_restore phase4_pbs_restore || print_warn "Phase 4 실패 — 계속 진행"
phase5_create_ct phase5_create_ct
phase6_setup_ct phase6_setup_ct
phase7_register phase7_register || print_warn "Phase 7 실패 — 수동 등록 필요"
phase8_verify phase8_verify
} }