From b281045df5cdd1f8c86ab201c5999fd37dccdfaa Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 9 Sep 2026 23:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=8B=E4=BB=B6=E8=B7=A8?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=BA=8F=E5=88=97=E5=8C=96=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=A9=BA=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/fidc-core/src/factor_events.rs | 2 +- crates/fidc-core/src/pattern_context.rs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/fidc-core/src/factor_events.rs b/crates/fidc-core/src/factor_events.rs index 484f38f..f4c32ba 100644 --- a/crates/fidc-core/src/factor_events.rs +++ b/crates/fidc-core/src/factor_events.rs @@ -53,7 +53,7 @@ pub enum Expr { Operator { name: String, args: Vec, - #[serde(default)] + #[serde(default, skip_serializing_if = "Option::is_none")] window: Option, }, } diff --git a/crates/fidc-core/src/pattern_context.rs b/crates/fidc-core/src/pattern_context.rs index 6902045..9d6d7e1 100644 --- a/crates/fidc-core/src/pattern_context.rs +++ b/crates/fidc-core/src/pattern_context.rs @@ -248,6 +248,11 @@ mod tests { use super::*; use crate::{BenchmarkSnapshot, DailyFactorSnapshot, DailyMarketSnapshot, Instrument}; use serde_json::json; + #[test] + fn normalized_rule_does_not_turn_an_omitted_window_into_explicit_null() { + let expression:Expr=serde_json::from_value(json!({"kind":"operator","name":"GT","args":[{"kind":"field","name":"close"},{"kind":"number","value":1}]})).unwrap(); + assert!(serde_json::to_value(expression).unwrap().get("window").is_none()); + } fn data(future: bool, reference: bool) -> DataSet { let mut days = vec![ NaiveDate::from_ymd_opt(2026, 9, 4).unwrap(),