namespace Infrastructure.StockData; /// /// SEIBro getBondIssuInfo(채권 발행내역) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력. /// 자연키 ISIN 없으면 건너뛴다. ISSU_DT(YYYYMMDD)→DateOnly (없으면 발행일 스윕값을 배치가 스탬핑 못 하므로 스킵). /// public static class SeibroBondIssuParser { public sealed record Row( DateOnly IssuDt, int? IssucoCustno, string? IssucoCustNm, string Isin, string? KorSecnNm ); public static IReadOnlyList Parse(SeibroXml.Envelope envelope) { var rows = new List(); foreach (var fields in envelope.Rows) { var isin = SeibroXml.GetOrNull(fields, "ISIN")?.Trim(); var issuDt = SeibroFieldParse.Date(SeibroXml.GetOrNull(fields, "ISSU_DT")); if (string.IsNullOrEmpty(isin) || issuDt is null) { continue; } rows.Add(new Row( issuDt.Value, SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO")), SeibroXml.GetOrNull(fields, "ISSUCO_CUST_NM")?.Trim(), isin, SeibroXml.GetOrNull(fields, "KOR_SECN_NM")?.Trim() )); } return rows; } }