초기화
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
from typing import Dict, List
|
||||
|
||||
logger = logging.getLogger("line_manager")
|
||||
|
||||
class LineManager:
|
||||
def __init__(self, config_file: str):
|
||||
self.lines: Dict[str, dict] = {}
|
||||
self.equipment_to_prefix: Dict[int, str] = {}
|
||||
self.load_config(config_file)
|
||||
|
||||
def load_config(self, config_file: str):
|
||||
try:
|
||||
if os.path.exists(config_file):
|
||||
with open(config_file, 'r', encoding='utf-8') as f:
|
||||
config = json.load(f)
|
||||
|
||||
for line_cfg in config.get('lines', []):
|
||||
line_id = line_cfg.get('line_id')
|
||||
equipment_id = line_cfg.get('equipment_id')
|
||||
|
||||
self.lines[line_id] = line_cfg
|
||||
self.equipment_to_prefix[equipment_id] = line_id
|
||||
|
||||
logger.info(f"[LINE CONFIG] Loaded {len(self.lines)} line configurations")
|
||||
else:
|
||||
logger.warning(f"[LINE CONFIG] Config file not found: {config_file}. Defaults to line1 -> ID 8.")
|
||||
except Exception as e:
|
||||
logger.error(f"[LINE CONFIG ERROR] Failed to load config: {e}")
|
||||
|
||||
def get_equipment_id(self, prefix: str) -> int:
|
||||
if prefix in self.lines:
|
||||
return self.lines[prefix].get('equipment_id', 8)
|
||||
# Default fallback
|
||||
if "line1" in prefix:
|
||||
return 8
|
||||
match = re.search(r'\d+', prefix)
|
||||
if match:
|
||||
line_num = int(match.group())
|
||||
return 7 + line_num
|
||||
return 8
|
||||
|
||||
def get_prefix(self, equipment_id: int) -> str:
|
||||
return self.equipment_to_prefix.get(equipment_id, "line1")
|
||||
|
||||
def get_all_prefixes(self) -> List[str]:
|
||||
if not self.lines:
|
||||
return ["line1"]
|
||||
return list(self.lines.keys())
|
||||
|
||||
# 전역 인스턴스
|
||||
config_path = os.path.join(os.path.dirname(__file__), "line_config.json")
|
||||
line_manager = LineManager(config_path)
|
||||
Reference in New Issue
Block a user