namespace Infrastructure.StockData;
///
/// SEIBro getBassetUnredScale(기초자산별 미상환규모) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
/// 실샘플 래퍼 = <result> **소문자** (readme §1 확정 — getDerivCombiIssuInfo·getBassetUnredScale 2종만 소문자).
/// 응답 필드는 BassetContent·UnredSecncnt·UnredRema 3종 — StdDt·StndBassetCd·SecnTpcd 는 배치가 요청 파라미터를 스탬핑.
/// ⚠️ 실샘플에서 UNRED_REMA 가 빈 value(SeibroXml 이 키 제외 → null) 케이스 존재 — decimal? null 방어. 종목당 1행이라 첫 행만 의미.
///
public static class SeibroBassetUnredScaleParser
{
public sealed record Row(
string? BassetContent,
int? UnredSecncnt,
decimal? UnredRema
);
public static IReadOnlyList Parse(SeibroXml.Envelope envelope)
{
var rows = new List();
foreach (var fields in envelope.Rows)
{
rows.Add(new Row(
SeibroXml.GetOrNull(fields, "BASSET_CONTENT")?.Trim(),
SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "UNRED_SECNCNT")),
SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "UNRED_REMA"))
));
}
return rows;
}
}