修复: gen_stream判重+重试分类+状态机最短路径+既有测试修复

This commit is contained in:
lxy
2026-08-12 00:29:06 +08:00
parent 9407f821b9
commit d31a27512c
36 changed files with 2614 additions and 264 deletions
+11 -3
View File
@@ -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));
}
}