|
@@ -147,7 +147,7 @@ public class ChatController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@PostMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
|
@PostMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
|
|
- public Flux<ServerSentEvent<String>> chatStream(@RequestBody ChatRequest request) {
|
|
|
|
|
|
|
+ public Flux<ServerSentEvent<String>> chatStream(@RequestBody ChatRequest request, HttpServletRequest servletRequest) {
|
|
|
final String userKey = getCurrentUserKey();
|
|
final String userKey = getCurrentUserKey();
|
|
|
String query = request.getMessage();
|
|
String query = request.getMessage();
|
|
|
String normalized = qaCache.normalize(query);
|
|
String normalized = qaCache.normalize(query);
|
|
@@ -171,9 +171,9 @@ public class ChatController {
|
|
|
|
|
|
|
|
final String intent = retrieverService.classifyIntent(query);
|
|
final String intent = retrieverService.classifyIntent(query);
|
|
|
final long t0 = System.currentTimeMillis();
|
|
final long t0 = System.currentTimeMillis();
|
|
|
- final String chatRequestId = request.getHeader("X-Request-Id");
|
|
|
|
|
- final String chatIp = IpUtils.getClientIp(request);
|
|
|
|
|
- final String chatUa = request.getHeader("User-Agent");
|
|
|
|
|
|
|
+ final String chatRequestId = servletRequest.getHeader("X-Request-Id");
|
|
|
|
|
+ final String chatIp = IpUtils.getClientIp(servletRequest);
|
|
|
|
|
+ final String chatUa = servletRequest.getHeader("User-Agent");
|
|
|
final java.util.Map<String, Long> timings = new java.util.concurrent.ConcurrentHashMap<>();
|
|
final java.util.Map<String, Long> timings = new java.util.concurrent.ConcurrentHashMap<>();
|
|
|
log.info("[chatStream] intent={}, query={}", intent, query.substring(0, Math.min(50, query.length())));
|
|
log.info("[chatStream] intent={}, query={}", intent, query.substring(0, Math.min(50, query.length())));
|
|
|
|
|
|
|
@@ -909,7 +909,9 @@ public class ChatController {
|
|
|
ed.put("request_id", requestId != null ? requestId : "");
|
|
ed.put("request_id", requestId != null ? requestId : "");
|
|
|
ed.put("total_ms", total);
|
|
ed.put("total_ms", total);
|
|
|
ed.put("status", status);
|
|
ed.put("status", status);
|
|
|
- if (timings != null && !timings.isEmpty()) ed.putAll(timings);
|
|
|
|
|
|
|
+ if (timings != null && !timings.isEmpty()) {
|
|
|
|
|
+ ed.putAll(timings);
|
|
|
|
|
+ }
|
|
|
analyticsService.saveEvent(userKey, "chat_stream_server", ed, "", "", ip, ua, "AI药典");
|
|
analyticsService.saveEvent(userKey, "chat_stream_server", ed, "", "", ip, ua, "AI药典");
|
|
|
} catch (Exception ignored) {
|
|
} catch (Exception ignored) {
|
|
|
// 埋点失败不影响主流程
|
|
// 埋点失败不影响主流程
|