feat: pid_equipment에 tag_dcs BOOLEAN 추가 — DCS 함수블록 vs 현장 계기 구별
## 변경 내용 ### DB 스키마 (Boot DDL) - pid_prefix_rules.tag_dcs BOOLEAN NOT NULL DEFAULT FALSE 추가 - DCS prefix 시드 마킹: FIC/TIC/PIC/LIC/FY/TY/PY/LY/FV/TV/PV/LV → tag_dcs=TRUE - pid_equipment.tag_dcs BOOLEAN NOT NULL DEFAULT FALSE 추가 - 기존 행 backfill: instrument_type LIKE prefix% StartsWith 매칭 (FICQ/FICA 자동 포함) ### C# 도메인/서비스 - PidPrefixRule: TagDcs bool 프로퍼티 추가 - PidEquipment: TagDcs bool 프로퍼티 추가 - PidPrefixRuleDto (3개 record): TagDcs 추가 - PidExtractorService: - ResolveTagDcsAsync() 신규 — StartsWith 매칭, 가장 긴 prefix 우선 - ClassifyTagClass() 재설계 — tagDcs 우선 (hasExperionLink 제거) - 추출 저장 시 TagDcs 채우기 - ExportToExcelAsync() col18=DCS태그 추가 (col17=id 보호) - ImportFromExcelAsync() col18 읽기 (hasDcsCol 감지) - ApplyCategoriesToExistingAsync() 두 루프에 tag_dcs backfill 추가 - CreatePrefixRuleAsync/UpdatePrefixRuleAsync TagDcs 저장 ### Web Controller - PidController.GetPrefixRules: tagDcs: r.TagDcs 추가 ### Web UI (pid.js) - PREFIX 그룹 각 행에 DCS/현장 배지 + 체크박스 - Add/Update body에 tagDcs 전송 ### MCP/LLM - server.py: _DCS_PREFIXES frozenset 추가 - _classify_pid_tag(): tag_dcs 반환 필드 추가 - _DB_SCHEMA: pid_equipment 테이블 설명 추가 - upsert_pid_connection: tag_dcs 파라미터 + UPDATE/INSERT SQL 수정 - sql_prompt.py: pid_equipment 테이블 추가 - prompts/plant_context.md: tag_dcs 설명 + 쿼리 예시 추가 ## 설계 결정 - FT 전송기는 Experion 연결 여부와 무관하게 현장 계기 (tag_dcs=FALSE) - tag_dcs=TRUE: prefix rule이 ground truth → system 확정 - hasExperionLink는 TagClass 결정에서 제거 (연결 정보는 ExperionTagId FK로 보존) - compound prefix (FICQ/FICA): LIKE StartsWith 매칭으로 자동 커버 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -327,3 +327,28 @@ AND from_tag IN ('FT-6118','P-6118',...);
|
||||
- 설명할 때 "이 장비는 2개 경로가 있음"이라고 명시
|
||||
- OR 병합된 값("A, B" 같은)은 없음 — 각 행은 단일 경로
|
||||
- `from_at`, `to_at`은 연결 지점 상세 (예: "C-6111 중상부 제품 노즐")
|
||||
|
||||
---
|
||||
|
||||
## pid_equipment.tag_dcs — 현장 계기 vs DCS 함수블록 구별
|
||||
|
||||
- **tag_dcs = TRUE**: DCS 내부 함수블록 (FIC, TIC, PIC, LIC, FY, TY, PY, LY 등 compound형 포함)
|
||||
- 물리 기기 없음. Experion DB 포인트로만 존재
|
||||
- 예: FIC-6113(유량제어기), TIC-6201(온도제어기)
|
||||
- **tag_dcs = FALSE**: 현장 물리 계기 (FT, PT, LT, FCV, PSV, XV 등)
|
||||
- P&ID 도면에 기기 심벌로 표시되는 실물. Experion 연결 여부 무관하게 field
|
||||
- 예: FT-6113(유량전송기), FCV-6113(제어밸브)
|
||||
|
||||
### 쿼리 예시
|
||||
|
||||
```sql
|
||||
-- DCS 태그 수
|
||||
SELECT COUNT(*) FROM pid_equipment WHERE tag_dcs = TRUE;
|
||||
|
||||
-- 현장 계기 목록
|
||||
SELECT tag_no, instrument_type FROM pid_equipment
|
||||
WHERE tag_dcs = FALSE AND category = 'instrument';
|
||||
|
||||
-- 특정 태그 DCS 여부 확인
|
||||
SELECT tag_no, tag_dcs, tag_class FROM pid_equipment WHERE tag_no = 'FIC-6113';
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user