lxr 6 zile în urmă
părinte
comite
0e4f9c3d43
1 a modificat fișierele cu 38 adăugiri și 8 ștergeri
  1. 38 8
      HBuilderProjects/shareAiConsult.html

+ 38 - 8
HBuilderProjects/shareAiConsult.html

@@ -498,7 +498,7 @@
               "</div></div>";
             continue;
           }
-          if (msg.role === "ai") {
+          if (msg.role === "ai" || msg.role === "assistant") {
             var aiText = String(msg.content || "").trim();
             if (!aiText) continue;
             html +=
@@ -539,13 +539,32 @@
         }
       }
 
-      function resolveShareMessagesForDisplay(data) {
-        var messages = Array.isArray(data && data.messages) ? data.messages : [];
-        if (messages.length) return messages;
-        var text = String((data && data.content) || "").trim();
-        if (!text) return [];
+      function countDisplayableMessages(messages) {
+        var list = Array.isArray(messages) ? messages : [];
+        var count = 0;
+        for (var i = 0; i < list.length; i++) {
+          var msg = list[i];
+          if (!msg) continue;
+          if (msg.role === "user") {
+            if (msg.isImage && msg.imageUrl) {
+              count += 1;
+              continue;
+            }
+            if (String(msg.content || "").trim()) count += 1;
+            continue;
+          }
+          if (msg.role === "ai" || msg.role === "assistant") {
+            if (String(msg.content || "").trim()) count += 1;
+          }
+        }
+        return count;
+      }
+
+      function parseMessagesFromContent(text) {
+        var raw = String(text || "").trim();
+        if (!raw) return [];
         var list = [];
-        var blocks = text.split(/\n\n+/);
+        var blocks = raw.split(/\n\n+/);
         for (var i = 0; i < blocks.length; i++) {
           var block = String(blocks[i] || "").trim();
           if (!block) continue;
@@ -563,7 +582,7 @@
         }
         if (list.length) return list;
         var current = null;
-        var lines = text.split(/\n/);
+        var lines = raw.split(/\n/);
         for (var j = 0; j < lines.length; j++) {
           var line = String(lines[j] || "");
           var userLine = line.match(/^我[::]\s*(.*)$/);
@@ -586,6 +605,17 @@
         return list;
       }
 
+      function resolveShareMessagesForDisplay(data) {
+        var fromArray = Array.isArray(data && data.messages) ? data.messages : [];
+        var fromContent = parseMessagesFromContent((data && data.content) || "");
+        var arrayCount = countDisplayableMessages(fromArray);
+        var contentCount = countDisplayableMessages(fromContent);
+        // 分享链接超长时 messages 会被截断,但 content 仍保留完整对话文本
+        if (contentCount > arrayCount) return fromContent;
+        if (arrayCount) return fromArray;
+        return fromContent;
+      }
+
       function render(data) {
         applyWeixinShareMeta();
         sharePayloadCache = data || null;