머신 상세 페이지 Headscale CLI 기반 완전 재구현
- get_machine_detail 함수를 Headscale CLI 기반으로 완전 교체 - 기존 FARMQ DB 의존성에서 실시간 Headscale 데이터로 전환 - strftime 템플릿 오류 완전 해결 (datetime 객체 타입 체크 추가) - 실제 머신 정보 표시: 호스트명, IP 주소, 온라인 상태, 사용자 정보 - 약국 정보 매핑: Headscale 사용자명을 통한 약국 연동 - 시간 정보 인간화: "N시간 전", "N분 전" 형식으로 표시 - 네트워크 정보: IPv4/IPv6 주소, 엔드포인트, 키 정보 표시 - 조건부 모니터링 데이터 표시 (향후 확장 대비) - 전체 머신 상세 페이지 기능 정상화 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -117,7 +117,33 @@ def create_app(config_name=None):
|
||||
hostname = details.get('hostname', 'Unknown')
|
||||
print(f"✅ Rendering detail page for machine: {hostname}")
|
||||
|
||||
return render_template('machines/detail.html', machine=details)
|
||||
# 템플릿에 필요한 추가 변수들
|
||||
is_online = details.get('online', False)
|
||||
last_seen = details.get('last_seen')
|
||||
|
||||
# 시간 형식화
|
||||
if last_seen:
|
||||
from datetime import datetime, timezone
|
||||
if isinstance(last_seen, datetime):
|
||||
now = datetime.now(timezone.utc) if last_seen.tzinfo else datetime.now()
|
||||
delta = now - last_seen
|
||||
if delta.days > 0:
|
||||
last_seen_humanized = f"{delta.days}일 전"
|
||||
elif delta.seconds > 3600:
|
||||
last_seen_humanized = f"{delta.seconds // 3600}시간 전"
|
||||
elif delta.seconds > 60:
|
||||
last_seen_humanized = f"{delta.seconds // 60}분 전"
|
||||
else:
|
||||
last_seen_humanized = "방금 전"
|
||||
else:
|
||||
last_seen_humanized = "알 수 없음"
|
||||
else:
|
||||
last_seen_humanized = "알 수 없음"
|
||||
|
||||
return render_template('machines/detail.html',
|
||||
machine=details,
|
||||
is_online=is_online,
|
||||
last_seen_humanized=last_seen_humanized)
|
||||
except Exception as e:
|
||||
print(f"❌ Error in machine_detail route: {e}")
|
||||
import traceback
|
||||
|
||||
Reference in New Issue
Block a user