namespace Infrastructure.StockData; /// /// SEIBro getSecnFrsecCusInfo(종목별 외화증권 보관현황) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력 (외화증권.md §3). /// 실샘플 래퍼 = <result> 소문자. 응답 필드는 NATION_CD·SECN_TPCD·FRSEC_TOT_HOLD_AMT·FRSEC_TOT_HOLD_QTY 4종 — /// STD_DT·ISIN 은 요청 파라미터라 배치가 스탬핑한다. 실샘플은 종목당 국가별 다수 행(예 DE·US) — 자연키 (StdDt,Isin,NationCd,SecnTpcd)로 전 행 반영(리뷰 결함 #3). /// public static class SeibroSecnFrsecCusParser { public sealed record Row( string? NationCd, string? SecnTpcd, decimal? FrsecTotHoldAmt, decimal? FrsecTotHoldQty ); public static IReadOnlyList Parse(SeibroXml.Envelope envelope) { var rows = new List(); foreach (var fields in envelope.Rows) { rows.Add(new Row( SeibroXml.GetOrNull(fields, "NATION_CD")?.Trim(), SeibroXml.GetOrNull(fields, "SECN_TPCD")?.Trim(), SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_TOT_HOLD_AMT")), SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_TOT_HOLD_QTY")) )); } return rows; } }