chore(report): 디지털잔재정리 문서 폐기 + 리포트 .QV 7개 keep 재분류

- docs/작업지시-history-디지털잔재정리.md: SUPERSEDED 배너(실행 금지).
  2026-06-18 실측 — 삭제대상(비-archive ~2천만)은 디지털 잔재 0, 전부 아날로그
  루프/적산. 특히 .QV는 리포트(history_table)가 의존 → 삭제 시 과거 리포트 파손.
- scripts/sql/report_keep_qv_tags.sql: SteamFlow 적산 FIQ-*.QV 7개를
  archive_enabled=TRUE로 재분류(register-map 누락 보정). realtime/is_active=FALSE
  로 폴링 부작용 0. 멱등(map 재빌드 후 재적용). DB에는 이미 적용.

검증: 리포트 태그 삭제대상 0행, 전체 삭제대상 19.98M→17.62M(2.36M 보호).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
windpacer
2026-06-18 20:42:37 +09:00
parent 56628fca7a
commit bb99729e9e
2 changed files with 47 additions and 2 deletions

View File

@@ -1,8 +1,31 @@
# 작업지시: hc900.history_table 디지털 상태점 잔재 정리
> 다른 LLM/작업자가 이 문서만으로 실행할 수 있도록 작성. 2026-06-09 기준.
> ⛔ **SUPERSEDED — 실행 금지 (2026-06-18 검증으로 폐기).**
> 이 문서의 삭제 절차(§2·§3)를 **실행하지 말 것.** 작성 시점(2026-06-09) 이후 P0/P2
> 셀프서비스 리포트가 추가되면서 전제가 무효가 되었다.
>
> **2026-06-18 실측 분석 결과** — `archive_enabled=FALSE` 삭제대상(약 2천만 행)의 구성:
> | 속성 | 행수 | 숫자비율 | 정체 |
> |---|---|---|---|
> | `.QV` | 5.45M | 95% | **적산 totalizer — 리포트 production_total/mass_balance_closure가 history_table에서 직접 읽음** |
> | `.HZ`/`.HZSET` | 8.88M | 100% | 펌프 주파수 |
> | `.PV` | 2.62M | 100% | 공정 측정값 |
> | `.SP`/`.OP`/`.LSET` | 3.03M | 100% | 설정·출력·리미트 |
>
> - 삭제대상에 **디지털 상태점(state 라벨/비숫자) 행은 0개** — 원래 목표였던 디지털 잔재는
> 이미 정리 완료 상태다(history_table에 남아있지 않음).
> - 남은 비-archive는 잔재가 아니라 **루프 내부 파라미터 + 적산값**이며, 특히 `.QV`는
> 리포트 기본 소스(`history_table`)에서 메트릭이 의존한다. **삭제 시 과거 일/월/연 리포트가 깨진다.**
> - 후속 조치(완료): 리포트 의존 `.QV` 7개(`FIQ-6115/6215/8115/9115/9215/10115/10215.QV`)가
> register-map 누락으로 keep에서 빠져 있어 `archive_enabled=TRUE`로 재분류 →
> **[`scripts/sql/report_keep_qv_tags.sql`](../scripts/sql/report_keep_qv_tags.sql)** (멱등, map 재빌드 후 재적용).
> 디지털 잔재 정리 자체는 완료로 종결.
>
> 아래 원문은 이력 보존용으로만 남긴다.
## 목적
---
## 목적 (원문 — 폐기됨)
`hc900.history_table`에는 **디지털 상태점**(예: `AG-3202`, `C3601_RUN`, `CH-5601`
`{0 | L-STOP | }` 형태, state 라벨 보유)의 과거 이력 약 **15만 행**이 잘못 쌓여 있다.

View File

@@ -0,0 +1,22 @@
-- 리포트 의존 적산(.QV) 태그를 archive_enabled=TRUE(keep)로 분류.
-- 배경: SteamFlow 적산 FIQ-*.QV 7개가 register-map(Sinam xlsx)에 .QV 속성이 없어
-- hc900_map_master에서 누락 → archive 기준 "삭제대상"으로 오분류.
-- energy_intensity_qv 등 메트릭이 history_table에서 직접 읽는 ~2.36M행이 위험했음.
-- 멱등: 이미 있으면 archive_enabled만 보장. realtime_enabled/is_active=FALSE(폴링 부작용 0).
-- 적용: docker exec -i iiot-timescaledb psql -U postgres -d iiot_platform -f - < scripts/sql/report_keep_qv_tags.sql
-- ※ map 재빌드(build_register_map.py) 후 재적용 필요. 근본 해결은 빌더가 FIQ-*.QV를 포함하는 것.
INSERT INTO hc900.hc900_map_master
(tagname, hc900_tag, modbus_addr, data_type, access, is_active, controller_id, realtime_enabled, archive_enabled)
SELECT replace(p.tagname,'.PV','.QV'), replace(p.tagname,'.PV','.QV'), 0, 'float32', 'R',
false, p.controller_id, false, true
FROM hc900.hc900_map_master p
WHERE p.tagname IN ('FIQ-6115.PV','FIQ-6215.PV','FIQ-8115.PV','FIQ-9115.PV','FIQ-9215.PV','FIQ-10115.PV','FIQ-10215.PV')
AND NOT EXISTS (SELECT 1 FROM hc900.hc900_map_master q
WHERE q.tagname = replace(p.tagname,'.PV','.QV') AND q.controller_id = p.controller_id);
-- 이미 존재하지만 미분류인 경우 보정(멱등)
UPDATE hc900.hc900_map_master
SET archive_enabled = true
WHERE tagname IN ('FIQ-6115.QV','FIQ-6215.QV','FIQ-8115.QV','FIQ-9115.QV','FIQ-9215.QV','FIQ-10115.QV','FIQ-10215.QV')
AND NOT archive_enabled;