> For the complete documentation index, see [llms.txt](https://kopens.gitbook.io/plantpulse-platform/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kopens.gitbook.io/plantpulse-platform/user/data-point.md).

# 데이터 포인트

## 목차

* [개요](#overview)
* [공통 좌측 영역 — 태그 트리 패널](#common-left)
* [스트림 화면 (`/stream/index`)](#stream)
  * [상단 도구](#stream-top)
  * [차트 표시 옵션](#stream-options)
  * [실시간 차트 영역](#stream-chart)
* [트렌드 화면 (`/storage/index`)](#trend)
  * [상단 검색 영역](#trend-top)
  * [샘플링 옵션](#trend-sampling)
  * [차트 표시 옵션](#trend-options)
  * [차트 영역](#trend-chart)
  * [태그 집계 테이블](#trend-table)
  * [타임라인 추가 다이얼로그](#trend-timeline)
* [스냅샷 화면 (`/snapshot/index`)](#snapshot)
* [데이터 출력 화면 (`/data/index`)](#data-output)
* [활용 시나리오](#use-cases)
* [자주 묻는 질문](#faq)
* [관련 화면](#related)

***

## 개요 <a href="#overview" id="overview"></a>

Data 그룹은 수집된 시계열 데이터를 4가지 시점으로 조회·분석하는 화면들의 묶음입니다.

| 하위 메뉴      | 내부 URL            | 용도                            |
| ---------- | ----------------- | ----------------------------- |
| **스트림**    | `/stream/index`   | 선택한 태그의 실시간 인입 데이터를 라인 차트로 표시 |
| **트렌드**    | `/storage/index`  | 선택한 기간의 태그 데이터를 차트와 표로 분석     |
| **스냅샷**    | `/snapshot/index` | 일정 간격으로 샘플링된 대표값을 표 형태로 조회    |
| **데이터 출력** | `/data/index`     | 데이터를 CSV/엑셀 형식으로 일괄 추출        |

네 화면은 좌측에 동일한 모양의 **태그 트리 패널**을 공유하며, 우측 영역만 화면별 기능에 맞게 다릅니다.

***

## 공통 좌측 영역 — 태그 트리 패널 <a href="#common-left" id="common-left"></a>

스트림·트렌드·스냅샷 모두 좌측 col-lg-3 폭의 동일한 태그 트리 패널을 사용합니다.

```
┌─────────────────────────────┐
│ 🗂 모델   [💬] [🔍] [📋]    │ ← 헤더 + 도구 3개
│ ─────────────────────────── │
│ 🏭 [ 사이트 ▼ ]              │ ← 사이트 셀렉터
│ ─────────────────────────── │
│ [에셋] [연결]                │ ← 탭 (ADMIN만 연결 탭 표시)
│ ─────────────────────────── │
│ 🔍 검색...                   │ ← 토글 시 노출
│ ─────────────────────────── │
│  ▶ 자산 트리                  │ ← 자산/태그 계층 트리
│      ▶ MOTOR-001              │
│        ▼ MOTOR-001.SPEED      │
│        ▼ MOTOR-001.TEMP       │
│      ...                     │
│ ─────────────────────────── │
│ 오브젝트 ID : (hover 시 표시)  │ ← 푸터
└─────────────────────────────┘
```

### 헤더 도구 3개

| 버튼              | 아이콘 | 동작                        |
| --------------- | --- | ------------------------- |
| **태그 설명 표시 옵션** | 💬  | 트리에서 태그 옆에 설명을 함께 표시할지 토글 |
| **태그 검색**       | 🔍  | 트리 위 검색 입력란을 토글           |
| **선택 태그명 복사**   | 📋  | 체크된 태그명을 클립보드에 복사         |

### 사이트 셀렉터

| 항목       | 형태             | 동작                                           |
| -------- | -------------- | -------------------------------------------- |
| 입력 그룹 좌측 | 🏭 (산업 아이콘)    | —                                            |
| 셀렉터      | `사이트명 [설명]` 옵션 | 변경 시(`changeSite()`) 트리를 그 사이트의 자산/연결로 다시 로드 |

### 탭 (에셋 / 연결)

| 탭           | 보이는 사용자 | 트리 내용                         |
| ----------- | ------- | ----------------------------- |
| **에셋** (기본) | 모두      | 사이트 → 구역 → 라인 → 설비 → 태그 자산 트리 |
| **연결**      | ADMIN   | OPC 서버 → 채널 → 태그 (통신 단위 트리)   |

각 탭에는 자체 검색 입력란(`assetSearchInput` / `opcSearchInput`)이 토글식으로 펼쳐집니다.

### 푸터 — 오브젝트 ID 미리보기

태그 또는 자산에 마우스를 호버하면 푸터의 **오브젝트 ID** 칸에 그 항목의 식별자가 표시되어, 운영자가 자산명만 보고도 ID 를 빠르게 확인할 수 있습니다.

***

## 스트림 화면 (`/stream/index`) <a href="#stream" id="stream"></a>

좌측 트리에서 태그를 체크하고 **스트리밍 시작** 을 누르면, 우측 차트에 실시간으로 데이터가 들어오는 모습을 볼 수 있습니다.

### 상단 도구 <a href="#stream-top" id="stream-top"></a>

```
🔀 스트림                                  [▶ 스트리밍 시작] [■] [↻]
```

| 버튼                  | 동작                                |
| ------------------- | --------------------------------- |
| **스트리밍 시작** (▶, 빨강) | `stream()` — 체크된 태그의 실시간 푸시 구독 시작 |
| **정지** (■)          | `stop()` — 스트리밍 중지 (시작 후에만 활성화)   |
| **새로고침** (↻)        | `refresh()` — 화면 초기화              |

### 차트 표시 옵션 <a href="#stream-options" id="stream-options"></a>

차트 패널의 헤더 우측 도구.

| 항목            | ID                | 기본값 | 설명                                                |
| ------------- | ----------------- | --- | ------------------------------------------------- |
| **표시 (분)**    | `display_minutes` | `5` | 차트에 표시할 시간 폭 (분 단위)                               |
| **가상 포인트 추가** | (버튼)              | —   | `addVPoint()` — 사용자 정의 가상 포인트(스크립트 계산 기반)를 차트에 추가 |
| **설정**        | (버튼)              | —   | `setDisplayCount()` — 표시 개수·기타 옵션 다이얼로그           |

### 실시간 차트 영역 <a href="#stream-chart" id="stream-chart"></a>

차트 패널 본문에 다음 공간이 있습니다.

| 항목                    | 표시                            |
| --------------------- | ----------------------------- |
| `result_txt`          | 헤더 우측 작은 글씨 — 현재 스트리밍 상태 요약   |
| `stream-content` (목록) | 체크된 태그마다 한 줄로 라인 차트 + 현재 값 표시 |

스트리밍 시작 전에는 다음 안내가 표시됩니다.

> 🖼 \[스트림 아이콘]
>
> **태그 데이터 스트림** 실시간 태그 데이터를 확인할 수 있습니다. 왼쪽 태그 트리에서 태그명을 선택하신 후, \[▶ 스트리밍 시작] 버튼을 클릭하여 주십시오.

### 사용 절차

1. 좌측 트리에서 보고 싶은 태그를 체크 (여러 개 가능)
2. **스트리밍 시작** 클릭
3. 차트가 실시간 인입 데이터로 자동 갱신됨
4. 보고 싶은 시간 폭(분)이 다르면 우상단 **표시 (분)** 값 조정
5. 다 보고 나면 **■ 정지** 클릭

***

## 트렌드 화면 (`/storage/index`) <a href="#trend" id="trend"></a>

선택한 기간의 태그 데이터를 시계열 차트와 집계 테이블로 분석하는 화면입니다.

### 상단 검색 영역 <a href="#trend-top" id="trend-top"></a>

```
📈 트렌드           [기간 ▭ ▭▭▭▭▭▭▭▭] [샘플링 ▼] [조회] [🎚️] [정지] [전체화면]
```

| 컨트롤                               | 폭        | 설명                                                                                           |
| --------------------------------- | -------- | -------------------------------------------------------------------------------------------- |
| **기간 입력** (`search_time`)         | 280px    | 시작\~종료 일시 (가운데 정렬, 굵은 글씨). 클릭 시 날짜 범위 선택기. hidden `search_date_from` / `search_date_to` 로 전달 |
| **샘플링 셀렉터** (`term`)              | 자동       | 기본 비활성. 🎚️ 버튼으로 활성화 (아래 [샘플링 옵션](#trend-sampling) 참고)                                       |
| **조회** (`submit_button`)          | 빨강 + 🔍  | `search()` — 조건으로 차트 + 테이블 갱신                                                                |
| **샘플링 옵션 토글** (`sampling_button`) | 빨강 + 🎚️ | `samplingOption()` — 샘플링 셀렉터 표시/숨기기                                                          |
| **조회 중지** (`cancel_button`)       | 빨강 + ⏹   | `cancel()` — 진행 중인 조회 취소 (조회 중에만 활성화)                                                        |
| **전체화면**                          | 빨강 + 🔗  | `fullscreen()` — 트렌드 화면을 새 창 전체화면으로                                                          |

### 샘플링 옵션 <a href="#trend-sampling" id="trend-sampling"></a>

샘플링 셀렉터(`term`)는 기본적으로 숨겨져 있고 🎚️ 버튼으로 켭니다. 데이터가 너무 많아 차트가 느릴 때 샘플링으로 가벼운 대표값만 가져오는 용도입니다.

| 옵션                | 의미                    | 권장 사용            |
| ----------------- | --------------------- | ---------------- |
| `(빈 값) — 원본(RAW)` | 모든 데이터                | 기본값. 짧은 기간(시간/일) |
| `LTTB [0.1%]`     | LTTB 알고리즘으로 0.1% 만 추출 | **장기(월) 트렌드 개요** |
| `LTTB [0.5%]`     | 0.5% 만 추출             | **장기(월) 분석**     |
| `LTTB [1%]`       | 1% 만 추출               | **중기(주) 분석**     |
| `LTTB [5%]`       | 5% 만 추출               | **단기(일) 분석**     |
| `LTTB [10%]`      | 10% 만 추출              | **상세 정밀 분석**     |
| `1분 주기`           | 1분 간격 단순 샘플           | **단기(일) 샘플링**    |
| `5분 주기`           | 5분 간격                 | **중기(주) 샘플링**    |
| `30분 주기`          | 30분 간격                | **장기(월) 샘플링**    |
| `1시간 주기`          | 1시간 간격                | **장기 트렌드 샘플링**   |

> **LTTB**(Largest-Triangle-Three-Buckets) 는 시계열의 시각적 형태를 가장 잘 보존하는 다운샘플링 알고리즘으로, 차트 표시에 최적화되어 있습니다.

### 차트 표시 옵션 <a href="#trend-options" id="trend-options"></a>

차트 패널 헤더 우측의 인라인 도구바입니다.

| 항목           | ID                 | 옵션                              | 설명                             |
| ------------ | ------------------ | ------------------------------- | ------------------------------ |
| **차트 유형**    | `chart_type`       | 선·영역·컬럼·부드러운 선·부드러운 영역          | 차트 시리즈 표현 방식                   |
| **스텝 라인**    | `show_step_line`   | 기본 라인 / 스텝 라인                   | 디지털 신호처럼 계단형 표현                |
| **알람 표시**    | `show_alarm_flags` | 알람 표시 / 표시 안함                   | 차트 위에 알람 발생 시점 마커              |
| **TRIP 표시**  | `show_trip_line`   | TRIP 표시 / 표시 안함                 | 멀티 Y-AXIS 모드에서만 트립 임계선 표시      |
| **C.HEIGHT** | `chart_height`     | 100/150(기본)/200/250/300/400/500 | 차트 높이 (px)                     |
| **설정**       | (버튼)               | —                               | `configure()` — 추가 차트 설정 다이얼로그 |
| **엑셀 다운로드**  | (버튼)               | —                               | `downloadXLS()` — 결과를 엑셀로 다운로드 |

### 차트 영역 <a href="#trend-chart" id="trend-chart"></a>

| 항목            | ID                                     | 설명                                       |
| ------------- | -------------------------------------- | ---------------------------------------- |
| **차트**        | `result_chart`                         | 600px 높이 시계열 차트                          |
| **결과 카운트**    | `result_count_txt` / `result_time_txt` | 차트 우상단 — 표시된 데이터 포인트 수와 조회 소요 시간         |
| **데이터 없음 안내** | `chart_no_data`                        | "표시할 데이터가 없습니다." (선택 태그가 없거나 결과 비어 있을 때) |
| **로딩 표시**     | `ws_wait_text`                         | "데이터를 조회중 입니다..." (회전 아이콘)               |
| **실행 시간**     | `exec_time_txt`                        | 패널 하단 작은 글씨 — 마지막 조회 소요 시간               |

### 태그 집계 테이블 <a href="#trend-table" id="trend-table"></a>

차트 아래에 선택된 태그들의 집계 통계가 표 형태로 표시됩니다(`storage_table`).

```
┌──────────────────────────── 헤더 (그룹) ────────────────────────────┐
│ 태그ID │ 태그명 │ 데이터 타입 │ 단위 │      집계 (4 컬럼)        │ 액션 │
│        │        │            │      │ 카운트 │첫|끝│최저|최고│평균|합계│      │
└────────────────────────────────────────────────────────────────────┘
```

| 컬럼            | 폭      | 표시                      |
| ------------- | ------ | ----------------------- |
| **태그ID**      | 90px   | 태그 식별자                  |
| **태그명**       | 220px+ | 사람이 읽기 쉬운 태그 이름         |
| **데이터 타입**    | 80px   | INT/FLOAT/BOOL/STRING 등 |
| **단위**        | 50px   | 측정 단위 (예: °C, kPa, rpm) |
| **카운트**       | 60px   | 조회 기간 내 데이터 포인트 수       |
| **처음 \| 마지막** | 60px   | 시작/종료 시점의 값             |
| **최저 \| 최고**  | 60px   | 최소·최대 값                 |
| **평균 \| 합계**  | 60px   | 평균·합계                   |
| **액션**        | 40px   | 행 단위 도구 버튼              |

### 타임라인 추가 다이얼로그 <a href="#trend-timeline" id="trend-timeline"></a>

차트 위에 자산 단위 이벤트 타임라인을 겹쳐 표시할 수 있습니다.

| 항목        | 설명                                                           |
| --------- | ------------------------------------------------------------ |
| **트리거**   | 차트 도구의 별도 버튼(차트별로 위치 달라질 수 있음)                               |
| **모달 제목** | 🎯 "타임라인 추가"                                                 |
| **안내**    | "에셋 이벤트 타임라인을 차트에 추가합니다. 에셋을 선택하신 후, \[타임라인 추가] 버튼을 클릭하십시오." |
| **에셋 선택** | `t_asset_id` 셀렉터 (240px) — 등록된 설비 목록에서 선택                    |
| **확인**    | **타임라인 추가** 버튼                                               |

타임라인이 추가되면 차트 하단에 그 자산의 이벤트(가동/정지/이상)가 색상 막대로 그려져 시계열과 함께 비교할 수 있습니다.

***

## 스냅샷 화면 (`/snapshot/index`) <a href="#snapshot" id="snapshot"></a>

스냅샷은 트렌드와 비슷한 구성이지만, **일정 간격(분 단위)** 으로 샘플링된 값만 표 형태로 보는 데 최적화된 화면입니다.

### 상단 검색 영역

```
🔪 스냅샷                          [기간 ▭▭▭▭] [간격 ▼] [조회] [↻]
```

| 컨트롤                       | 설명                                                              |
| ------------------------- | --------------------------------------------------------------- |
| **기간 입력** (`search_time`) | 트렌드와 동일 (280px, 가운데 정렬)                                         |
| **간격 셀렉터** (`term`)       | 시스템 정의 스냅샷 주기 옵션 (예: `1_MIN`/`5_MIN`/`30_MIN`/`1_HOUR`/`1_DAY`) |
| **조회**                    | `search()` — 조건으로 표 갱신                                          |
| **새로고침**                  | `refresh()` — 화면 초기화                                            |

### 좌측 영역

스트림/트렌드와 동일한 태그 트리 패널 (사이트 셀렉터·에셋/연결 탭·검색).

### 우측 영역

좌측 트리에서 체크한 태그들의 스냅샷 값을 시간 순서로 표시합니다. 표 형태이며, 각 행은 한 시각, 각 열은 한 태그의 값을 보여 줍니다.

활용 예: 1분 간격으로 5개 태그를 일주일 동안 관찰 → 행 1만 개 × 열 5개 형태로 정리되어 외부 도구로 가져가기 쉬움.

***

## 데이터 출력 화면 (`/data/index`) <a href="#data-output" id="data-output"></a>

수집된 데이터를 일괄 추출(CSV/Excel)하는 화면입니다.

| 영역        | 내용                                              |
| --------- | ----------------------------------------------- |
| **상단 도구** | 기간/사이트/태그 선택 + 출력 형식 선택                         |
| **출력 형식** | CSV / Excel(`.xlsx`) — 시스템 환경에 따라 둘 중 하나 또는 둘 다 |
| **다운로드**  | 클릭 시 서버가 파일을 생성해 다운로드                           |

> 데이터 양이 많을수록 다운로드에 시간이 걸립니다. 100만 건 이상은 기간을 분할해 추출하시는 것을 권장합니다.

***

## 활용 시나리오 <a href="#use-cases" id="use-cases"></a>

| 시나리오                  | 화면     | 설정 예시                               |
| --------------------- | ------ | ----------------------------------- |
| **현재 라인 가동 모니터링**     | 스트림    | 라인 자산 트리에서 핵심 5개 태그 체크 → 표시 5분 → 시작 |
| **어제 야간 시프트 트렌드 분석**  | 트렌드    | 기간 21:00\~07:00 / 샘플링 1분 / 차트 유형 선  |
| **한 달 원격 라인 비교**      | 트렌드    | 기간 1개월 / 샘플링 LTTB 1% / TRIP 표시 ON   |
| **알람 발생 직전 상황 재구성**   | 트렌드    | 기간 알람 시각 ±10분 / 알람 표시 ON / 타임라인 추가  |
| **30분 단위 일일 보고용 데이터** | 스냅샷    | 기간 24시간 / 간격 30\_MIN                |
| **외부 분석 도구로 데이터 이전**  | 데이터 출력 | 1주일 + 핵심 태그 5개 → CSV 다운로드           |

***

## 자주 묻는 질문 <a href="#faq" id="faq"></a>

**Q. 스트리밍을 시작했는데 차트가 채워지지 않습니다.** A. 좌측 트리에서 태그를 체크하셨는지 확인하세요. 또한 [대시보드](/plantpulse-platform/user/summary.md) 의 파이프라인 카드가 0 인지 확인 — 데이터 인입 자체가 끊긴 것일 수 있습니다.

**Q. 트렌드 조회가 너무 느립니다.** A. 데이터가 너무 많은 경우입니다. 🎚️ 버튼으로 **샘플링** 셀렉터를 켜고 LTTB(예: 1%) 또는 시간 주기(예: 5분)로 다운샘플링하세요.

**Q. 차트 시리즈가 너무 많아 가독성이 떨어집니다.** A. 차트 우상단 범례에서 시리즈 이름을 클릭하시면 해당 시리즈만 보이기/숨기기 토글됩니다. 또한 좌측 트리에서 태그 체크를 해제하면 그 태그가 차트에서 빠집니다.

**Q. 알람 표시 옵션을 켰는데 차트에 마커가 안 보입니다.** A. 조회 기간 내에 그 태그에 알람이 발생하지 않은 것입니다. [알람](/plantpulse-platform/user/alarm.md) 화면에서 발생 이력을 먼저 확인하세요.

**Q. TRIP 라인이 안 보입니다.** A. TRIP 라인은 **멀티 Y-AXIS 모드**(여러 태그가 각자 다른 Y축을 가질 때)에만 표시됩니다. 단일 Y축 모드에서는 차트 가독성을 위해 표시되지 않습니다.

**Q. 스트림과 트렌드의 차이는?** A. 스트림은 **현재 들어오는** 데이터, 트렌드는 **과거에 저장된** 데이터를 봅니다. 또한 스트림은 자동 갱신되지만 트렌드는 운영자가 명시적으로 조회를 눌러야 갱신됩니다.

**Q. 가상 포인트는 무엇인가요?** A. 실제 센서 태그가 아닌, 다른 태그들의 값을 계산해 만들어 내는 사용자 정의 포인트입니다. 예: 두 온도 센서의 차이, 압력×유량 등. 스트림 화면의 **가상 포인트 추가** 버튼으로 정의합니다.

**Q. 엑셀 다운로드가 빈 파일로 나옵니다.** A. 차트가 비어 있거나 조회 결과가 없을 때 빈 파일이 생성됩니다. 먼저 차트가 정상적으로 그려지는지 확인 후 다운로드하세요.

**Q. 한 화면에 너무 많은 태그를 체크하면 어떻게 되나요?** A. 차트 가독성·렌더링 속도를 위해 한 번에 10\~20개 이내로 제한하시기를 권장합니다. 그 이상이면 LTTB 샘플링으로 데이터 양을 줄이세요.

***

## 관련 화면 <a href="#related" id="related"></a>

* [대시보드](/plantpulse-platform/user/summary.md) — 사이트별 데이터 인입 추세를 한눈에
* [일일 통계](/plantpulse-platform/user/statistics.md) — 사이트·라인·설비별 일일 비교 분석
* [예측 분석](/plantpulse-platform/user/forecast.md) — 태그 데이터를 학습해 예측·이상치 탐지
* [알람](/plantpulse-platform/user/alarm.md) — 트렌드 차트의 알람 표시와 연계
* [팩토리 관리](/plantpulse-platform/user/factory.md) — 자산·태그 등록
* [상태 코드 정의](/plantpulse-platform/user/status.md) — 데이터 타입과 상태 코드
