Commit Graph

44 Commits

Author SHA1 Message Date
windpacer
35136ba91e feat: 로컬 LLM 채팅 기능 추가 (Ollama + vLLM, 스트리밍, MCP 도구 호출)
- OllamaController: Ollama/vLLM 프록시 API (채팅, 스트리밍, 모델 목록, 설정)
- UI: 새 대화 탭, 세션 관리, Markdown 렌더링, 스트리밍 응답
- vLLM: OpenAI-compatible API 지원, MCP function calling 통합
- Fix: McpClient DI 팩토리 등록 (HttpClient BaseAddress 문제 해결)
- Fix: llm-model.json 직렬화 JsonSerializer 사용
- Fix: nl2sql_worker KST 시간대 표시 (AT TIME ZONE Asia/Seoul)
- Program.cs: Ollama/vLLM HttpClient 등록 (1800s timeout)
2026-05-12 19:59:31 +09:00
windpacer
ab290df5cd fix: tag_metadata orphan cleanup on metadata reload 2026-05-11 22:02:29 +09:00
windpacer
5cacc5dbb5 feat: LLM 모델명 외부 설정 + 포인트 추가 기능
- mcp-server: 하드코딩된 모델명을 llm-model.json 기반 config.py로 외부화
- C#: AppendPointsAsync로 기존 데이터 유지하면서 포인트 추가
- C#: LlmConfigController로 LLM 모델명 조회/저장 API
- Frontend: LLM 설정 UI 카드 + 포인트 빌더에서 추가하기 버튼
2026-05-11 17:55:18 +09:00
windpacer
de728f013a docs: 이벤트 히스토리 기획서 및 MiniMax 진단 보고서 추가 2026-05-11 15:54:17 +09:00
windpacer
c6e284404c feat: 디지털 이벤트 히스토리 기능 추가 (event_history_table, DigitalEventDetectorService, API, UI) 2026-05-11 15:48:00 +09:00
windpacer
7330711499 chore: 프로젝트 파일 구조 정리 - 루트 파일 폴더별 이동, 테스트/구버전 삭제
루트 파일 정리:
- DXF/P&ID 관련 → dxf-graph/
- fastTable 관련 → fastTable/
- plan/ → plans/ 통합 (최신 버전 유지)
- 테스트 출력 파일, 구버전 프로젝트 삭제
- 불필요한 루트 문서 삭제
2026-05-10 17:39:58 +09:00
windpacer
f73ec217ad feat: 포인트빌더 그룹화 UI + 미리보기/선택적 적용 기능
기존 단일 조건(name/dataType) 방식에서 그룹별 패턴 기반 방식으로 개편.
컨트롤러/아날로그/디지털/사용자정의 5개 그룹에 대해 태그 패턴, 속성 체크박스, DataType을 각각 설정 가능.
미리보기(PREVIEW) API 추가하여 조건에 매칭되는 포인트를 확인 후 선택적으로 적용 가능.
2026-05-10 17:22:37 +09:00
windpacer
05e2156843 mcp-server warning clear 2026-05-09 04:28:10 +09:00
windpacer
9b87ad13a0 feat: pv 값 파싱 헬퍼 parseEnumPv() 추가, 포인트빌더 테이블 적용 2026-05-08 18:11:05 +09:00
windpacer
f01ab13ab9 feat: v_tag_summary 뷰에서 state descriptor JOIN 제거, 고아 데이터 DELETE 추가 2026-05-08 18:10:55 +09:00
windpacer
831390d59d feat: MetaAttributes에서 state0~7descriptor 제거, 주석 동시 업데이트 2026-05-08 18:10:45 +09:00
windpacer
e923aab43b opencode 로 바꾸고 작업전 커밋 2026-05-08 17:22:10 +09:00
windpacer
15c17522c8 MCP-서버 리팩토링 후 P&ID 추출 테스트전 다른 기능 확인 후 커밋 2026-05-04 10:35:13 +09:00
windpacer
a0404b1fee chore: .gitignore에 Python 캐시 및 가상환경 무시 규칙 추가 2026-05-03 03:58:23 +09:00
windpacer
f71ec310e4 feat: P&ID 그래프 파이프라인 및 MCP 서버 개선
- P&ID 그래프 파이프라인 구현 (py)
  - pid_geometric_extractor.py: 기하학적 특징 추출
  - pid_intelligent_mapper.py: 태그 매핑
  - pid_topology_builder.py: 위상 구축
  - test_pipeline_phase2.py, test_pipeline_phase3.py: 테스트

- MCP 서버 개선
  - server.py: 멀티프로세싱 지원
  - pipeline/: 분석, 추출, 매핑, 위상 모듈 추가

- C# P&ID 그래프 서비스
  - PidGraphDtos.cs: DTO 정의
  - PidGraphService.cs: 비즈니스 로직
  - PidGraphController.cs: API 컨트롤러

- OPC UA 서비스 개선
  - ExperionOpcServerService.cs
  - ExperionRealtimeService.cs
  - ExperionFastService.cs

- MCP 클라이언트 및 호스팅 서비스 개선
  - McpClient.cs
  - McpServerHostedService.cs

- 웹 UI 개선
  - pid_graph_view.html: P&ID 그래프 뷰어
  - pid-viewer.js: 뷰어 로직
  - app.js: 메인 앱
  - pid_graph.css: 스타일

- 프로젝트 설정 업데이트
  - ExperionCrawler.csproj
  - Program.cs
2026-05-03 03:50:20 +09:00
windpacer
30182bf020 feat: implement P&ID extraction and tag mapping, update MCP server and web UI 2026-05-02 14:56:04 +09:00
windpacer
fb11359b4c 2026년 4월 30일 Stable State 2026-04-30 08:16:21 +09:00
windpacer
c0f32177bf fix: TimescaleDB hypertable 오류 수정 - fast_record 테이블의 복합 키 설정 2026-04-29 18:46:54 +09:00
windpacer
38c0d3c888 docs: fastSession 오류 수정 내용 문서화 2026-04-29 18:44:33 +09:00
windpacer
6689612b3b fix: fastSession 시작 시 엔티티 변경 오류 수정 - CreateFastSessionAsync에서 Status를 Pending에서 Running으로 변경 2026-04-29 18:43:02 +09:00
windpacer
86dd268dab fix(#fastRecord): 프론트엔드 API 호출 경로를 /api/pointbuilder/points로 수정 2026-04-29 17:34:03 +09:00
windpacer
0ec94946f2 fix(#fastRecord): GetPoints API 응답 키를 items로 변경하여 프론트엔드와 호환성 확보 2026-04-29 17:32:14 +09:00
windpacer
cf0cf68fdd docs(#12): step12.md 사전/사후 확인 항목 업데이트 2026-04-29 10:10:51 +09:00
windpacer
6312542ea4 fix(#12): fastRecord UI 구현 - app.js JavaScript 로직 추가 2026-04-29 10:10:15 +09:00
windpacer
f99f7dbd9d Text-to-SQL : MCP Server w/LLM 완성 2026-04-28 22:30:41 +09:00
windpacer
d8266a2d55 feat: MCP 클라이언트 통합 및 TextToSqlController MCP 엔드포인트 추가
- IMcpService 인터페이스 및 McpClient/McpService 구현 추가
  - McpClient: Python MCP 서버(localhost:5001)와 JSON-RPC over HTTP 통신
  - McpService: McpClient 위임 래퍼, IMcpService 구현
  - [JsonPropertyName], PropertyNameCaseInsensitive 적용으로 JSON 역직렬화 수정
- TextToSqlController에 MCP 엔드포인트 5개 추가
  - GET  /api/text-to-sql/tools
  - POST /api/text-to-sql/execute-mcp
  - POST /api/text-to-sql/query-history
  - GET  /api/text-to-sql/tags/search
  - GET  /api/text-to-sql/drawings
- HistoryQueryRequestDto 추가 (TextToSqlDtos.cs)
- QueryHistoryWithIntervalAsync 올바른 메서드 호출로 수정 (IExperionDbService)
- Program.cs: McpClient 싱글톤 등록, AddHttpClient 잘못된 등록 수정
- 빌드 에러 0건, 경고 0건

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 01:05:09 +09:00
windpacer
787d859fb5 backup [2026년 4월 26일 전체 백업]
ExperionCrawler 프로젝트 전체 백업 (11개 커밋 포함)
- OPC UA IIoT 데이터 브리징 인프라
- Text-to-SQL 쿼리 엔진
- 실시간 데이터 스트리밍 서비스
- ASP.NET Core Web API
- TimescaleDB/SQLite 데이터베이스
- 보안 인증서 관리
- 통합 테스트
2026-04-26 19:34:15 +09:00
windpacer
77bdcf1f7f feat: ExperionCrawler IIoT OPC UA Data Bridge Infrastructure
Major project initialization and feature implementation:

**Core Features:**
- OPC UA client for Honeywell Experion HS R530 integration
- Real-time data streaming and history data retrieval
- Text-to-SQL query engine with TimeScaleDB
- JSON-based node configuration system
- SQLite database with migration support

**Architecture:**
- Clean architecture with Domain, Application, Infrastructure layers
- ASP.NET Core Web API frontend
- Web UI with real-time visualization
- PKI-based OPC UA authentication (TLS)

**Infrastructure Components:**
- ExperionOpcClient: OPC UA connection management
- ExperionRealtimeService: Real-time data streaming
- ExperionHistoryService: Historical data queries
- TextToSqlService: Natural language to SQL queries
- SqlValidator: SQL injection prevention

**Database:**
- TimescaleDB integration (recommended) or SQLite fallback
- Entity Framework Core with Extenstion methods
- OPCTag, KeyValue tables for data storage

**Security:**
- Certificate-based OPC UA endpoint security
- SSL/TLS encryption for database connections
- Output param binding injection prevention

**Testing:**
- Unit tests for TextToSqlService and SqlValidator
- Integration tests for Korean time range extraction

See REVIEW_REQUEST.md for detailed code review information.
2026-04-26 19:28:56 +09:00
windpacer
e34ec08001 fix(#4): HypertableController 테이블명/컬럼명 입력 검증 추가
- TableName allowlist(history_table) + PostgreSQL 식별자 regex(^[a-z_][a-z0-9_]{0,62}$) 검증
- 검증 실패 시 400 BadRequest 반환
- issues.md: #4 fixed, #7/#8/#9 status 정정(실제 수정 완료), #10/#12 needs-review, #16/#17/#18 wont-fix

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:17:16 +09:00
windpacer
6ac399bb35 fix(#13): TextToSqlController ILogger 주입 추가 및 OpcClient unused variable 제거
- TextToSqlController: _logger 필드 누락으로 인한 빌드 에러 수정 (ILogger<TextToSqlController> DI 추가)
- ExperionOpcClient: catch(Exception ex)에서 미사용 변수 경고 제거 (catch로 변경)
- issues.md: #11/#14/#15/#19/#20 wont-fix 판정, #13 fixed 표시

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:12:32 +09:00
windpacer
dd6ff78d25 fix(#8): AnalyzeAsync 날짜 파라미터도 parameterized 처리(SQL 인젝션 방지) 2026-04-26 11:34:54 +09:00
windpacer
544b2570fd fix(#8): AnalyzeAsync SQL 인젝션 방지 (parameterized query 사용) 2026-04-26 11:33:16 +09:00
windpacer
e7409f77d5 fix(#7): DisposeSessionAsync 중복 close 후 dispose 방지 (ConcurrentDictionary 플래그) 2026-04-26 11:31:46 +09:00
windpacer
072d0c956e fix(#6): Dispose null 예외 로깅 추가 (리소스 정리 실패 모니터링) 2026-04-26 11:26:13 +09:00
windpacer
455526bd67 fix(#5): Import API 파일 경로 조작 공격 방어 (경계 문자 검증) 2026-04-26 11:25:12 +09:00
windpacer
876f98f106 fix(#3): ExperionDbContext SQL parameterized query 변환 (SQL injection 방지) 2026-04-26 11:23:27 +09:00
windpacer
6f0aba4b04 fix(#2): TextToSqlService 태그 존재 확인 시 예외 처리 수정 (false 반환) 2026-04-26 11:21:15 +09:00
windpacer
39f6138f9d fix(#1): ExperionRealtimeService 재진입 방지 플래그 추가 2026-04-26 11:19:57 +09:00
windpacer
4d46df1b4c feat: .gitignore 추가 및 빌드 출력 제거, 소스 코드 업데이트 2026-04-23 09:30:08 +09:00
windpacer
d9f5bfd6f6 # 5. OPC UA 서버 기능 (Phase 1) — 완료 2026-04-15 08:19:55 +00:00
windpacer
85e596d66b Save Before Big Change 2026-04-15 07:39:43 +00:00
windpacer
9325b13f2b 운전시 버그 수정 2026-04-15 01:43:07 +00:00
windpacer
68758f1bb8 Realtime DB 추가 및 Historical DB추가 2026-04-14 09:56:37 +00:00
windpacer
323aec34af ExperionCrawler First Commit 2026-04-14 04:02:43 +00:00