| package sse | |
| import ( | |
| "io" | |
| "net/http" | |
| "strings" | |
| "testing" | |
| ) | |
| func TestCollectStreamDedupesContinueSnapshotReplay(t *testing.T) { | |
| prefix := "我们被问到:这是一个很长的续答快照前缀,用来验证去重逻辑不会误伤正常 token。" | |
| body := strings.Join([]string{ | |
| `data: {"v":{"response":{"fragments":[{"id":2,"type":"THINK","content":"` + prefix + `","references":[],"stage_id":1}]}}}`, | |
| ``, | |
| `data: {"p":"response/status","v":"INCOMPLETE"}`, | |
| ``, | |
| `data: {"v":{"response":{"fragments":[{"id":2,"type":"THINK","content":"` + prefix + `继续","references":[],"stage_id":1}]}}}`, | |
| ``, | |
| `data: {"v":"分析"}`, | |
| ``, | |
| `data: {"p":"response/status","v":"FINISHED"}`, | |
| ``, | |
| }, "\n") | |
| resp := &http.Response{Body: io.NopCloser(strings.NewReader(body))} | |
| got := CollectStream(resp, true, true) | |
| if got.Thinking != prefix+"继续分析" { | |
| t.Fatalf("unexpected thinking after dedupe: %q", got.Thinking) | |
| } | |
| } | |