Files
ExperionCrawler/fastTable/step1.md

3.2 KiB

STEP 1 — 엔티티 추가 (ExperionEntities.cs)

사전 확인 (작업 전 반드시 수행)

  1. src/Core/Domain/Entities/ExperionEntities.cs 파일을 열어 현재 내용을 읽는다.
  2. 아래 항목을 확인하고 결과를 기록한다:
    • FastSession 클래스가 이미 존재하는가? → 존재하면 STEP 1 건너뜀
    • FastRecord 클래스가 이미 존재하는가? → 존재하면 STEP 1 건너뜀
    • 파일 하단에 추가할 공간이 있는가?
    • using System.ComponentModel.DataAnnotations.Schema; import가 있는가? → 없으면 추가

작업 내용

파일: src/Core/Domain/Entities/ExperionEntities.cs

파일 하단에 아래 두 클래스를 추가한다. (기존 코드 수정 없음)

/// <summary>fastSession — 데이터 수집 세션 메타</summary>
[Table("fast_session")]
public class FastSession
{
    [Column("id")]             public int       Id            { get; set; }
    [Column("name")]           public string    Name          { get; set; } = string.Empty;
    [Column("started_at")]     public DateTime  StartedAt     { get; set; }
    [Column("ended_at")]       public DateTime? EndedAt       { get; set; }
    [Column("status")]         public string    Status        { get; set; } = "Pending";
    // Status 허용값: Pending / Running / Completed / Cancelled / Failed / RowLimitReached
    [Column("sampling_ms")]    public int       SamplingMs    { get; set; }
    [Column("duration_sec")]   public int       DurationSec   { get; set; }
    [Column("tag_list")]       public string    TagList       { get; set; } = "[]"; // JSONB → string[] 직렬화
    [Column("row_count")]      public int       RowCount      { get; set; }
    [Column("retention_days")] public int?      RetentionDays { get; set; } // null = 무한 보관
    [Column("pinned")]         public bool      Pinned        { get; set; }
}

/// <summary>fastRecord — 시계열 데이터 (Long 포맷: 태그 1행/시점)</summary>
[Table("fast_record")]
public class FastRecord
{
    [Column("id")]          public int      Id         { get; set; }
    [Column("session_id")]  public int      SessionId  { get; set; }
    [Column("recorded_at")] public DateTime RecordedAt { get; set; }
    [Column("tagname")]     public string   TagName    { get; set; } = string.Empty;
    [Column("value")]       public string?  Value      { get; set; }
}

사후 확인 (작업 후 반드시 수행)

  1. ExperionEntities.cs 파일을 다시 열어 추가된 내용을 읽는다.
  2. 아래 항목을 하나씩 확인하고 결과를 [x] 로 기록한다
    • FastSession 클래스가 파일에 존재하는가?
    • FastRecord 클래스가 파일에 존재하는가?
    • [Table("fast_session")] 어트리뷰트가 올바르게 붙어 있는가?
    • [Table("fast_record")] 어트리뷰트가 올바르게 붙어 있는가?
    • TagList 필드의 기본값이 "[]" 문자열인가? (string[]이 아닌 string 타입)
  3. dotnet build src/Core 실행 → 경고/에러 0개 확인
  4. 문제가 있으면 수정 후 다시 빌드 확인

완료 조건

  • dotnet build src/Core 결과: 에러 0, 경고 0
  • FastSession, FastRecord 두 클래스 모두 파일에 존재