liuchengsen 4 недель назад
Родитель
Сommit
fdbdfcebb4

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

@@ -26,9 +26,9 @@ public class AnalyticsService {
                     ? new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(eventData)
                     : "{}";
             jdbc.update(
-                "INSERT INTO user_events (user_key, event_type, event_data, page_url, referrer, ip, user_agent) " +
-                "VALUES (?, ?, ?::jsonb, ?, ?, ?, ?)",
-                userKey, eventType, json, pageUrl, referrer, ip, userAgent
+               "INSERT INTO user_events (user_key, event_type, event_data, page_url, referrer, ip, user_agent) " +
+                "VALUES (?, ?, CAST(? AS jsonb), ?, ?, ?, ?)",
+               userKey, eventType, json, pageUrl, referrer, ip, userAgent
             );
         } catch (Exception e) {
             log.warn("埋点写入失败: type={}, error={}", eventType, e.getMessage());

+ 1 - 1
backend-java/src/main/java/com/pharmacopoeia/service/QACacheService.java

@@ -16,7 +16,7 @@ import java.util.Map;
 import java.util.Optional;
 
 /**
- * 全局 QA 缓存(不区分用户,24 小时过期)。
+ * 全局 QA 缓存(不区分用户,7 天过期)。
  * 同一个问题在 24 小时内只调用一次 LLM,后续直接返回缓存结果。
  * 并发控制:同一问题同时只有第一个请求调 LLM,其余等待缓存写入后直接返回。
  */

+ 7 - 0
deploy/nginx-pharmacopoeia.conf

@@ -48,6 +48,13 @@ server {
         access_log off;
     }
 
+    # 药品图片(DOCX 提取到 /images/drugs/)
+    location /images/ {
+        alias /opt/pharmacopoeia-ai/static/images/;
+        expires 30d;
+        add_header Cache-Control "public, immutable";
+    }
+
     # 前端静态页面
     location / {
         root /opt/pharmacopoeia-ai/static;