jay77721
57b3a7384d
fix(go-models): record Novita streaming usage without chatConfig ( #17778 )
...
Relate to #17284 .
## Problem
`novitaHandleStream` guarded usage recording with `if found &&
chatConfig != nil`. When a caller passes a nil `*ChatConfig` — common in
the service layer (`model_chat.go`, `chat_pipeline.go`) — the streamed
token usage is dropped entirely.
The shared `HandleStreamingResponse` only uses `chatConfig` to expose
`UsageResult` and records usage whenever the stream carries it. Novita's
bespoke handler diverged from every other OpenAI-compatible streaming
driver.
## Fix
Record usage whenever the stream carries a usage event, mirroring
`HandleStreamingResponse`. `applyStreamUsage` already handles a nil
`chatConfig` internally (it only writes `chatConfig.UsageResult` when
non-nil), so the extra guard was doing nothing but dropping usage.
## Test
`TestNovitaStreamRecordsUsageWithoutChatConfig`:
- nil `chatConfig` + usage event → stream completes without error (guard
removed safely)
- non-nil `chatConfig` + usage event → `UsageResult` populated with the
streamed tokens
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-08-04 14:42:16 +08:00
..
2026-07-31 19:15:38 +08:00
2026-08-03 21:30:01 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 21:30:01 +08:00
2026-07-31 19:15:38 +08:00
2026-08-04 14:07:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 21:30:01 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 12:13:43 +08:00
2026-08-04 14:07:17 +08:00
2026-08-03 21:30:01 +08:00
2026-08-03 21:30:01 +08:00
2026-08-04 14:07:45 +08:00
2026-08-04 14:07:45 +08:00
2026-08-04 14:07:45 +08:00
2026-08-03 21:30:01 +08:00
2026-07-22 22:30:57 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 21:30:01 +08:00
2026-08-03 12:13:43 +08:00
2026-08-03 12:13:43 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 12:13:43 +08:00
2026-07-31 19:15:38 +08:00
2026-08-04 14:07:17 +08:00
2026-07-22 22:30:57 +08:00
2026-07-28 19:19:00 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 18:07:41 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 12:13:43 +08:00
2026-07-21 13:51:17 +08:00
2026-07-21 13:51:17 +08:00
2026-08-03 18:07:41 +08:00
2026-08-03 13:54:35 +08:00
2026-08-04 14:07:45 +08:00
2026-08-04 14:07:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 13:54:35 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 13:54:35 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 10:05:25 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 21:30:01 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 13:54:35 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 18:07:55 +08:00
2026-07-24 19:23:51 +08:00
2026-07-24 19:23:51 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 13:54:35 +08:00
2026-08-03 13:54:35 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 10:05:25 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 15:08:55 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-07-14 21:06:11 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 15:08:55 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-06-02 13:40:10 +08:00
2026-08-03 15:08:55 +08:00
2026-07-31 19:15:38 +08:00
2026-08-04 14:42:16 +08:00
2026-08-04 14:42:16 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 10:05:25 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 15:08:55 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 15:08:55 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-08-04 14:07:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 10:05:25 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 19:15:38 +08:00
2026-07-28 19:16:31 +08:00
2026-08-03 17:48:45 +08:00
2026-08-03 17:48:45 +08:00
2026-07-31 18:32:07 +08:00
2026-07-31 18:32:07 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-08-03 20:19:22 +08:00
2026-07-31 19:15:38 +08:00
2026-07-31 19:15:38 +08:00
2026-08-03 20:19:22 +08:00