## 변경 내용 ### 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>
8.3 KiB
8.3 KiB