3.8 KiB
3.8 KiB
MMCL 기존 스키마 반영 및 마이그레이션 계획 (V3)
제공해주신 기존 데이터베이스 테이블 구조(dev_info, sensor_info 등)를 바탕으로, 이전에 논의된 MMCL 프로젝트의 핵심 로직(NILM 데이터 모니터링, 경광등 핸드쉐이크 제어)을 기존 스키마에 녹여내는 마이그레이션 계획입니다.
User Review Required
Important
아래 명시된 기존 스키마와 MMCL 로직의 매핑 방안 및 추가 제안 필드/테이블을 확인해 주세요. 특히 경광등 제어를 위해
sensor_info테이블에target_status관련 필드를 추가하고, 이력 보관용 로그 테이블을 새로 추가하는 방안에 대해 확인이 필요합니다. 승인해 주시면 DB 스키마(schema.sql) 및 Python 코드들을 새 구조에 맞게 전면 수정하겠습니다.
Proposed Changes
1. Database 스키마 재구성 (database/schema.sql)
제공해주신 DDL을 기본으로 하되, MMCL 요구사항(핸드쉐이크 및 이력 관리) 충족을 위해 다음 내용이 추가/변경됩니다.
[MODIFY] sensor_info 테이블 수정
기존에는 현재 상태(value_chX_statusID)만 존재합니다. 백엔드 서버(LLM)와 LED Agent 간의 비동기 핸드쉐이크 로직을 구현하기 위해 목표 상태(Target) 필드를 추가합니다.
target_ch1_statusIDINT (Green LED 목표 상태)target_ch2_statusIDINT (Yellow LED 목표 상태)target_ch3_statusIDINT (Red LED 목표 상태)last_updated_byVARCHAR(50) (명령 주체, 예: 'LLM', 'SYSTEM')
[NEW] sensor_history_log 테이블 신설
기존 sensor_info는 센서의 **최신 상태(Current Value)**만 유지하는 마스터 성격의 테이블로 보입니다(UNIQUE INDEX 등). 실시간 전력 사용량의 시계열 차트나 과거 내역 분석을 위해 로그를 쌓는 테이블을 추가로 생성합니다.
log_noINT (PK, Auto Increment)sensor_noINT (FK)log_timeDATETIMEvalue_ch1_current,value_ch1_volt,value_ch1_pwr등 (센서의 실시간 측정값 이력)
기존 테이블 그대로 사용
dev_info(기계/설비 및 센서 매핑 정보 유지)nilm_init_value,pos_info,status_info,type_info
2. 코드 마이그레이션 (Python Agents & Backend)
[MODIFY] agents/nilm_agent_mock.py
- 기존
nilm_devices대신dev_info와sensor_info(type=1)를 조인하여 대상 센서를 찾습니다. - 생성된 가상 전력 데이터를
sensor_info의value_chX...필드에 UPDATE(최신화) 하고, 동시에sensor_history_log에 INSERT(이력 저장) 하도록 쿼리를 변경합니다.
[MODIFY] agents/warning_light_agent.py
- 기존
warning_light_control테이블 대신sensor_info(type=2)를 Polling 합니다. target_chX_statusID와value_chX_statusID(current) 값이 서로 다른 Row를 찾습니다.- 물리적 제어 시뮬레이션 후
value_chX_statusID값을target_chX_statusID값과 동일하게 UPDATE 하여 동기화를 완료합니다.
[MODIFY] backend/main.py
- LLM 제어 명령 접수 시,
sensor_info의target_chX_statusID를 업데이트합니다. (예: 빨간색 지시 시 target_ch3_statusID를 켜짐(ON) 상태의 sts_id로 변경) - 이후
value_chX_statusID가 목표 상태와 같아지는지 Polling으로 대기한 후 자연어 응답을 리턴합니다. - 대시보드 데이터 조회 시
dev_info를 중심으로pos_info와sensor_info를 조인하여 프론트엔드로 전달합니다.
Verification Plan
- 새롭게 정의된 통합
schema.sql이 기존 구조를 훼손하지 않고 정상적으로 MariaDB에 생성되는지 구문 검증. - 백엔드 및 에이전트 파이썬 코드가 변경된 스키마(명칭 및 관계)를 기반으로 정상적으로 데이터의 읽기/쓰기를 수행하는지 코드 점검.