## Features - 한국어 Flask 관리 인터페이스 with Bootstrap 5 - Headscale과 분리된 독립 데이터베이스 구조 - 약국 관리 시스템 (pharmacy management) - 머신 모니터링 및 상태 관리 - 실시간 대시보드 with 통계 및 알림 - Headscale 사용자명과 약국명 분리 관리 ## Database Architecture - 별도 FARMQ SQLite DB (farmq.sqlite) - Headscale DB와 외래키 충돌 방지 - 느슨한 결합 설계 (ID 참조만 사용) ## UI Components - 반응형 대시보드 with 실시간 통계 - 약국별 머신 상태 모니터링 - 한국어 지역화 및 사용자 친화적 인터페이스 - 머신 온라인/오프라인 상태 표시 (24시간 타임아웃) ## API Endpoints - `/api/sync/machines` - Headscale 머신 동기화 - `/api/sync/users` - Headscale 사용자 동기화 - `/api/pharmacy/<id>/update` - 약국 정보 업데이트 - 대시보드 통계 및 알림 API ## Problem Resolution - Fixed foreign key conflicts preventing Windows client connections - Resolved machine online status detection with proper timeout handling - Separated technical Headscale usernames from business pharmacy names 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
39 lines
1.6 KiB
HTML
39 lines
1.6 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}오류 - 팜큐 약국 관리 시스템{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="row justify-content-center">
|
|
<div class="col-lg-6">
|
|
<div class="card">
|
|
<div class="card-body text-center py-5">
|
|
<div class="mb-4">
|
|
{% if error_code == 404 %}
|
|
<i class="fas fa-search fa-5x text-warning mb-3"></i>
|
|
<h1 class="display-4">404</h1>
|
|
<h4>페이지를 찾을 수 없습니다</h4>
|
|
{% elif error_code == 500 %}
|
|
<i class="fas fa-exclamation-triangle fa-5x text-danger mb-3"></i>
|
|
<h1 class="display-4">500</h1>
|
|
<h4>내부 서버 오류</h4>
|
|
{% else %}
|
|
<i class="fas fa-times-circle fa-5x text-danger mb-3"></i>
|
|
<h4>오류가 발생했습니다</h4>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<p class="text-muted mb-4">{{ error }}</p>
|
|
|
|
<div class="d-grid gap-2 d-md-block">
|
|
<a href="{{ url_for('dashboard') }}" class="btn btn-primary">
|
|
<i class="fas fa-home"></i> 대시보드로 돌아가기
|
|
</a>
|
|
<button onclick="history.back()" class="btn btn-outline-secondary">
|
|
<i class="fas fa-arrow-left"></i> 이전 페이지
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |