修复: gen_stream判重+重试分类+状态机最短路径+既有测试修复
This commit is contained in:
@@ -401,15 +401,23 @@ fn normalize_verdict_in_place(v: &mut serde_json::Value) {
|
||||
|
||||
/// 原地 clamp dimensions.*.score 到 [0,10]。只处理 number 类型,跳过非 number(留原值,
|
||||
/// serde 反序列化由调用方按 schema 容错)。
|
||||
///
|
||||
/// 类型保真:合法范围内的整数(如 9)保持整数原样,不转 f64(9 → 9.0,污染下游展示与
|
||||
/// 断言;测试 parse_review_json_valid_passes_through 锁定 9 应为整数)。仅越界值改写
|
||||
/// (99/-1 → clamp 到 10/0)。
|
||||
fn clamp_dimension_scores_in_place(v: &mut serde_json::Value) {
|
||||
let Some(obj) = v.as_object_mut() else { return };
|
||||
let Some(dims) = obj.get_mut("dimensions").and_then(|d| d.as_object_mut()) else { return };
|
||||
for (_, dim) in dims.iter_mut() {
|
||||
let Some(dim_obj) = dim.as_object_mut() else { continue };
|
||||
if let Some(score) = dim_obj.get_mut("score").and_then(|s| s.as_f64()) {
|
||||
let clamped = score.clamp(0.0, 10.0);
|
||||
dim_obj.insert("score".into(), serde_json::json!(clamped));
|
||||
let Some(score) = dim_obj.get("score") else { continue };
|
||||
let Some(f) = score.as_f64() else { continue };
|
||||
// 合法范围 [0,10] 内:保留原值(整数仍是整数,浮点仍是浮点),仅越界才改写 clamp 值。
|
||||
if (0.0..=10.0).contains(&f) {
|
||||
continue;
|
||||
}
|
||||
let clamped = f.clamp(0.0, 10.0);
|
||||
dim_obj.insert("score".into(), serde_json::json!(clamped));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user