MMCL/docs/implementation_plan.md
2026-09-04 11:24:42 +09:00

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_statusID INT (Green LED 목표 상태)
  • target_ch2_statusID INT (Yellow LED 목표 상태)
  • target_ch3_statusID INT (Red LED 목표 상태)
  • last_updated_by VARCHAR(50) (명령 주체, 예: 'LLM', 'SYSTEM')

[NEW] sensor_history_log 테이블 신설

기존 sensor_info는 센서의 **최신 상태(Current Value)**만 유지하는 마스터 성격의 테이블로 보입니다(UNIQUE INDEX 등). 실시간 전력 사용량의 시계열 차트나 과거 내역 분석을 위해 로그를 쌓는 테이블을 추가로 생성합니다.

  • log_no INT (PK, Auto Increment)
  • sensor_no INT (FK)
  • log_time DATETIME
  • value_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_infosensor_info(type=1)를 조인하여 대상 센서를 찾습니다.
  • 생성된 가상 전력 데이터를 sensor_infovalue_chX... 필드에 UPDATE(최신화) 하고, 동시에 sensor_history_log에 INSERT(이력 저장) 하도록 쿼리를 변경합니다.

[MODIFY] agents/warning_light_agent.py

  • 기존 warning_light_control 테이블 대신 sensor_info (type=2)를 Polling 합니다.
  • target_chX_statusIDvalue_chX_statusID(current) 값이 서로 다른 Row를 찾습니다.
  • 물리적 제어 시뮬레이션 후 value_chX_statusID 값을 target_chX_statusID 값과 동일하게 UPDATE 하여 동기화를 완료합니다.

[MODIFY] backend/main.py

  • LLM 제어 명령 접수 시, sensor_infotarget_chX_statusID를 업데이트합니다. (예: 빨간색 지시 시 target_ch3_statusID를 켜짐(ON) 상태의 sts_id로 변경)
  • 이후 value_chX_statusID가 목표 상태와 같아지는지 Polling으로 대기한 후 자연어 응답을 리턴합니다.
  • 대시보드 데이터 조회 시 dev_info를 중심으로 pos_infosensor_info를 조인하여 프론트엔드로 전달합니다.

Verification Plan

  1. 새롭게 정의된 통합 schema.sql이 기존 구조를 훼손하지 않고 정상적으로 MariaDB에 생성되는지 구문 검증.
  2. 백엔드 및 에이전트 파이썬 코드가 변경된 스키마(명칭 및 관계)를 기반으로 정상적으로 데이터의 읽기/쓰기를 수행하는지 코드 점검.