From 2c9e6fe272bf70210f71e5bf36a7dc7224494b25 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Fri, 11 Sep 2026 16:31:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20BGM=20=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E5=8A=A9=E6=89=8B=E9=99=90=E6=B5=81=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E7=9A=84=E6=96=AD=E8=A8=80=E5=8F=A3=E5=BE=84=EF=BC=9A=E5=8F=AA?= =?UTF-8?q?=E6=89=BF=E8=AF=BA=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E8=AF=AD=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - server-rs/crates/api-server/src/editor_background_music_prompt_assist.rs:consecutive_valid_requests_are_not_subject_to_a_feature_rate_limit 的 assert_eq!(mock.finish().len(), 4) 改为「到达 provider 的请求不少于 4 次」,并在该断言失败时打印捕获到的请求原文 为什么新形态才是它真正承诺的语义:用例名只承诺「连续合法请求不被特性限流」,那是客户端可见口径; 本模块的简化路径本身允许一轮内容重试(同文件 simplification_retries_* 四条用例正是它的定向覆盖), 因此 provider 的精确调用次数是实现细节,把它钉死会让一次合法重试变成假红。 「4 次调用都到达 provider」与原有的 200/非 429 断言都保留:短路、提前拒绝、限流仍然会红。 根因见 #327 问题 2.2(PR #316 run 1950:left: 5, right: 4)。 --- .../src/editor_background_music_prompt_assist.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server-rs/crates/api-server/src/editor_background_music_prompt_assist.rs b/server-rs/crates/api-server/src/editor_background_music_prompt_assist.rs index f7deb1cee..1af1817e0 100644 --- a/server-rs/crates/api-server/src/editor_background_music_prompt_assist.rs +++ b/server-rs/crates/api-server/src/editor_background_music_prompt_assist.rs @@ -846,7 +846,17 @@ mod tests { } let requests = mock.finish(); - assert_eq!(requests.len(), 4); + // 用例名承诺的是「连续合法请求不被特性限流」,所以这里只断言客户端口径: + // 4 次调用都必须真正到达 provider(不少于 4 次),且都成功、没有 429。 + // 不再断言「provider 恰好被调用 4 次」——本模块的简化路径本身允许一轮内容重试 + // (见 simplification_retries_* 用例),把精确次数钉死会让一次合法重试就变成假红 + // (#327 / PR #316 run 1950:left: 5, right: 4)。精确次数属于实现细节, + // 已由那几条定向重试用例覆盖。 + assert!( + requests.len() >= 4, + "4 次客户端调用都必须到达 provider,实际 {} 次:{requests:#?}", + requests.len() + ); for (status, payload) in responses { assert_eq!(status, StatusCode::OK, "{payload}"); assert_ne!(status, StatusCode::TOO_MANY_REQUESTS);