> 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/factory.md).

# 팩토리 모델

## 목차

* [개요](#overview)
* [화면 구성 — 6개 하위 메뉴](#layout)
* [모델 화면 (`/model/index`)](#model)
  * [상단 도구](#model-top)
  * [사이트 목록 (카드 그리드)](#model-sites)
  * [논리·물리 모델 (좌·우 트리)](#model-trees)
* [에셋 화면 (`/asset/tree/index`)](#asset)
  * [좌측 — 자산 트리](#asset-tree)
  * [우측 — 에셋 상세 폼 + 자식 테이블](#asset-detail)
* [태그 화면 (`/tag/index`)](#tag)
  * [상단 도구](#tag-top)
  * [검색 폼 (다중 필터)](#tag-search)
  * [태그 테이블 (12 컬럼)](#tag-list)
* [온톨로지 화면 (`/ontology/index`)](#ontology)
* [메타데이터 화면 (`/metadata/index`)](#metadata)
* [기준정보 화면 (`/basedata/index`)](#basedata)
* [팩토리 모델 확정](#deploy)
* [활용 시나리오](#use-cases)
* [자주 묻는 질문](#faq)
* [관련 화면](#related)

***

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

Factory Model 그룹은 공장 구조와 도메인 메타정보(자산·태그·온톨로지·메타데이터·기준정보)를 등록·수정·삭제하는 영역입니다. 6개 하위 화면으로 구성되며 모두 운영 메타 저장소와 직접 연결됩니다.

| 하위 메뉴     | 내부 URL              | 용도                           |
| --------- | ------------------- | ---------------------------- |
| **모델**    | `/model/index`      | 사이트 추가 + 논리/물리 모델 매핑 + 모델 확정 |
| **에셋**    | `/asset/tree/index` | 자산 트리(사이트→구역→라인→설비→태그) 편집    |
| **태그**    | `/tag/index`        | 등록된 태그 목록·검색·일괄 삭제·엑셀 내보내기   |
| **온톨로지**  | `/ontology/index`   | 자산 분류 체계(카테고리·메타속성) 등록       |
| **메타데이터** | `/metadata/index`   | 도메인별 사용자 정의 메타속성 키-값         |
| **기준정보**  | `/basedata/index`   | 코드 마스터·기준값 등록                |

운영 시작 전에 이 메뉴에서 사이트·자산·태그를 모두 등록해야 [대시보드](/plantpulse-platform/user/summary.md)·[데이터 포인트](/plantpulse-platform/user/data-point.md)·[알람](/plantpulse-platform/user/alarm.md) 등 다른 화면이 의미를 가집니다.

***

## 화면 구성 — 6개 하위 메뉴 <a href="#layout" id="layout"></a>

운영 흐름:

```
[모델]   →   [에셋]   →   [태그]
사이트 추가      자산 계층 등록      태그 등록·매핑
   │              │                  │
   └─────[온톨로지·메타데이터·기준정보 보강]──────┘
   │
   └→ [팩토리 모델 확정] (배포)
```

| 화면    | 분량 (JSP)                       | 사용 빈도            |
| ----- | ------------------------------ | ---------------- |
| 모델    | 308줄                           | 중 (사이트 추가 시)     |
| 에셋    | 472줄                           | 높음 (자산·태그 자주 변경) |
| 태그    | 220줄 (목록) + 198줄(폼) + 824줄(상세) | 매우 높음            |
| 온톨로지  | 382줄                           | 중 (분류 체계 정비 시)   |
| 메타데이터 | 89줄                            | 낮음               |
| 기준정보  | 112줄 (+ 50줄 탭)                 | 낮음               |

***

## 모델 화면 (`/model/index`) <a href="#model" id="model"></a>

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

```
🗂 모델                     [✓ 팩토리 모델 확정] [💾 메타 스토어 백업] [↻]
```

| 버튼            | 동작                                                                                   |
| ------------- | ------------------------------------------------------------------------------------ |
| **팩토리 모델 확정** | `deployAssetToEvent()` — 등록된 자산/태그를 이벤트 룰에 적용해 룰 엔진에 반영 (아래 [팩토리 모델 확정](#deploy) 참고) |
| **메타 스토어 백업** | `backup()` — 메타 저장소 전체를 백업(관리자 보관용)                                                  |
| **새로고침**      | `refresh()`                                                                          |

### 안내 박스

> 🏭 **사이트 추가 및 물리/논리 모델 설정** 인더스트리얼 데이터를 연결할 팩토리(사이트)를 등록하여 주십시오. 그 다음 사이트에 연결된 OPC나 기타 산업 프로토콜에 연결하여 물리 모델을 완성하여 주십시오. 이후 물리 모델을 논리 모델으로 치환하게 되면 사이트 구조 설정이 완료됩니다.

### 사이트 목록 (카드 그리드) <a href="#model-sites" id="model-sites"></a>

```
사이트 목록 [전체 N개의 사이트]                    [➕ 사이트 추가]
─────────────────────────────────────────────────
[ 사이트 카드 ] [ 사이트 카드 ] [ 사이트 카드 ] ...
```

각 사이트 카드(`site-panel`, 240px)에 다음이 표시됩니다.

| 영역                   | 표시                                                                           |
| -------------------- | ---------------------------------------------------------------------------- |
| **상단 (site-title)**  | 사이트 ID (노란 배경)                                                               |
| **본문 (site-body)**   | 🏭 사이트 아이콘 + 사이트명 + 설명 — 클릭 시 그 사이트의 자산/연결 트리를 아래에 로드(`loadTreeData()`)      |
| **푸터 (site-footer)** | 🔧 수정(`editSite()`) / 📁 모델 삭제(`deleteModels()`) / 🗑 사이트 삭제(`deleteSite()`) |

#### 사이트 추가 폼

| 입력         | 설명                  |
| ---------- | ------------------- |
| **사이트 ID** | 영문/숫자/`_` 만 허용      |
| **사이트 명**  | 사람이 식별할 이름          |
| **설명**     | 자유 텍스트              |
| **위·경도**   | 지도에 마커가 표시될 좌표 (선택) |

### 논리·물리 모델 (좌·우 트리) <a href="#model-trees" id="model-trees"></a>

사이트 카드를 선택하면 그 아래에 두 트리가 좌·우로 펼쳐집니다.

#### 좌측 — 에셋 \[논리 모델] (`assetTreeDiv`)

| 동작             | 동작 ID                             | 설명             |
| -------------- | --------------------------------- | -------------- |
| **모델 트리 새로고침** | `loadTreeData(last_tree_site_id)` | 트리 다시 로드       |
| **에셋 검색**      | `searchItem('Asset')`             | 트리 위 검색 입력란 토글 |
| **에셋 추가**      | `showAddModal('Asset')`           | 새 에셋 추가 모달     |
| **에셋 수정**      | `showModifyModal('Asset')`        | 선택 에셋 수정       |
| **에셋 삭제**      | `deleteItem('Asset')`             | 선택 에셋 삭제       |

논리 모델은 사이트→구역→라인→설비→태그 형태로 구성되며, 운영자가 의미적으로 구성하는 계층입니다.

#### 우측 — 연결 \[물리 모델] (`opcTreeDiv`)

| 동작        | 동작 ID               | 설명                                                           |
| --------- | ------------------- | ------------------------------------------------------------ |
| **연결 검색** | `searchItem('OPC')` | 트리 위 검색 입력란 토글                                               |
| **연결 추가** | `addOpc()`          | [연결 관리](/plantpulse-platform/user/connection.md) 의 등록 폼으로 이동 |

물리 모델은 OPC 서버→채널→태그 형태의 통신 단위 트리입니다.

### 논리 ↔ 물리 매핑

좌측의 논리 자산 노드와 우측의 물리 OPC 태그를 드래그/매핑으로 연결합니다. 이렇게 매핑하면 논리 자산(예: 라인 A 의 모터)에서 발생한 데이터가 어느 물리 태그(예: OPC-LINE-A 의 PDI\_001)에서 오는지 시스템이 알 수 있습니다.

### 에셋 추가/수정 모달

좌측 도구 모음의 **에셋 추가** 또는 **에셋 수정** 버튼을 누르면 표준 모달이 열립니다. V2026.05 디자인 시스템 적용으로 모달의 모든 양식이 **fieldset + form-stack** 구조로 통일되어 있습니다.

```
┌─🏭 에셋 추가 및 수정─────────────────── × ─┐
│                                          │
│  ┌─🗂 상위 에셋──────────────────────┐   │
│  │ 상위 에셋 ID    [읽기 전용]          │   │
│  │ 상위 에셋 명    [읽기 전용]          │   │
│  └──────────────────────────────────┘   │
│  ┌─📦 에셋 정보─────────────────────┐   │
│  │ 에셋 ID         [입력]               │   │
│  │ 에셋 명         [입력]               │   │
│  │ 설명            [입력]               │   │
│  └──────────────────────────────────┘   │
│                                          │
├──────────────────────────────────────────┤
│                       [× 취소] [💾 저장]  │
└──────────────────────────────────────────┘
```

| 영역                 | 표시                                      |
| ------------------ | --------------------------------------- |
| **모달 헤더**          | 🏭 아이콘 + 타이틀 + × 닫기                     |
| **상위 에셋 fieldset** | 부모 노드의 ID·이름 (읽기 전용 — 트리 선택값을 표시)       |
| **에셋 정보 fieldset** | 새 에셋의 ID·이름·설명 (입력)                     |
| **모달 푸터**          | × 취소 / 💾 저장 (저장 시 `saveForm('Asset')`) |

> 모든 입력란 라벨은 `form-label control-label` 클래스로 통일되어 폭·정렬이 일관됩니다. 다른 화면의 모달(워크오더·이벤트·근무표 등)도 동일한 fieldset + form-stack 패턴을 사용합니다.

***

## 에셋 화면 (`/asset/tree/index`) <a href="#asset" id="asset"></a>

자산 트리를 깊이 편집하고, 자산 단위 메타·태그·연결 관계를 한 화면에서 정의합니다. 화면 우상단에 **✓ 팩토리 모델 확정** 버튼이 있으며, 좌측 col-lg-3 트리 + 우측 col-lg-9 상세 폼 + 타임라인 + 자식 테이블/탭으로 구성됩니다.

### 좌측 — 자산 트리 <a href="#asset-tree" id="asset-tree"></a>

```
🗂 모델 — 사이트 → 구역 → 라인 → 설비   [💬] [🔍] [📋]
사이트: [▼]
[에셋 트리 / 연결 트리]
─────────────────────
🔗 오브젝트 ID:  -      ← 트리에서 호버 시 도메인 ID 표시 (footer)
```

| 헤더 아이콘                  | 동작                      |
| ----------------------- | ----------------------- |
| **💬 (말풍선)** — 태그 설명 표시 | 트리에 태그 노드의 설명을 함께 표시 토글 |
| **🔍 검색**               | 트리 내 텍스트 검색 입력창 토글      |
| **📋 복사**               | 선택된 태그명을 클립보드에 복사       |

### 우측 — 에셋 상세 폼 + 타임라인 + 자식/탭 <a href="#asset-detail" id="asset-detail"></a>

#### 빈 상태 — 에셋 미선택

좌측 트리에서 어느 노드도 선택하지 않으면 우측 상세 영역에 빈 상태 안내가 표시됩니다.

```
       🟦 (큐브 아이콘)
   에셋이 선택되지 않았습니다
왼쪽 에셋 트리에서 [에셋명을 선택]하여 주십시오.
```

#### 에셋 정보 패널 — 풀컬러 그라디언트 상태 카드 2개

자산을 선택하면 패널 본문 최상단에 메타 한 줄(타입 + 등록/수정일) + **연결 상태 / 건강 상태** 두 카드가 좌측에 표시됩니다.

| 카드                              | 아이콘     | 표시                                              |
| ------------------------------- | ------- | ----------------------------------------------- |
| **연결 상태** (`connection_status`) | 📶 와이파이 | 풀컬러 그라디언트 — 🟢 정상 / 🟡 지연 / 🔴 이상 / ⬛ 끊김 / ⚪ 미상 |
| **건강 상태** (`health_status`)     | 💗 하트비트 | 풀컬러 그라디언트 — 🟢 정상 / 🟡 주의 / 🔴 위험               |

각 카드는 아이콘 + 라벨 + 값(예: "정상연결", "위험") 형태로 그라디언트 배경에 표시되어 멀리서도 색만으로 상태를 즉시 확인할 수 있습니다.

#### 자산 이미지 (우측)

이미지가 등록되어 있으면 SVG/PNG 로 표시됩니다. 없을 때는 빈 상태 표시:

```
       🖼 (이미지 아이콘)
       이미지 없음
선택한 노드에 등록된 이미지가 없습니다.
```

#### 기본 정보 패널 (입력)

| 입력        | path          | placeholder/설명                                    |
| --------- | ------------- | ------------------------------------------------- |
| **에셋 ID** | `asset_id`    | 시스템 자동 부여 / 수정 시 읽기 전용                            |
| **에셋 명**  | `asset_name`  | placeholder: `ASSET_NAME_00001 (영문 및 숫자, _ 만 입력)` |
| **공통 그룹** | `table_type`  | MOTOR/PUMP/VALVE 등 — 셀렉터                          |
| **설명**    | `description` | 자유 텍스트                                            |

#### 에셋 이미지 패널

| 컨트롤          | 동작                      |
| ------------ | ----------------------- |
| **📂 파일 선택** | PNG/SVG 선택 (권장 640×320) |
| **☁ 업로드**    | 선택한 이미지를 그 자산에 등록       |

#### 타임라인 패널 — 시간 추이

자산 선택 시 그 아래 타임라인 패널이 표시됩니다. 패널 헤더에 기간(`from_to`) 안내, 본문에 가로 막대 타임라인 + 우측 범례 5종.

| 범례     | 색     | 의미          |
| ------ | ----- | ----------- |
| **미상** | ⚪ 회색  | 수신 이력 없음    |
| **정상** | 🟢 녹색 | 이상 없음       |
| **주의** | 🟡 노랑 | 경고 알람 존재    |
| **위험** | 🔴 빨강 | 심각 알람 존재    |
| **끊김** | ⬛ 진빨강 | 24시간 이상 미수신 |

패널 본문 좌상단의 ⓘ 정보 아이콘에 마우스를 올리면 **연결 상태 5단계 + 건강 상태 3단계 매핑 표**가 큰 툴팁으로 표시됩니다.

#### 하위 에셋 목록 (SITE/AREA/LINE 선택 시)

SITE / AREA / LINE 노드를 선택한 경우에만 표시됩니다.

| 컬럼        | 폭     | 표시                 |
| --------- | ----- | ------------------ |
| **에셋 ID** | 250px | 자식 자산의 ID (도메인 뱃지) |
| **에셋 명**  | 250px | 자식 자산의 이름          |
| **설명**    | 자동    | 메모                 |

#### EQUIPMENT 선택 시 — 10개 탭 패널

설비(EQUIPMENT) 노드를 선택하면 자식 테이블 대신 10개 탭 패널이 표시됩니다.

| 탭            | 아이콘 | 내용                   |
| ------------ | --- | -------------------- |
| **① 연결**     | 🌐  | 그 설비에 매핑된 OPC/PLC 연결 |
| **② 태그**     | 🏷  | 설비 소속 태그 목록          |
| **③ 데이터**    | 🗄  | 최근 데이터 포인트           |
| **④ 알람**     | 🔔  | 발생 알람 이력             |
| **⑤ 이벤트**    | 📅  | 자산 이벤트 로그            |
| **⑥ 상태**     | 👁  | 상태 (Context) 키-값     |
| **⑦ 집계**     | 🥧  | 1분/5분/1시간 집계         |
| **⑧ 명령**     | 🎮  | 자산에 발행 가능한 명령        |
| **⑨ 스테이트먼트** | 💻  | 자산 평가 EQL 스테이트먼트     |
| **⑩ 도큐먼트**   | 📄  | 자산 관련 첨부 문서          |

***

## 태그 화면 (`/tag/index`) <a href="#tag" id="tag"></a>

등록된 모든 태그를 검색·일괄 삭제·엑셀 다운로드하는 화면입니다.

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

```
🏷 태그 [전체 N개]                                [✓ 팩토리 모델 확정]
```

| 버튼            | 동작                                 |
| ------------- | ---------------------------------- |
| **전체 N개**     | 등록 태그 수 (천단위 콤마)                   |
| **팩토리 모델 확정** | `deployAssetToEvent()` — 모델 화면과 동일 |

목록 패널 헤더 우측에는 **선택된 태그 삭제** / **엑셀 다운로드** / **새로고침** 3 버튼.

### 검색 폼 (다중 필터) <a href="#tag-search" id="tag-search"></a>

| 입력         | id             | 폭     | 옵션                                |
| ---------- | -------------- | ----- | --------------------------------- |
| **사이트**    | `site_id`      | 180px | 사이트 선택 + 등록 사이트                   |
| **구역**     | `area_id`      | 180px | 구역 선택 (사이트 변경 시 자동 갱신)            |
| **라인**     | `line_id`      | 180px | 라인 선택 (구역 변경 시 자동 갱신)             |
| **설비**     | `equipment_id` | 180px | 설비 선택                             |
| **연결**     | `opc_id`       | 180px | OPC 선택 + 등록 OPC                   |
| **태그 ID**  | `tag_id`       | 180px | placeholder: "태그 ID"              |
| **태그 명**   | `tag_name`     | 180px | placeholder: "태그 명 검색 ..." (자동완성) |
| **데이터 타입** | `java_type`    | 180px | INT/FLOAT/STRING/BOOL 등 셀렉터       |

### 태그 테이블 (12 컬럼) <a href="#tag-list" id="tag-list"></a>

| 컬럼              | 폭                    | 표시                      |
| --------------- | -------------------- | ----------------------- |
| **선택**          | 50px                 | 일괄 삭제용 체크박스             |
| **No.**         | 40px                 | 행 번호                    |
| **태그 ID**       | 100px                | 도메인 식별자                 |
| **태그 명**        | 300px                | 사람이 읽기 쉬운 이름            |
| **설명**          | 자동                   | 메모                      |
| **데이터 타입**      | 80px                 | INT/FLOAT/STRING/BOOL 등 |
| **포인트 건수**      | 80px                 | 누적 수신 건수                |
| **알람 건수**       | 60px                 | 누적 알람 건수                |
| **현재 값**        | 60px                 | 마지막 수신 값                |
| **단위**          | 40px                 | 측정 단위 (°C, kPa, rpm 등)  |
| **마지막 업데이트 시간** | 160px                | 마지막 수신 시각               |
| **지연 \[MS]**    | 60px                 | 평균 지연 시간                |
| **액션**          | 60px (ADMIN/MANAGER) | 🔧 수정 / 🗑 삭제           |

> 일반 USER 권한에서는 **액션** 컬럼이 숨겨집니다.

### 태그 등록/수정 양식 (`/tag/form`)

태그 양식은 화면 상단에 **태그 양식 패널** (기본 정보) + 하단에 **8개 탭**으로 구성된 2단 구조입니다.

#### 상단 — 태그 양식 패널 (항상 표시)

| 입력         | 설명                                                                                |
| ---------- | --------------------------------------------------------------------------------- |
| **태그 ID**  | 영문/숫자/`_` (수정 모드에서는 읽기 전용)                                                        |
| **태그 명**   | 사람 식별용 — 영문/숫자/특수문자 `_`·`.` 만 허용                                                  |
| **데이터 타입** | `String` / `Short` / `Integer` / `Long` / `Float` / `Double` / `Boolean` / `Date` |
| **태그 설명**  | 자유 텍스트 (100자)                                                                     |

패널 헤더 우측에 **태그 보기** 버튼 — 즉시 [태그 상세 화면](#tag-view) 으로 이동.

#### 하단 — 8개 탭

| 탭          | 아이콘 | 역할                                                                                              |
| ---------- | --- | ----------------------------------------------------------------------------------------------- |
| **① 속성**   | ☀   | 데이터 메타 — 단위·표시 포맷·검증 범위 (`min_value`/`max_value`)·null 허용                                       |
| **② 알람밴드** | 🔔  | 6단계 임계값 (수치형) / true·false 우선순위 (Boolean) — **CSS 시각 밴드**로 hi\_hi/hi/lo/lo\_lo 가 한 막대 위에 색띠로 표시 |
| **③ 계산**   | 🧮  | 가상 태그용 식·다른 태그 참조                                                                               |
| **④ 샘플링**  | 💉  | 수집 주기·중복값 압축·이상값 컷오프                                                                            |
| **⑤ 집계**   | 🪙  | 1분/5분/1시간 집계 단위·집계 종류 (min/max/avg/sum/count)                                                   |
| **⑥ 인공지능** | 🧠  | 예측·이상감지 모델 연동 설정                                                                                |
| **⑦ 발행**   | 📬  | 외부 토픽 (Kafka/MQTT) 또는 워크플로로 자동 발행                                                               |
| **⑧ 노트**   | 💬  | 운영자 메모·변경 이력 코멘트                                                                                |

#### 알람밴드 탭 — 시각 밴드 (수치형)

수치형 태그의 알람밴드 탭에는 한 줄 그래픽 막대가 표시되어, `min_value` \~ `max_value` 범위 안에서 `lo_lo · lo · hi · hi_hi` 가 어떤 색대역으로 매핑되는지 직관적으로 확인할 수 있습니다.

```
[ ███ lo_lo ████ lo ════════════ 정상 ════════════ hi ████ hi_hi ███ ]
   🔴 심각        🟠 경고          🟢 정상           🟠 경고      🔴 심각
```

> 값을 바꾸면 즉시 시각 밴드가 다시 그려집니다 — 입력 후 저장 전에 분포를 미리 확인하세요.

| 항목                    | 설명                             |
| --------------------- | ------------------------------ |
| `lo_lo` / `hi_hi`     | 심각 알람 임계 — 트립(Trip) 이전 마지막 경고선 |
| `lo` / `hi`           | 경고 알람 임계                       |
| `trip_lo` / `trip_hi` | 트립(설비 정지 명령) 임계 — 알람을 넘어 액션 발생 |
| `band_message`        | 알람 발생 시 표시 메시지                 |
| `use_alarm`           | 알람밴드 사용 여부 — 끄면 모든 임계 무시       |

#### 알람밴드 탭 — Boolean

| 항목                         | 설명                                |
| -------------------------- | --------------------------------- |
| `bool_true` / `bool_false` | 두 값에 대한 알람 정의 (각각 우선순위·메시지·사용 여부) |

> 입력 라벨 옆에는 **152px 폭의 인라인 도움말** (`form-help-inline`) 이 함께 표시되어 형식·제약 조건을 안내합니다.

### 가상 태그·가상 포인트

태그 화면에는 두 가지 특수 등록 방식이 있습니다.

| 화면                         | 용도                                        |
| -------------------------- | ----------------------------------------- |
| `tag/add_vtag.jsp` (64줄)   | **가상 태그** — 실제 센서 없이 다른 태그들을 결합/계산해 만든 태그 |
| `tag/add_vpoint.jsp` (51줄) | **가상 포인트** — 일회성 계산 결과 포인트 (스트림 화면에서 추가)  |

### 태그 상세 화면 (`/tag/view/{tag_id}`) <a href="#tag-view" id="tag-view"></a>

태그 목록에서 태그 명을 클릭하면 진입합니다. 한 태그의 모든 운영 정보를 한 화면에 모은 뷰로, 화면이 **좌측 col-lg-3 (2 패널) + 우측 col-lg-9 (현재 값 패널 + 데이터/알람 탭)** 으로 구성됩니다.

#### 상단 — 페이지 헤더

```
🏷 태그 | {태그명}                       [ 태그명 입력 ▼ ] [태그 이동 →] [← 목록] [↻]
```

| 컨트롤                | 동작                                                   |
| ------------------ | ---------------------------------------------------- |
| **태그명 입력 + 태그 이동** | 다른 태그를 자동완성으로 검색하여 즉시 그 태그의 상세 화면으로 이동 (`moveTag()`) |
| **← 목록**           | 태그 목록(`/tag/index`) 으로 복귀                            |
| **↻**              | 화면 새로고침 (실시간 데이터 다시 구독)                              |

#### 좌측 ① 태그 정보 패널 — 4 섹션 ds-dl

패널 헤더 우측에 **⚙ 톱니바퀴 (ADMIN/MANAGER 전용)** — 태그 설정 양식(`/tag/form`)으로 이동.

| 섹션 (view-section-title) | 표시 항목 (정의 리스트)                                   |
| ----------------------- | ------------------------------------------------ |
| **🪪 기본 정보**            | 태그 ID (도메인 뱃지 TAG) · 태그 명 · 데이터 타입 · 태그 설명 · 등록일 |
| **🔗 연결 정보**            | 연결 ID (도메인 뱃지 OPC) · 연결 명                        |
| **🏭 사이트 정보**           | 사이트 ID (뱃지) · 사이트 명                              |
| **🟦 에셋 정보**            | 에셋 ID (뱃지) · 에셋 명                                |

> ID 는 모두 도메인별 색상 뱃지로 표시되며, 뱃지를 클릭하면 해당 도메인의 상세 화면으로 이동합니다 (예: 사이트 → 사이트 화면).

#### 좌측 ② 통계 정보 패널 — 포인트·알람·중요도별 알람

패널 헤더 우측에 **오늘 / 어제** 토글 버튼 — 통계 기간 전환.

| 섹션            | 표시                                                                |
| ------------- | ----------------------------------------------------------------- |
| **📶 포인트**    | 큰 숫자 "**오늘 포인트 수신 건수**" + 24시간 스파크 (`point_24hh`) + 전체 포인트 누적 카운터 |
| **🔔 알람**     | 큰 숫자 "**오늘 알람 발생 건수**" + 24시간 스파크 (`alarm_24hh`) + 전체 알람 누적 카운터   |
| **❗ 중요도별 알람** | 3-카드 그리드 — **정보(파랑) · 경고(노랑) · 심각(빨강)** 각각 큰 숫자 + 라벨              |

```
┌── 정보 ──┐  ┌── 경고 ──┐  ┌── 심각 ──┐
│   1,234   │  │    23     │  │     2     │
│  (파랑)   │  │ (노랑)    │  │  (빨강)   │
└──────────┘  └───────────┘  └───────────┘
       ↓ 그 아래에 도넛 차트
   [중요도별 점유율 도넛 차트]
```

#### 우측 ① 현재 값 패널 (5 컬럼)

패널 헤더 우측에 빠른 이동 버튼 그룹.

| 빠른 이동      | 동작                                                             |
| ---------- | -------------------------------------------------------------- |
| 🔀 **스트림** | 이 태그를 [스트림](/plantpulse-platform/user/data-point.md) 에서 실시간 보기 |
| 🗄 **트렌드** | 이 태그의 [트렌드](/plantpulse-platform/user/data-point.md)           |
| 🔔 **알람**  | 이 태그의 [알람](/plantpulse-platform/user/alarm.md) 이력              |

| 컬럼           | 표시                                                    |
| ------------ | ----------------------------------------------------- |
| **현재 값**     | 큰 숫자 — 품질 색상 뱃지 (good = 녹 · uncertain = 황 · bad = 빨강) |
| **마지막 업데이트** | 시각 (yyyy-MM-dd HH:mm:ss)                              |
| **지연 \[MS]** | 평균 응답 지연                                              |
| **품질**       | OPC 품질 코드 (예: GOOD, BAD, UNCERTAIN)                   |
| **에러코드**     | 마지막 수신에서 에러가 있었을 때 그 코드                               |

#### 우측 ② 데이터/알람 탭

| 탭              | 내용                                                                                                             |
| -------------- | -------------------------------------------------------------------------------------------------------------- |
| **📊 데이터 포인트** | 차트 패널 (실시간 트렌드 라인 — 수치형) 또는 상태 타임라인 (Boolean) + 집계 표 (오늘 수신 포인트 · 최저 · 최고 · 평균 · 합계 / Boolean 은 처음 · 마지막 · 합계) |
| **🔔 알람**      | 이 태그에 발생한 알람 목록과 처리 상태                                                                                         |

> 데이터 탭의 차트는 WebSocket 으로 실시간 갱신됩니다. 차트 로딩 중에는 "차트 로딩중..." 안내가 중앙에 표시됩니다.

이 상세 화면은 태그 단위 운영자 종합 점검 — 임계값 검토·이상 추적·물리 매핑 확인의 진입점입니다.

***

## 온톨로지 화면 (`/ontology/index`) <a href="#ontology" id="ontology"></a>

자산 분류 체계(카테고리·메타속성·관계)와 사이트 단위 지식 그래프를 시각화하는 고급 메타 화면입니다. 디자인 시스템 개편으로 **사이트 배너 + 좌측 사이드 카드 + 그래프 본문** 으로 재구성되었습니다.

### 상단 — 사이트 배너 (`onto-site-banner`)

페이지 헤더 바로 아래에 풀컬러 배너가 표시됩니다.

```
🏭 {사이트명} | {사이트 설명}                     [기준시간 : {gen_timestamp}]
```

* 사이트가 변경되면 배너 텍스트도 즉시 갱신됩니다
* 기준시간은 트리·메트릭이 마지막으로 새로고침된 시각

### 좌측 ① 사이트 패널 (col-w-280)

#### 패널 헤더

| 버튼           | 동작                                  |
| ------------ | ----------------------------------- |
| **❄ 레디얼 토글** | 패널 본문의 트리를 일반 트리 ↔ 레디얼(방사형) 그래프로 전환 |
| **↻ 새로고침**   | 트리 재구축 (`createTree()`)             |

#### 패널 본문 — 셀렉터 2종

| 셀렉터        | 옵션                                                     |
| ---------- | ------------------------------------------------------ |
| **사이트 선택** | 전체 사이트 + 등록된 사이트 (변경 시 트리 즉시 재구성)                      |
| **초기 레벨**  | 사이트 > 구역 / 사이트 > 구역 > 라인 / **사이트 > 구역 > 라인 > 설비** (기본) |

#### 패널 푸터

전체 사이트 개수 표시 — `🏭 전체 사이트 N개`.

### 좌측 ② 자산 카운트 카드 4종 (`onto-count-stack`)

사이트 패널 아래에 풀컬러 그라디언트 4-카드 그리드가 표시됩니다 — 선택 사이트의 자산 개수.

| 카드            | 아이콘     | 표시                      |
| ------------- | ------- | ----------------------- |
| **AREA**      | 🏭 차고   | 구역 수 (`area_size`)      |
| **LINE**      | 📜 컨베이어 | 라인 수 (`line_size`)      |
| **EQUIPMENT** | 📺 베타맥스 | 설비 수 (`equipment_size`) |
| **TAG**       | 🏷 태그   | 태그 수 (`tag_size`)       |

### 본문 — 온톨로지 그래프

선택한 사이트의 자산 트리를 큰 캔버스에 시각화합니다.

| 동작     | 단축키                                                                  |
| ------ | -------------------------------------------------------------------- |
| 노드 클릭  | 그 노드의 메타 패널 표시 (선택 사이트 이벤트/상태/집계 컨테이너)                               |
| 줌 인/아웃 | 마우스 휠                                                                |
| 노드 드래그 | 위치 이동                                                                |
| 노드 호버  | **onto-tip-**\* 툴팁 (도메인 ID 뱃지 + 메타 키 미리보기) — oklch 색상으로 도메인별로 다르게 표시 |

### 주요 기능

* **카테고리 트리 / 레디얼** — 자산 분류(예: 회전기계 → 모터 → AC 모터) 계층 구성
* **메타속성 정의** — 카테고리별로 자산이 가질 메타 키 정의 (예: 모터의 정격 출력·전압)
* **관계 정의** — 자산 간 관계(상위/연동/대체) 표현
* **검증 룰** — 메타 입력 시 검증 규칙 (필수/숫자/범위)
* **도메인 ID 뱃지** — SITE/AREA/LINE/EQUIPMENT/TAG 색이 [도메인 ID 통합 검색](/plantpulse-platform/user/login.md#domain-search) 과 동일한 oklch 컬러로 통일

> 온톨로지는 일반 운영자가 자주 사용하는 화면이 아닙니다. 시스템 도입 초기 또는 자산 카테고리 정비 시 시스템 관리자가 정의합니다.

***

## 메타데이터 화면 (`/metadata/index`) <a href="#metadata" id="metadata"></a>

도메인 단위로 사용자 정의 메타 키-값을 등록하는 가벼운 화면입니다.

### 사용 예시

| 도메인   | 메타 키             | 값                         |
| ----- | ---------------- | ------------------------- |
| Asset | `manufacturer`   | "ABC Industries"          |
| Asset | `installed_year` | "2020"                    |
| Tag   | `description_en` | "Pump discharge pressure" |
| Order | `customer_class` | "VIP"                     |

### 입력 형태

| 컬럼         | 설명                         |
| ---------- | -------------------------- |
| **도메인 유형** | Asset/Tag/Order/Customer 등 |
| **도메인 ID** | 그 도메인의 식별자                 |
| **메타 키**   | 사용자 정의                     |
| **메타 값**   | 자유 텍스트/숫자                  |

> 메타데이터는 [온톨로지](#ontology) 와 달리 카테고리에 묶이지 않은 자유 메타입니다. 빠른 임시 메타가 필요할 때 사용합니다.

***

## 기준정보 화면 (`/basedata/index`) <a href="#basedata" id="basedata"></a>

코드 마스터·기준값 등록 화면. 다양한 코드 그룹을 탭으로 관리합니다.

### 탭 구성 (basedata/tab.jsp 기반)

| 탭          | 설명                                    |
| ---------- | ------------------------------------- |
| **코드 그룹**  | 시스템에서 사용하는 코드 묶음 (예: 알람 우선순위·작업지시 상태) |
| **코드 항목**  | 코드 그룹 내 개별 코드 (예: INFO/WARN/ERROR)    |
| **단위 마스터** | 측정 단위 표준 (°C, kPa, rpm 등)             |
| **공통 유형**  | 자산 공통 유형(MOTOR·PUMP·VALVE)            |

### 입력 폼 (예시 — 코드 항목)

| 입력        | 설명                         |
| --------- | -------------------------- |
| **코드 그룹** | 부모 그룹 (예: ALARM\_PRIORITY) |
| **코드 ID** | 시스템 식별자 (예: INFO)          |
| **코드 명**  | 한국어 라벨 (예: 정보)             |
| **순서**    | 표시 순서                      |
| **활성**    | Y/N                        |
| **설명**    | 자유 텍스트                     |

> 기준정보는 시스템 표준 값을 정의하는 화면이라 자주 변경되지 않습니다. 표준 코드를 정비할 때만 사용하세요.

***

## 팩토리 모델 확정 <a href="#deploy" id="deploy"></a>

[모델](#model) 또는 [태그](#tag) 화면 상단의 **✓ 팩토리 모델 확정** 버튼을 클릭하면, 등록된 사이트·자산·태그가 이벤트 룰 엔진([CEP > 스테이트먼트](/plantpulse-platform/user/cep.md#statement))에 일괄 반영됩니다.

### 동작 절차

1. 모든 사이트의 자산 트리·태그·매핑이 의도대로 등록되었는지 확인
2. 상단 **✓ 팩토리 모델 확정** 클릭
3. 시스템이 자산 단위 도메인 룰(상태·집계·이벤트·명령)을 자동 등록
4. 룰 등록 후 [CEP > 스테이트먼트](/plantpulse-platform/user/cep.md#statement) 에서 새 룰들이 보입니다

### 언제 확정해야 하나?

* 신규 사이트·자산을 대량 등록한 직후
* 자산의 분류·계층을 크게 변경한 후
* 알람밴드·메타속성을 일괄 변경한 후

> 팩토리 모델 확정은 자주 누르지 마세요(룰 엔진 재등록 비용이 있음). 변경 작업이 모두 끝난 뒤 한 번만 누르시는 것이 좋습니다.

***

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

| 시나리오            | 절차                                                                     |
| --------------- | ---------------------------------------------------------------------- |
| **신규 공장 셋업**    | 모델 → 사이트 추가 → 에셋 화면에서 구역/라인/설비 트리 구성 → OPC 연결 등록 → 태그 자동/수동 등록 → 모델 확정 |
| **신규 라인 추가**    | 에셋 화면 → 사이트의 구역 선택 → 라인 추가 → 라인 하위에 설비 트리 구성 → 태그 등록                   |
| **태그 일괄 정리**    | 태그 화면 → 검색 폼으로 폐기 대상 좁히기 → 선택 → **선택된 태그 삭제**                          |
| **자산 메타 강화**    | 메타데이터 화면 → 도메인 = Asset, 키 = manufacturer 등 자유 추가                       |
| **자산 카테고리 표준화** | 온톨로지 화면 → 카테고리 트리 정비 → 카테고리별 메타속성 정의                                   |
| **새 단위 추가**     | 기준정보 → 단위 마스터 탭 → 추가                                                   |
| **운영 메타 일괄 추출** | 태그 화면 → 검색 → 엑셀 다운로드                                                   |

***

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

**Q. 사이트를 추가했는데** [**대시보드**](/plantpulse-platform/user/summary.md) **지도에 마커가 안 보입니다.** A. 사이트 추가 시 위·경도를 등록하지 않으면 마커가 표시되지 않습니다. 사이트 카드의 🔧 수정 → 위/경도 입력.

**Q. 모델 확정과 메타 스토어 백업의 차이는?** A. **모델 확정**은 자산/태그를 룰 엔진에 일괄 등록(운영 활성화), **메타 스토어 백업**은 메타 저장소 전체를 백업 파일로 보관(데이터 보존)하는 별도 작업입니다.

**Q. 자산 트리에서 부모 자산을 변경할 수 있나요?** A. 일반적으로 자산의 상위 노드는 변경하지 않는 것을 권장합니다(이력·룰 정합성). 변경이 꼭 필요하면 시스템 관리자와 상의 후 진행하세요.

**Q. 태그를 삭제하면 과거 데이터도 사라지나요?** A. 태그 메타는 삭제되지만, 시계열 데이터는 보존 정책에 따라 일정 기간 유지됩니다. 시스템 관리자에게 정확한 보존 정책을 문의하세요.

**Q. 가상 태그와 일반 태그의 차이는?** A. **일반 태그**는 실제 센서/PLC 에서 데이터를 받지만, **가상 태그**는 다른 태그들의 값을 계산해 만들어진 가상의 시계열입니다. 예: A 센서와 B 센서의 차이를 가상 태그 C 로 정의.

**Q. 온톨로지를 사용하지 않으면 어떻게 되나요?** A. 기본 운영에는 영향이 없습니다. 온톨로지는 자산을 분류 체계로 관리하고 싶을 때(예: 모든 모터의 통합 보고서) 사용합니다.

**Q. 자산 트리에서 모델 확정 시간이 오래 걸립니다.** A. 자산이 많을수록 시간이 걸립니다(수천 개 단위에서 수 분). 모델 확정은 영업 시간 외에 진행하시는 것을 권장합니다.

**Q. 태그 검색에서 자동완성이 안 됩니다.** A. 사이트가 선택되어야 자동완성이 동작합니다. 사이트 셀렉터 먼저 설정하세요.

**Q. 메타데이터에 등록한 키-값을 어디서 볼 수 있나요?** A. 자산 상세 화면, 자산 트리의 메타 영역, 그리고 [플로우](/plantpulse-platform/user/flow.md) 의 도메인 CRUD 노드에서 메시지 페이로드의 일부로 사용할 수 있습니다.

**Q. 기준정보의 코드를 변경하면 기존 데이터에 영향이 있나요?** A. 네, 코드 변경은 기존 데이터에도 영향을 줍니다. 변경 전 시스템 관리자와 상의하시기 바랍니다.

***

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

* [대시보드](/plantpulse-platform/user/summary.md) — 등록 자산이 KPI 카드와 사이트 지도에 반영
* [연결 관리](/plantpulse-platform/user/connection.md) — 물리 모델(OPC) 등록과 상태 모니터링
* [데이터 포인트](/plantpulse-platform/user/data-point.md) — 등록 태그의 시계열 조회
* [설비](/plantpulse-platform/user/equipment.md) — 자산 트리의 설비를 카드 형태로 모니터링
* [생산 관리](/plantpulse-platform/user/production.md) — 작업지시·고객·제품·직원·근무표 등록
* [CEP > 스테이트먼트](/plantpulse-platform/user/cep.md#statement) — 모델 확정 후 등록되는 도메인 룰
* [플로우](/plantpulse-platform/user/flow.md) — 자산 자동 등록·메타 자동 갱신 자동화
* [상태 코드 정의](/plantpulse-platform/user/status.md) — 연결 상태·건강 상태 코드 매핑
