using System.Globalization;
namespace Infrastructure.StockData;
///
/// SEIBro getIssucoCustnoByIsin(발행종목→발행회사번호 조회) 응답 파서 — 순수 C#.
/// 단건 fallback 용 (배치 미사용) — getShotnByMart 스냅샷에 없는 종목의 ISSUCO_CUSTNO 를 ISIN/단축코드로 개별 조회할 때 쓴다.
/// 행 필드: ISSUCO_CUSTNO(발행회사번호, 필수) / REP_SECN_NM(대표종목명, 선택). 회사번호 없는/비숫자 행은 건너뛴다.
///
public static class SeibroIssucoCustnoParser
{
/// 발행회사번호 1행
public sealed record Row(int IssucoCustno, string? RepSecnName);
public static IReadOnlyList Parse(SeibroXml.Envelope envelope)
{
var rows = new List();
foreach (var fields in envelope.Rows)
{
if (!int.TryParse(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO"), NumberStyles.Integer, CultureInfo.InvariantCulture, out var custno))
{
continue;
}
rows.Add(new Row(custno, SeibroXml.GetOrNull(fields, "REP_SECN_NM")?.Trim()));
}
return rows;
}
}