refactor: 태그 대소문자 register-map 기준 대문자로 전역 통일
- FeedforwardSupervisor: PvTag() ToUpperInvariant + empty FeedTag 가드 - FeedforwardConfigStore: 모든 ToLowerInvariant() 제거 - FeedRampAdvisorService: ToLowerInvariant 제거 + StringComparison.OrdinalIgnoreCase - SimOverrideStore: ToLowerInvariant 제거 - Hc900RealtimeService: HealthCheck SERVING 판정, mapping 없는 태그 대소문자 유지 - PidExtractorService: ToLowerInvariant → OrdinalIgnoreCase 비교 - Hc900Entities: 주석 업데이트 (대문자 표준) - load_state_labels.py: 소문자 변환 금지, controller_id 파라미터 추가 - Hc900Controllers: 대소문자 무시 정렬 - write.js: .MODE → AutoManState/RemLocSPState/SP_SelectState/TuneSetState - setup.js/html: 중복 함수 제거, C5 컨트롤러 placeholder
This commit is contained in:
@@ -1,15 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
xlsx의 StatusPoint DescriptorState0~7 → hc900.tag_metadata 로드
|
||||
실행: python3 scripts/load_state_labels.py
|
||||
실행: python3 scripts/load_state_labels.py [--controller C1]
|
||||
태그명은 Experion ItemName 원형 대소문자 유지 (ToLower 금지).
|
||||
"""
|
||||
import openpyxl
|
||||
import psycopg2
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
XLSX_PATH = Path(__file__).parent.parent / "docs" / "Sinam_Tag_all.xlsx"
|
||||
DB_DSN = "host=localhost port=5432 dbname=iiot_platform user=postgres password=postgres"
|
||||
|
||||
parser = argparse.ArgumentParser(description='Load StatusPoint state labels into tag_metadata')
|
||||
parser.add_argument('--controller', default='HC1', help='Controller ID (default: HC1)')
|
||||
args = parser.parse_args()
|
||||
|
||||
wb = openpyxl.load_workbook(XLSX_PATH, read_only=True, data_only=True)
|
||||
ws = wb['Sheet1']
|
||||
rows = list(ws.iter_rows(values_only=True))
|
||||
@@ -26,7 +32,8 @@ for row in rows[2:]:
|
||||
if cls != 'StatusPoint' or not name:
|
||||
continue
|
||||
|
||||
base_tag = name.lower()
|
||||
# 원형(ItemName) 유지 — 소문자 변환 금지
|
||||
base_tag = name
|
||||
|
||||
for i in range(8):
|
||||
key = f'DescriptorState{i}'
|
||||
@@ -36,13 +43,13 @@ for row in rows[2:]:
|
||||
if val is None or val == '':
|
||||
continue
|
||||
cur.execute("""
|
||||
INSERT INTO hc900.tag_metadata (base_tag, attribute, value)
|
||||
VALUES (%s, %s, %s)
|
||||
ON CONFLICT (base_tag, attribute) DO UPDATE SET value = EXCLUDED.value
|
||||
""", (base_tag, f'state{i}', str(val)))
|
||||
INSERT INTO hc900.tag_metadata (base_tag, attribute, value, controller_id)
|
||||
VALUES (%s, %s, %s, %s)
|
||||
ON CONFLICT (base_tag, attribute) DO UPDATE SET value = EXCLUDED.value, loaded_at = NOW()
|
||||
""", (base_tag, f'state{i}', str(val), args.controller))
|
||||
inserted += 1
|
||||
|
||||
conn.commit()
|
||||
cur.close()
|
||||
conn.close()
|
||||
print(f"완료: {inserted}개 상태 레이블 저장")
|
||||
print(f"완료: {inserted}개 상태 레이블 저장 (controller={args.controller})")
|
||||
|
||||
Reference in New Issue
Block a user