headscale-tailscale-replace.../farmq-admin/templates/error.html
시골약사 ca61a89739 🏥 Add complete FARMQ Admin Flask application
## 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>
2025-09-09 17:44:56 +09:00

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 %}