Files
ExperionCrawler/next_todo_list_hist_section.md
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

4.0 KiB

테스트 함수

함수 API 엔드포인트 테스트 항목
histLoad() GET /api/history/tagnames 1. 태그 이름 목록 로드
2. 8개 선택란 드롭다운 채움
3. 기존 선택값 보존
histQuery() GET /api/history/query 또는 POST /api/text-to-sql/query-history-interval 1. 단일 태그 조회
2. 다중 태그 조회
3. 기본 간격(5분) 처리
4. 1분 강제 처리
5. 사용자 간격(1시간, 1일 등) 처리
6. 시간 범위 필터
7. limit 파라미터
8. 테이블 렌더링
histReset() - 1. 모든 태그 선택 초기화
2. 시간 필드 초기화
3. 간격 및 limit 기본값 복구
4. 결과 숨김
htLoadStatus() GET /api/experion/hypertable/status 1. 하이퍼테이블 존재 여부 확인
2. 레코드 개수 표시
3. 보관 정책 확인
4. 압축 상태 확인
5. 연속 집계 상태 확인
htCreate() POST /api/experion/hypertable/create 1. 기본값으로 생성
2. 보관 정책 활성화
3. 압축 활성화
4. 연속 집계 생성
5. 데이터 마이그레이션
6. 기존 테이블이 있을 때 처리
htToggleRetention() - 1. 체크박스 상태 확인
2. 상태 메시지 변경
htToggleCompression() - 1. 체크박스 상태 확인
2. 상태 메시지 변경

테스트 시나리오

  1. 태그 불러오기: 태그 선택 버튼 → 8개 드롭다운 채움
  2. 기본 조회: 1개 태그, 간격=5분 → 기본 API 호출 확인
  3. 다중 태그 조회: 2개 태그 → OR 쿼리 확인
  4. 1분 간격: #hf-interval = 1 minute → HistoryIntervalRowDto 처리
  5. 사용자 간격: #hf-interval = 1 hour → Text-to-SQL API 호출 확인
  6. 테이블 렌더링: 결과 데이터 → timeBucket 또는 recordedAt 열 사용
  7. 하이퍼테이블 상태: 상태 버튼 → 현재 테이블 구조 표시
  8. 하이퍼테이블 생성: 하이퍼테이블이 없을 때 생성 확인
  9. 보관 정책 설정: 체크박스 → RetentionPolicy 확인
  10. 압축 설정: 체크박스 → Compression 확인
  11. 초기화: 초기화 버튼 → 모든 필드 초기화 확인

하이퍼테이블 하위 테스트

htLoadStatus() 테스트

항목 확인 포인트
테이블 존재 isHypertable: true/false, tableName: string
레코드 수 recordCount: number
보관 정책 hasRetentionPolicy: true/false
압축 hasCompression: true/false
연속 집계 hasContinuousAggregate: true/false

htCreate() 테스트

항목 리턴값
성공 { success, message, tableName }
충돌(409) { tableName } → 테이블 이미 있음
오류(500) { success, message } → 생성 실패

📝 전체 테스트 목록 요약

Phase 1 완료 항목 (1-7)

  • 01 인증서 관리 (cert) - 4개 함수, 4개 시나리오
  • 02 서버 접속 테스트 (conn) - 4개 함수, 4개 시나리오
  • 03 데이터 크롤링 (crawl) - 2개 함수, 5개 시나리오
  • 04 DB 저장 (db) - 4개 함수, 5개 시나리오
  • 05 노드맵 대시보드 (nm-dash) - 5개 함수, 5개 시나리오
  • 06 포인트빌더 (pb) - 9개 함수, 6개 시나리오
  • 07 이력 조회 (hist) - 7개 함수, 11개 시나리오 (작업 시작)

🗺️ 전체 테스트 플로우

flowchart TD
    A[인증서 관리 cert] --> B[서버 접속 conn]
    B --> C[데이터 크롤링 crawl]
    C --> D[DB 저장 db]
    D --> E[노드맵 대시보드 nm-dash]
    E --> F[포인트빌더 pb]
    F --> G[이력 조회 hist]
    
    subgraph Phase1 [Phase 1: UI 테스트 계획]
        A
        B
        C
        D
        E
        F
        G
    end