## 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>
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
"""
|
|
Flask 애플리케이션 설정
|
|
"""
|
|
import os
|
|
from pathlib import Path
|
|
|
|
class Config:
|
|
"""기본 설정"""
|
|
# Flask 기본 설정
|
|
SECRET_KEY = os.environ.get('SECRET_KEY') or 'farmq-secret-key-change-in-production'
|
|
|
|
# 데이터베이스 설정 (기존 Headscale SQLite DB 사용)
|
|
DATABASE_PATH = '/srv/headscale-setup/data/db.sqlite'
|
|
SQLALCHEMY_DATABASE_URI = f'sqlite:///{DATABASE_PATH}'
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
# 기존 Headplane 연동 설정
|
|
HEADPLANE_URL = os.environ.get('HEADPLANE_URL') or 'http://localhost:3000'
|
|
HEADSCALE_URL = os.environ.get('HEADSCALE_URL') or 'http://localhost:8070'
|
|
HEADSCALE_API_KEY = os.environ.get('HEADSCALE_API_KEY') or '8qRr1IB.tV95CmA0fLaCiGGIgBfeoN9daHceFkzI'
|
|
|
|
# 모니터링 설정
|
|
MONITORING_INTERVAL = 30 # 30초마다 데이터 수집
|
|
MAX_MONITORING_RECORDS = 1000 # 최대 저장 레코드 수
|
|
|
|
# UI 설정
|
|
APP_TITLE = '팜큐 약국 관리 시스템'
|
|
ITEMS_PER_PAGE = 20 # 페이지당 아이템 수
|
|
|
|
# Proxmox 설정 (추후 확장)
|
|
PROXMOX_DEFAULT_PORT = 8006
|
|
PROXMOX_VERIFY_SSL = False
|
|
|
|
class DevelopmentConfig(Config):
|
|
"""개발 환경 설정"""
|
|
DEBUG = True
|
|
TESTING = False
|
|
|
|
class ProductionConfig(Config):
|
|
"""프로덕션 환경 설정"""
|
|
DEBUG = False
|
|
TESTING = False
|
|
|
|
class TestingConfig(Config):
|
|
"""테스트 환경 설정"""
|
|
DEBUG = True
|
|
TESTING = True
|
|
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
|
|
|
|
# 환경별 설정 매핑
|
|
config = {
|
|
'development': DevelopmentConfig,
|
|
'production': ProductionConfig,
|
|
'testing': TestingConfig,
|
|
'default': DevelopmentConfig
|
|
} |