فهرست منبع

修复遗留bug

liuchengsen 4 هفته پیش
والد
کامیت
a4d60aa1d4

+ 3 - 0
backend-java/src/main/java/com/pharmacopoeia/config/UnifiedResponseBodyAdvice.java

@@ -40,6 +40,9 @@ public class UnifiedResponseBodyAdvice implements ResponseBodyAdvice<Object> {
         if (body instanceof ApiResponse || body instanceof byte[]) {
             return body;
         }
+        if (body instanceof String) {
+            return body;
+        }
         return ApiResponse.success(body);
     }
 }

+ 20 - 8
backend-java/src/main/java/com/pharmacopoeia/service/AnalyticsService.java

@@ -34,17 +34,24 @@ public class AnalyticsService {
     }
 
     @Async
-    public void saveEvent(String userKey, String eventType, Map<String, Object> eventData,
-                          String pageUrl, String referrer, String ip, String userAgent) {
+    public void saveEvent(
+            final String userKey,
+            final String eventType,
+            @SuppressWarnings("rawtypes") final Map eventData,
+            final String pageUrl,
+            final String referrer,
+            final String ip,
+            final String userAgent) {
         try {
+            // Truncate data to avoid sql errors when user-agent is longer than the column, etc.
             UserEvent event = UserEvent.builder()
-                    .userKey(userKey)
-                    .eventType(eventType)
+                    .userKey(trunc(userKey, 128))
+                    .eventType(trunc(eventType, 64))
                     .eventData(eventData != null ? eventData : Map.of())
-                    .pageUrl(pageUrl)
-                    .referrer(referrer)
-                    .ip(ip)
-                    .userAgent(userAgent)
+                    .pageUrl(trunc(pageUrl, 512))
+                    .referrer(trunc(referrer, 512))
+                    .ip(trunc(ip, 64))
+                    .userAgent(trunc(userAgent, 512))
                     .build();
             repo.save(event);
         } catch (Exception e) {
@@ -52,6 +59,11 @@ public class AnalyticsService {
         }
     }
 
+    private static String trunc(String s, int max) {
+        if (s == null) return null;
+        return s.length() <= max ? s : s.substring(0, max);
+    }
+
     // ==================== 埋点事件列表 ====================
 
     public Map<String, Object> queryEvents(String eventType, String startDate, String endDate,

+ 1 - 1
static/index.html

@@ -876,7 +876,7 @@
     document.getElementById('tabChat').classList.toggle('hidden',tab!=='chat');
     document.getElementById('tabDrugs').classList.toggle('hidden',tab!=='drugs');
     if(tab==='drugs'){
-    drugKeyword='';drugPage=1;
+    drugKeyword='';drugPage=1;lastSearched='';
     showDrugList();
     document.getElementById('drugList').innerHTML='<div class="welcome"><div class="icon">⏳</div><p>加载中...</p></div>';
     document.getElementById('drugPager').innerHTML='';