From b5a80f69cb2e2793e5134e23a0eb3e72cdbdbe0b Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 03:48:12 +0800 Subject: Add multi-source bond quote probe fields and daily fallback (3d-20) --- src/FundLab.Api/BondQuoteProbe.fs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/FundLab.Api/BondQuoteProbe.fs') diff --git a/src/FundLab.Api/BondQuoteProbe.fs b/src/FundLab.Api/BondQuoteProbe.fs index 0cb7c3b..311dec5 100644 --- a/src/FundLab.Api/BondQuoteProbe.fs +++ b/src/FundLab.Api/BondQuoteProbe.fs @@ -10,8 +10,12 @@ open System.Threading type BondQuote = { Code: string + SourceRevision: string Name: string option Price: decimal option + CleanPrice: decimal option + AccruedInterest: decimal option + Date: DateOnly option MaturityDate: DateOnly option } @@ -49,12 +53,22 @@ type AkshareBondQuoteProbe(collector: IMarketDataCollector) = | Ok json -> match MarketData.parseBondQuotePayload json with | Error message -> Error(InvalidMarketDataPayload message) + | Ok payload when not (String.Equals(payload.Code, normalized, StringComparison.Ordinal)) -> + Error( + InvalidMarketDataPayload( + sprintf "payload code '%s' does not match requested code '%s'" payload.Code normalized + ) + ) | Ok payload -> let quote = { Code = payload.Code + SourceRevision = payload.SourceRevision Name = payload.Name Price = payload.Price + CleanPrice = payload.CleanPrice + AccruedInterest = payload.AccruedInterest + Date = payload.Date MaturityDate = payload.MaturityDate } -- cgit v1.2.3