namespace Hc900Crawler.Core.Application.DTOs;

/// <summary>area별 sub_area 목록 조회 행</summary>
public class SubAreaTagDto
{
    public string  BaseTag     { get; set; } = "";
    public string? Area        { get; set; }
    public string? SubArea     { get; set; }
    public string? Description { get; set; }
}

/// <summary>sub_area bulk seed 결과 요약</summary>
public class SubAreaSeedResultDto
{
    public bool DryRun    { get; set; }
    public int  Assigned  { get; set; }   // 단일 sub_area 부여 (예: "P6-1")
    public int  Shared    { get; set; }   // 두 sub_area 공용 부여 (예: "P2-1,P2-2")
    public int  Unmatched { get; set; }   // 규칙 미적용 → NULL 유지 (수동 분류 대상)
    public Dictionary<string, int> BySubArea { get; set; } = new();
    public List<SubAreaSeedDetailDto> Details { get; set; } = new();
}

/// <summary>포인트 삭제 결과 — 연관 데이터 정리 현황 포함</summary>
public class PointDeleteResult
{
    public bool    Deleted            { get; set; }   // realtime_table 행 삭제 여부
    public string? BaseTag            { get; set; }
    public bool    MetadataPurged     { get; set; }   // 고아 tag_metadata(desc/area/sub_area) 정리됨
    public int     HistoryRowsDeleted { get; set; }   // history_table 삭제 행수 (opt-in 시에만 >0)
}

/// <summary>seed 상세 행 (dryRun 검증용)</summary>
public class SubAreaSeedDetailDto
{
    public string  BaseTag { get; set; } = "";
    public string  Area    { get; set; } = "";
    public string  Action  { get; set; } = "";   // "assign" | "shared" | "unmatched"
    public string? SubArea { get; set; }          // 공용이면 "P2-1,P2-2" 형식
    public string? Reason  { get; set; }
}
