namespace Infrastructure.StockData;
///
/// SEIBro getDerivCombiIssuInfo(파생결합증권 발행내역) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
/// 실샘플 래퍼 = <result> **소문자** (readme §1 확정 — getDerivCombiIssuInfo·getBassetUnredScale 2종만 소문자).
/// SeibroXml 이 대소문자를 무시해 흡수하지만 fixture 테스트 기대값은 파일별 실제 래퍼 기준으로 작성한다.
/// 응답 필드는 Isin·KorSecnNm·IssucoCustno 3종뿐 — SecnKacd·IssuDt 는 배치가 요청 파라미터를 스탬핑. 자연키 ISIN 없으면 스킵.
///
public static class SeibroDerivCombiIssuParser
{
public sealed record Row(
string Isin,
string? KorSecnNm,
int? IssucoCustno
);
public static IReadOnlyList Parse(SeibroXml.Envelope envelope)
{
var rows = new List();
foreach (var fields in envelope.Rows)
{
var isin = SeibroXml.GetOrNull(fields, "ISIN")?.Trim();
if (string.IsNullOrEmpty(isin))
{
continue;
}
rows.Add(new Row(
isin,
SeibroXml.GetOrNull(fields, "KOR_SECN_NM")?.Trim(),
SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO"))
));
}
return rows;
}
}