Commit Graph

23 Commits

Author SHA1 Message Date
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