diff --git a/src/Core/Application/Services/PidExtractorService.cs b/src/Core/Application/Services/PidExtractorService.cs
index 54b3cc3..055b0f7 100644
--- a/src/Core/Application/Services/PidExtractorService.cs
+++ b/src/Core/Application/Services/PidExtractorService.cs
@@ -89,7 +89,7 @@ public class PidExtractorService : IPidExtractorService
var category = await MatchCategoryAsync(item.TagNo);
var tagDcs = await ResolveTagDcsAsync(item.TagNo);
- var tagClass = ClassifyTagClass(item.TagNo, category, tagDcs, experionTag != null);
+ var tagClass = ClassifyTagClass(category, tagDcs);
var newItem = new PidEquipment
{
@@ -823,24 +823,15 @@ public class PidExtractorService : IPidExtractorService
}
///
- /// 계기(instrument) 하위 분류.
- /// tag_dcs(prefix rule 기반)를 우선 신호로 사용:
- /// tag_dcs=TRUE → system (DCS 함수블록 확정. FT 전송기가 Experion에 연결돼도 field)
- /// tag_dcs=FALSE → field (현장 물리 계기)
- /// hasExperionLink는 더 이상 TagClass 결정에 사용하지 않음
- /// (ExperionTagId FK로 연결 정보는 보존됨).
- /// instrument 가 아닌 카테고리는 null.
+ /// 계기(instrument) 하위 분류. tag_dcs(prefix rule)가 단일 기준.
+ /// tag_dcs=TRUE → system (DCS 함수블록: FIC/TIC/PIC류)
+ /// tag_dcs=FALSE → field (현장 물리 계기: FT/FCV류)
+ /// instrument 이외 카테고리는 null.
///
- private static string? ClassifyTagClass(string tagNo, string? category, bool tagDcs, bool hasExperionLink)
+ private static string? ClassifyTagClass(string? category, bool tagDcs)
{
- if (category != PidEquipment.CategoryInstrument)
- return null;
-
- // tag_dcs=TRUE: prefix rule이 ground truth → system 확정
- if (tagDcs) return PidEquipment.TagClassSystem;
-
- // tag_dcs=FALSE: 현장 계기 → field (hasExperionLink 무관)
- return PidEquipment.TagClassField;
+ if (category != PidEquipment.CategoryInstrument) return null;
+ return tagDcs ? PidEquipment.TagClassSystem : PidEquipment.TagClassField;
}
// ── Prefix Rule CRUD ───────────────────────────────────────────────────────
@@ -916,7 +907,7 @@ public class PidExtractorService : IPidExtractorService
var tagDcs = await ResolveTagDcsAsync(item.TagNo);
item.Category = category;
item.TagDcs = tagDcs;
- item.TagClass = ClassifyTagClass(item.TagNo, category, tagDcs, item.ExperionTagId != null);
+ item.TagClass = ClassifyTagClass(category, tagDcs);
item.UpdatedAt = DateTime.UtcNow;
total++;
}
@@ -938,7 +929,7 @@ public class PidExtractorService : IPidExtractorService
{
var tagDcs = await ResolveTagDcsAsync(item.TagNo);
item.TagDcs = tagDcs;
- item.TagClass = ClassifyTagClass(item.TagNo, item.Category, tagDcs, item.ExperionTagId != null);
+ item.TagClass = ClassifyTagClass(item.Category, tagDcs);
item.UpdatedAt = DateTime.UtcNow;
total++;
}
diff --git a/src/Web/wwwroot/js/pid.js b/src/Web/wwwroot/js/pid.js
index 1064b66..690716b 100644
--- a/src/Web/wwwroot/js/pid.js
+++ b/src/Web/wwwroot/js/pid.js
@@ -410,7 +410,6 @@ async function pidRefreshPrefixRules() {
// 그룹 헤더: 규칙이 0건이어도 추가 입력행은 항상 표시
const count = rules ? rules.length : 0;
- const isInstr = vcat === 'instrument_dcs' || vcat === 'instrument_field';
html += `