docs(report): P1 전환 후 죽은코드 점검 결과 정리 — history_1min 보존·p1_historian.sql 유지 결정

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
windpacer
2026-06-17 11:12:34 +09:00
parent cdf2719a5e
commit 52defc6a62

View File

@@ -119,5 +119,19 @@ CREATE TABLE hc900.live_kpi (
3. 합성 cleaning/drawdown 주입 시 상태 전이 + 알람 발화.
4. 누적기 강제 재기동 → 버퍼 리플레이로 상태 동일 복구.
## 전환 후 "죽은코드" 점검 (2026-06-17)
P1 도입은 **순수 추가형**(2계층을 기존 60초 경로 옆에 붙임, +650/5)이라 전환으로 버려진 코드가 없음을 확인. 빌드 경고 0건(CS0169/0414/8321 없음). 정리 후보 2건을 추적한 결과:
| 대상 | 판정 | 근거 |
|---|---|---|
| `Hc900HistoryService` (60s → `history_table`) | **살아있음** | 메트릭 기본 소스 + 장기저장. UI 드롭다운 기본값 `history (60초)` |
| `history_1s` / `Hc900FastHistoryService` | **살아있음** | 카드 스파크라인·dynamics·LiveKpi 기본 소스(JS 하드코딩 `source=history_1s`) |
| `history_1min` / `history_1min_src` | **휴면이나 적재 중 — 제거 금지** | UI 미노출·기본 소스 아님이지만 **연속집계 정책이 스케줄대로 적재**`history_1s` 14일 보존 DROP 전 1분 롤업하는 **유일한 장기보존 경로**. 지우면 큐레이션 태그 >14일 데이터 소실. `SERIES_SOURCES` 허용목록에 있어 `?source=history_1min_src` 직접 API도 유효 |
| `scripts/sql/p1_historian.sql` | **중복 참조 SQL (코드 아님) — 보존 결정** | 자동 실행 참조처 0건. 두 서비스가 기동 시 동일 DDL 멱등 적용하므로 런타임 무의존. **삭제해도 런타임 무영향**이나, 신규 DB 부트스트랩/재해복구 시 일괄 적용 참조본으로 유용 → 의도적으로 남김 |
**결론**: 전환으로 생긴 제거 대상 죽은코드 **없음**. `history_1min`은 죽은 게 아니라 의도된 2계층 장기 tier. `p1_historian.sql`은 멱등 부트스트랩과 중복되지만 운영 참조용으로 유지.
> **DDL 단일 진실원**: 런타임 스키마는 서비스의 `EnsureSchema`가 멱등 적용한다. `p1_historian.sql`은 그 *사본*(수동/일괄 적용용)이므로, 스키마 변경 시 **서비스 코드와 이 SQL을 함께 갱신**할 것(드리프트 주의).
---
*근거: P0 결정론 마스크/적산이 causal → 온라인 동치. TimescaleDB 하이퍼테이블/보존/연속집계(기존 history_table 동일 인프라), BackgroundService 패턴(Hc900RealtimeService/HistoryService). 관련 메모리: [[qv-cleaning-mask-and-column-links]], [[product-pivot-selfservice-reporting]].*