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;
}
}