| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getBondIssuInfo(채권 발행내역) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력.
- /// 자연키 ISIN 없으면 건너뛴다. ISSU_DT(YYYYMMDD)→DateOnly (없으면 발행일 스윕값을 배치가 스탬핑 못 하므로 스킵).
- /// </summary>
- public static class SeibroBondIssuParser
- {
- public sealed record Row(
- DateOnly IssuDt,
- int? IssucoCustno,
- string? IssucoCustNm,
- string Isin,
- string? KorSecnNm
- );
- public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<Row>();
- 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;
- }
- }
|