{"id":65,"date":"2026-03-16T13:53:07","date_gmt":"2026-03-16T05:53:07","guid":{"rendered":"http:\/\/airoom.ltd\/?page_id=65"},"modified":"2026-04-24T11:45:40","modified_gmt":"2026-04-24T03:45:40","slug":"65-2","status":"publish","type":"page","link":"http:\/\/airoom.ltd\/index.php\/65-2\/","title":{"rendered":"Global Financial Intelligence Terminal \u4e2d\u6587\u9875\u9762"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><strong>This page is for simulation only and does not represent real\u2011world scenarios.<\/strong><\/p>\n\n\n\n<!-- \u82f9\u679c\u5b98\u7f51\u98ce\u683c AI \u5bf9\u8bdd\u5bf9\u8bdd\u6846 | \u5bf9\u9f50WordPress\u9875\u9762\u89c6\u89c9 \u5b8c\u6574\u7248 -->\n<style>\n\/* \u5168\u5c40\u57fa\u7840\u6837\u5f0f - \u5b8c\u5168\u590d\u523bWordPress\u82f9\u679c\u98ce\u683c\u91cd\u7f6e *\/\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  letter-spacing: -0.02em;\n}\nbody {\n  background: #f5f5f7; \/* \u82f9\u679c\u5b98\u7f51\u7ecf\u5178\u80cc\u666f\u7070 *\/\n  padding: 2.5vw;\n  max-width: 1920px;\n  margin: 0 auto;\n  color: #1d1d1f;\n}\n\/* \u901a\u7528\u52a8\u753b\u8fc7\u6e21 *\/\n.apple-ai-chat, .chat-header, .message, .chat-input textarea, .chat-input button, .error-toggle-btn, .copy-btn {\n  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\/* \u4e3b\u5bf9\u8bdd\u6846\u5bb9\u5668 - \u5b8c\u5168\u5339\u914dWordPress\u5361\u7247\u6837\u5f0f *\/\n.apple-ai-chat {\n  max-width: 900px;\n  margin: 3vw auto;\n  background: rgba(255, 255, 255, 0.8);\n  backdrop-filter: blur(10px);\n  border-radius: 20px;\n  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);\n  border: 1px solid rgba(255, 255, 255, 0.8);\n  display: flex;\n  flex-direction: column;\n  height: calc(100vh - 120px);\n  overflow: hidden;\n}\n\/* \u5934\u90e8 - \u5b8c\u5168\u590d\u523bWordPress\u9876\u90e8\u6807\u9898\u533a\u57df\u6837\u5f0f *\/\n.chat-header {\n  padding: 4vw 3.5vw;\n  background: linear-gradient(135deg, #ffffff 0%, #f8f9ff 100%);\n  position: relative;\n  text-align: left;\n}\n.chat-header h1 {\n  font-size: clamp(1.8rem, 3vw, 2.5rem);\n  font-weight: 700;\n  background: linear-gradient(90deg, #0071e3, #86a8e7, #af52de);\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  background-clip: text;\n  margin-bottom: 0.8vw;\n  line-height: 1.1;\n}\n.chat-header p {\n  font-size: clamp(0.9rem, 1.5vw, 1.2rem);\n  color: #86868b;\n  font-weight: 400;\n}\n\/* \u62a5\u9519\u5f00\u5173\u6309\u94ae - \u5b8c\u5168\u5339\u914dWordPress toggle-btn\u6837\u5f0f *\/\n.error-toggle-btn {\n  \/display: none; \/* \u65b0\u589e\u8fd9\u4e00\u884c\uff0c\u6309\u94ae\u9690\u5f62 *\/\n  position: absolute;\n  right: 2.5vw;\n  top: 50%;\n  transform: translateY(-50%);\n  background: rgba(255, 255, 255, 0.8);\n  border: 1px solid rgba(175, 82, 222, 0.3);\n  border-radius: 8px;\n  padding: 0.6vw 1.2vw;\n  font-size: clamp(0.7rem, 0.9vw, 0.9rem);\n  color: #af52de;\n  font-weight: 500;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n.error-toggle-btn:hover {\n  background: rgba(175, 82, 222, 0.1);\n  border-color: #af52de;\n}\n\/* \u6d88\u606f\u533a\u57df *\/\n.chat-messages {\n  flex: 1;\n  padding: 3vw;\n  overflow-y: auto;\n  display: flex;\n  flex-direction: column;\n  gap: 1.5vw;\n}\n\/* \u6eda\u52a8\u6761 - \u82f9\u679c\u98ce\u683c *\/\n.chat-messages::-webkit-scrollbar {\n  width: 6px;\n}\n.chat-messages::-webkit-scrollbar-thumb {\n  background: rgba(134, 168, 231, 0.3);\n  border-radius: 3px;\n}\n\/* \u6d88\u606f\u6c14\u6ce1 - \u7edf\u4e00WordPress\u67d4\u548c\u914d\u8272 | \u9ad8\u5ea6\u62d3\u9ad8\u4e00\u500d *\/\n.message {\n  max-width: 75%;\n  padding: 2.4vw 1.5vw; \/* \u539f1.2vw \u2192 2.4vw\uff0c\u9ad8\u5ea6\u7ffb\u500d *\/\n  border-radius: 18px;\n  line-height: 1.6;\n  font-size: clamp(0.9rem, 1vw, 1rem);\n  animation: fadeIn 0.3s ease;\n  position: relative;\n}\n@keyframes fadeIn {\n  from { opacity: 0; transform: translateY(10px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n\/* AI\u6d88\u606f - \u5339\u914dWordPress\u4e3b\u8272\u8c03 *\/\n.message.ai {\n  align-self: flex-start;\n  background: rgba(134, 168, 231, 0.1);\n  color: #1d1d1f;\n  border-bottom-left-radius: 6px;\n}\n\/* \u7528\u6237\u6d88\u606f - \u5339\u914dWordPress\u6d45\u7070\u80cc\u666f *\/\n.message.user {\n  align-self: flex-end;\n  background: rgba(245, 245, 247, 0.8);\n  color: #1d1d1f;\n  border-bottom-right-radius: 6px;\n}\n\/* \u4e00\u952e\u590d\u5236\u6309\u94ae - \u82f9\u679c\u98ce\u683c\u5c0f\u578b\u6309\u94ae *\/\n.copy-btn {\n  position: absolute;\n  bottom: 0.5vw;\n  right: 0.8vw;\n  background: rgba(255, 255, 255, 0.9);\n  border: 1px solid rgba(134, 168, 231, 0.3);\n  border-radius: 6px;\n  padding: 0.2vw 0.6vw;\n  font-size: 0.7rem;\n  color: #86a8e7;\n  cursor: pointer;\n  opacity: 0.6;\n}\n.copy-btn:hover {\n  opacity: 1;\n  background: rgba(134, 168, 231, 0.1);\n  border-color: #86a8e7;\n}\n\/* \u52a0\u8f7d\u52a8\u753b - \u5339\u914dWordPress\u52a0\u8f7d\u8272 *\/\n.loading {\n  text-align: center;\n  color: #86a8e7;\n  font-size: clamp(0.8rem, 1vw, 0.9rem);\n  padding: 2vw;\n  font-weight: 500;\n}\n.loading::after {\n  content: '';\n  display: inline-block;\n  width: 12px;\n  height: 12px;\n  border: 2px solid #86a8e7;\n  border-top: 2px solid transparent;\n  border-radius: 50%;\n  margin-left: 8px;\n  animation: spin 1s linear infinite;\n}\n@keyframes spin {\n  to { transform: rotate(360deg); }\n}\n\/* \u8f93\u5165\u533a\u57df - \u5339\u914dWordPress\u8fb9\u6846\u6837\u5f0f *\/\n.chat-input {\n  padding: 3vw;\n  border-top: 1px solid rgba(0, 0, 0, 0.05);\n  display: flex;\n  gap: 12px;\n}\n\/* \u8f93\u5165\u6846\uff1a\u6539\u4e3a\u591a\u884c\u6587\u672c\u57df + \u9ad8\u5ea6\u62d3\u9ad8\u4e00\u500d\uff0c\u652f\u6301\u4e09\u884c\u663e\u793a *\/\n.chat-input textarea {\n  flex: 1;\n  padding: 1vw 1.5vw;\n  min-height: 4.5vw; \/* \u9ad8\u5ea6\u7ffb\u500d\uff0c\u5b8c\u7f8e\u663e\u793a\u4e09\u884c\u6587\u5b57 *\/\n  border-radius: 18px;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  outline: none;\n  font-size: clamp(0.9rem, 1vw, 1rem);\n  background: rgba(245, 245, 247, 0.6);\n  resize: none; \/* \u7981\u6b62\u624b\u52a8\u7f29\u653e *\/\n  line-height: 1.5;\n}\n.chat-input textarea:focus {\n  border-color: #0071e3;\n  box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.1);\n  background: #fff;\n}\n\/* \u53d1\u9001\u6309\u94ae - \u5b8c\u5168\u5339\u914dWordPress\u82f9\u679c\u6309\u94ae\u98ce\u683c *\/\n.chat-input button {\n  padding: 1vw 2.5vw;\n  border-radius: 999px;\n  background: #0071e3;\n  color: white;\n  border: none;\n  font-size: clamp(0.9rem, 1vw, 1rem);\n  font-weight: 500;\n  cursor: pointer;\n}\n.chat-input button:disabled {\n  background: rgba(200, 200, 200, 0.5);\n  color: #999;\n  cursor: not-allowed;\n}\n.chat-input button:hover:not(:disabled) {\n  background: #0077ed;\n  transform: scale(1.02);\n}\n\/* \u72b6\u6001\u6587\u5b57\u914d\u8272 - \u5339\u914dWordPress *\/\n.error { \n  color: #ff3b30; \n  font-weight: 500; \n}\n.switch-tip { \n  color: #86a8e7; \n  font-weight: 500; \n}\n\/* \u54cd\u5e94\u5f0f - \u5339\u914dWordPress\u79fb\u52a8\u7aef\u6837\u5f0f *\/\n@media (max-width: 768px) {\n  .apple-ai-chat { \n    height: calc(100vh - 40px); \n    margin: 0; \n    border-radius: 0;\n  }\n  .chat-header { padding: 6vw 4vw; }\n  .chat-messages { padding: 4vw; }\n  .chat-input { padding: 4vw; }\n  .message { max-width: 85%; }\n  .error-toggle-btn {\n    right: 4vw;\n    padding: 2vw 3vw;\n    font-size: 12px;\n  }\n  .copy-btn {\n    padding: 1vw 2vw;\n    font-size: 0.6rem;\n  }\n}\n<\/style>\n\n<div class=\"apple-ai-chat\">\n  <div class=\"chat-header\">\n    <h1>Global Real-Time Intelligent Data Analysis System<\/h1>\n    <p>\u5168\u7403\u6570\u636e\u5b9e\u65f6\u667a\u80fd\u5206\u6790\u7cfb\u7edf<\/p>\n    <button class=\"error-toggle-btn\" id=\"errorToggle\">\u5173\u95ed\u62a5\u9519<\/button>\n  <\/div>\n  <div class=\"chat-messages\" id=\"messages\">\n    <div class=\"message ai\">\u6b63\u5728\u52a0\u8f7d\u6570\u636e\uff0c\u8bf7\u7a0d\u5019&#8230;<\/div>\n  <\/div>\n  <div class=\"chat-input\">\n    <!-- \u5355\u884cinput\u6539\u4e3a\u591a\u884ctextarea\uff0c\u9ad8\u5ea6\u7ffb\u500d -->\n    <textarea id=\"userInput\" placeholder=\"\u8f93\u5165\u4f60\u7684\u95ee\u9898...\" disabled><\/textarea>\n    <button id=\"sendBtn\" disabled>\u53d1\u9001<\/button>\n  <\/div>\n<\/div>\n\n<script>\n\/\/ ===================== \u6838\u5fc3\u914d\u7f6e\uff08\u2705 \u65b0\u589e\u667a\u8c31\u914d\u7f6e\uff0c\u4f18\u5148\u7ea7\u6700\u9ad8\uff0c\u539f\u914d\u7f6e\u5b8c\u5168\u4fdd\u7559\uff09 =====================\nconst CONFIG = {\n  \/\/ ============== \u3010\u65b0\u589e\uff1a\u667a\u8c31\u5927\u6a21\u578b\u914d\u7f6e - \u4f18\u5148\u8c03\u7528\u3011 ==============\n  ZHIPU_MODEL_POOL: [\n    \"glm-4.7-flash\",\n    \"glm-4.6V-Flash\",\n  ],\n  ZHIPU_KEY_POOL: [\n    \"0e3757c8cade4ea599b5341e19dec616.Fi8BjNjtvwtEfyXz\",  \/\/ \u586b\u5199\u4f60\u7684\u667a\u8c31API Key\n  ],\n  ZHIPU_BASE_URL: \"https:\/\/open.bigmodel.cn\/api\/paas\/v4\", \/\/ \u667a\u8c31\u5b98\u65b9\u63a5\u53e3\u5730\u5740\n\n  \/\/ ============== \u3010\u539f\u706b\u5c71\u65b9\u821f\u914d\u7f6e - \u5b8c\u5168\u65e0\u4fee\u6539\u3011 ==============\n  MODEL_POOL: [\n    \"doubao-1-5-pro-32k-250115\",\n    \"doubao-1-5-lite-32k-250115\",\n    \"qwen3-32b-20250429\", \n    \"qwen3-14b-20250429\", \n    \"doubao-1-5-pro-32k-character-250715\", \n    \"doubao-1-5-pro-32k-character-250228\", \n    \"doubao-seed-2-0-mini-260215\", \n    \"doubao-seed-2-0-lite-260215\",\n    \"doubao-seed-1-8-251228\", \n    \"doubao-seed-1-6-251015\", \n    \"doubao-seed-1-6-250615\",\n    \"doubao-seed-1-6-lite-251015\", \n    \"doubao-seed-1-6-flash-250828\", \n    \"doubao-seed-1-6-flash-250615\", \n    \"doubao-seed-1-6-vision-250815\", \n    \"doubao-1-0-lite-8k\",\n    \"skylark-chat\"\n  ],\n  KEY_POOL: [\n    \"30f44a14-1838-403d-bc1a-f25c03610225\"\n  ],\n  BASE_URL: \"https:\/\/ark.cn-beijing.volces.com\/api\/v3\",\n  FILES: {\n    TXT: \"\/static\/files\/APIshujufenxi.txt\",\n    CSV1: \"\/static\/files\/APIshujubaocun.csv\",\n    CSV2: \"\/static\/files\/APIshaixuanjieguo.csv\"\n  },\n  WORD_LIMIT: { TXT: 20000, CSV1: 1000 },\n  MAX_CONTEXT: 60000,\n  SYSTEM_PROMPT: `\u4f60\u662f\u4e13\u4e1a\u91d1\u878d\u6570\u636e\u5206\u6790\u5e08\uff0c\u4f18\u5148\u4f9d\u636e(\u5b58\u50a8\u672c\u5730\u6587\u4ef6\u7684\u6240\u6709\u6570\u636e)\u8bc4\u5224\u7528\u6237\u63d0\u95ee\u3002\u518d\u8fdb\u884c\u641c\u7d22\u4e92\u8054\u7f51\u8d44\u6599\uff0c\u7b2c\u4e8c\u6b21\u8bc4\u5224\u7528\u6237\u63d0\u95ee\u3002\u51fa\u5177\u4e00\u7bc7\u8be6\u7ec6\u7684\u957f\u7bc7\u62a5\u544a\uff0c\u603b\u5b57\u6570\u4e0d\u4f4e\u4e8e4000\u5b57\u3002`};\n\n\/\/ \u5168\u5c40\u72b6\u6001\uff08\u2705 \u65b0\u589e\u667a\u8c31\u7d22\u5f15\uff0c\u539f\u72b6\u6001\u5b8c\u5168\u4fdd\u7559\uff09\nlet fileContext = \"\";\n\/\/ \u539f\u706b\u5c71\u72b6\u6001\nlet currentModelIndex = 0;\nlet currentKeyIndex = 0;\n\/\/ \u2705 \u65b0\u589e\uff1a\u667a\u8c31\u72b6\u6001\uff08\u72ec\u7acb\u5faa\u73af\uff0c\u4e0d\u51b2\u7a81\uff09\nlet currentZhipuModelIndex = 0;\nlet currentZhipuKeyIndex = 0;\n\nlet showErrors = false;\nconst messagesEl = document.getElementById(\"messages\");\nconst userInput = document.getElementById(\"userInput\");\nconst sendBtn = document.getElementById(\"sendBtn\");\nconst errorToggle = document.getElementById(\"errorToggle\");\n\n\/\/ ===================== \u65b0\u589e\uff1a\u81ea\u52a8\u5c1d\u8bd5\u591a\u79cd\u7f16\u7801\u8bfb\u53d6\u6587\u4ef6\uff08UTF-8\/GBK\/GB2312\uff09 =====================\nasync function readFileWithEncodings(url) {\n  try {\n    const response = await fetch(url);\n    const blob = await response.blob();\n    const encodings = ['utf-8', 'gbk', 'gb2312'];\n    \n    for (const encoding of encodings) {\n      try {\n        return await new Promise((resolve, reject) => {\n          const reader = new FileReader();\n          reader.onload = () => resolve(reader.result);\n          reader.onerror = reject;\n          reader.readAsText(blob, encoding);\n        });\n      } catch (e) {\n        continue;\n      }\n    }\n    throw new Error(\"\u6240\u6709\u7f16\u7801\u5747\u65e0\u6cd5\u89e3\u6790\u6587\u4ef6\");\n  } catch (e) {\n    throw e;\n  }\n}\n\n\/\/ \u5f00\u5173\u6309\u94ae\u70b9\u51fb\u4e8b\u4ef6\uff08\u5b8c\u5168\u4fdd\u7559\uff09\nerrorToggle.addEventListener(\"click\", () => {\n  showErrors = !showErrors;\n  errorToggle.textContent = showErrors ? \"\u5173\u95ed\u62a5\u9519\" : \"\u5f00\u542f\u62a5\u9519\";\n});\n\n\/\/ \u5de5\u5177\u51fd\u6570\uff08\u5b8c\u5168\u4fdd\u7559\uff09\nfunction addMessage(role, content) {\n  const div = document.createElement(\"div\");\n  div.className = `message ${role}`;\n  div.innerHTML = content.replace(\/\\n\/g, \"<br>\");\n  messagesEl.appendChild(div);\n  \n  if (!content.includes(\"loading\")) {\n    const copyBtn = document.createElement(\"button\");\n    copyBtn.className = \"copy-btn\";\n    copyBtn.textContent = \"\u590d\u5236\";\n    div.appendChild(copyBtn);\n\n    copyBtn.onclick = function() {\n      try {\n        const text = div.innerText.replace(\"\u590d\u5236\", \"\").trim();\n        const textArea = document.createElement(\"textarea\");\n        textArea.value = text;\n        document.body.appendChild(textArea);\n        textArea.select();\n        document.execCommand(\"copy\");\n        document.body.removeChild(textArea);\n        \n        copyBtn.textContent = \"\u5df2\u590d\u5236\";\n      } catch (err) {\n        copyBtn.textContent = \"\u5931\u8d25\";\n      }\n      setTimeout(() => copyBtn.textContent = \"\u590d\u5236\", 1500);\n    };\n  }\n  messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\n\/\/ ===================== \u2705 \u5b8c\u5168\u590d\u523b\uff1a\u667a\u8c31\u6a21\u578b\u5207\u6362\u51fd\u6570\uff08\u548c\u706b\u5c71\u903b\u8f91\u4e00\u81f4\uff09 =====================\nfunction switchNextZhipuModel() {\n  if (currentZhipuModelIndex < CONFIG.ZHIPU_MODEL_POOL.length - 1) {\n    currentZhipuModelIndex++;\n    return true;\n  }\n  if (currentZhipuKeyIndex < CONFIG.ZHIPU_KEY_POOL.length - 1) {\n    currentZhipuKeyIndex++;\n    currentZhipuModelIndex = 0;\n    return true;\n  }\n  return false; \/\/ \u667a\u8c31\u5168\u90e8\u5931\u8d25\n}\n\n\/\/ \u539f\u706b\u5c71\u6a21\u578b\u5207\u6362\u51fd\u6570\uff08\u5b8c\u5168\u4fdd\u7559\uff09\nfunction switchNextModel() {\n  if (currentModelIndex < CONFIG.MODEL_POOL.length - 1) {\n    currentModelIndex++;\n    return true;\n  }\n  if (currentKeyIndex < CONFIG.KEY_POOL.length - 1) {\n    currentKeyIndex++;\n    currentModelIndex = 0;\n    return true;\n  }\n  return false;\n}\n\n\/\/ \u52a0\u8f7d\u6587\u4ef6\uff08\u5b8c\u5168\u4fdd\u7559\uff09\nasync function loadAllFiles() {\n  try {\n    const [txt, csv1, csv2] = await Promise.all([\n      readFileWithEncodings(CONFIG.FILES.TXT),\n      readFileWithEncodings(CONFIG.FILES.CSV1),\n      readFileWithEncodings(CONFIG.FILES.CSV2)\n    ]);\n\n    const txtCut = txt.slice(0, CONFIG.WORD_LIMIT.TXT);\n    const csv1Cut = csv1.slice(0, CONFIG.WORD_LIMIT.CSV1);\n    fileContext = `\u3010TXT\u3011${txtCut}\\n\u3010CSV1\u3011${csv1Cut}\\n\u3010CSV2\u3011${csv2}`.slice(0, CONFIG.MAX_CONTEXT);\n    \n    addMessage(\"ai\", \"\u6b22\u8fce\u6765\u5230\u4e16\u754c\");\n    userInput.disabled = false;\n    sendBtn.disabled = false;\n    userInput.focus();\n  } catch (e) {\n    if(showErrors) addMessage(\"ai\", `<span class=\"error\">\u274c \u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff1a${e.message}<\/span>`);\n  }\n}\n\n\/\/ ===================== \u2705 \u6838\u5fc3\u4fee\u6539\uff1a\u4f18\u5148\u8c03\u7528\u667a\u8c31\uff0c\u5931\u8d25\u540e\u5207\u706b\u5c71\uff08\u5b8c\u5168\u590d\u523b\u5faa\u73af\u903b\u8f91\uff09 =====================\nasync function callAI(question) {\n  addMessage(\"user\", question);\n  addMessage(\"ai\", '<div class=\"loading\">AI\u601d\u8003\u4e2d...<\/div>');\n\n  const runRequest = async () => {\n    try {\n      \/\/ ============== \u7b2c\u4e00\u6b65\uff1a\u4f18\u5148\u8c03\u7528\u667a\u8c31\u5927\u6a21\u578b ==============\n      const apiUrl = CONFIG.ZHIPU_BASE_URL + \"\/chat\/completions\";\n      const apiKey = CONFIG.ZHIPU_KEY_POOL[currentZhipuKeyIndex];\n      const model = CONFIG.ZHIPU_MODEL_POOL[currentZhipuModelIndex];\n\n      const response = await fetch(apiUrl, {\n        method: \"POST\",\n        mode: \"cors\",\n        headers: {\n          \"Authorization\": \"Bearer \" + apiKey,\n          \"Content-Type\": \"application\/json\",\n        },\n        body: JSON.stringify({\n          model: model,\n          messages: [\n            { role: \"system\", content: CONFIG.SYSTEM_PROMPT + `\\n\u6570\u636e\uff1a${fileContext}` },\n            { role: \"user\", content: `\u95ee\u9898\uff1a${question}` }\n          ],\n          temperature: 0.1,\n          max_tokens: 8000\n        })\n      });\n\n      const result = await response.json();\n      if (result.error) throw new Error(result.error.message);\n      return result;\n\n    } catch (e) {\n      messagesEl.removeChild(messagesEl.lastChild);\n      if(showErrors){\n        addMessage(\"ai\", `<span class=\"error\">\u274c \u667a\u8c31\u6a21\u578b\u3010${CONFIG.ZHIPU_MODEL_POOL[currentZhipuModelIndex]}\u3011\u8c03\u7528\u5931\u8d25\uff1a${e.message}<\/span>`);\n      }\n      \n      \/\/ \u2705 \u590d\u523b\u5faa\u73af\uff1a\u5148\u5207\u667a\u8c31\u4e0b\u4e00\u4e2a\u6a21\u578b\n      const hasNextZhipu = switchNextZhipuModel();\n      if (hasNextZhipu) {\n        if(showErrors){\n          addMessage(\"ai\", `<span class=\"switch-tip\">\ud83d\udd04 \u81ea\u52a8\u5207\u6362\u81f3\u4e0b\u4e00\u4e2a\u667a\u8c31\u6a21\u578b\uff1a${CONFIG.ZHIPU_MODEL_POOL[currentZhipuModelIndex]}<\/span>`);\n        }\n        addMessage(\"ai\", '<div class=\"loading\">\u6b63\u5728\u601d\u8003...<\/div>');\n        return runRequest();\n      }\n\n      \/\/ ============== \u7b2c\u4e8c\u6b65\uff1a\u667a\u8c31\u5168\u90e8\u5931\u8d25\uff0c\u5207\u6362\u706b\u5c71\u65b9\u821f ==============\n      try {\n        if(showErrors){\n          addMessage(\"ai\", `<span class=\"switch-tip\">\ud83d\udd04 \u667a\u8c31\u5168\u90e8\u8017\u5c3d\uff0c\u5207\u6362\u81f3\u706b\u5c71\u65b9\u821f\u6a21\u578b<\/span>`);\n        }\n        addMessage(\"ai\", '<div class=\"loading\">\u6b63\u5728\u601d\u8003...<\/div>');\n        \n        const apiUrl = CONFIG.BASE_URL + \"\/chat\/completions\";\n        const apiKey = CONFIG.KEY_POOL[currentKeyIndex];\n        const model = CONFIG.MODEL_POOL[currentModelIndex];\n\n        const response = await fetch(apiUrl, {\n          method: \"POST\",\n          mode: \"cors\",\n          headers: {\n            \"Authorization\": \"Bearer \" + apiKey,\n            \"Content-Type\": \"application\/json\",\n          },\n          body: JSON.stringify({\n            model: model,\n            messages: [\n              { role: \"system\", content: CONFIG.SYSTEM_PROMPT + `\\n\u6570\u636e\uff1a${fileContext}` },\n              { role: \"user\", content: `\u95ee\u9898\uff1a${question}` }\n            ],\n            temperature: 0.1,\n            max_tokens: 8000\n          })\n        });\n\n        const result = await response.json();\n        if (result.error) throw new Error(result.error.message);\n        return result;\n\n      } catch (volcE) {\n        messagesEl.removeChild(messagesEl.lastChild);\n        if(showErrors){\n          addMessage(\"ai\", `<span class=\"error\">\u274c \u706b\u5c71\u6a21\u578b\u3010${CONFIG.MODEL_POOL[currentModelIndex]}\u3011\u8c03\u7528\u5931\u8d25\uff1a${volcE.message}<\/span>`);\n        }\n        \n        \/\/ \u539f\u706b\u5c71\u5faa\u73af\u903b\u8f91\n        const hasNext = switchNextModel();\n        if (hasNext) {\n          if(showErrors){\n            addMessage(\"ai\", `<span class=\"switch-tip\">\ud83d\udd04 \u81ea\u52a8\u5207\u6362\u81f3\u4e0b\u4e00\u4e2a\u706b\u5c71\u6a21\u578b\uff1a${CONFIG.MODEL_POOL[currentModelIndex]}<\/span>`);\n          }\n          addMessage(\"ai\", '<div class=\"loading\">\u6b63\u5728\u601d\u8003...<\/div>');\n          return runRequest();\n        } else {\n          if(showErrors){\n            addMessage(\"ai\", `<span class=\"error\">\u274c \u6700\u7ec8\u5931\u8d25\uff1a\u6240\u6709\u6a21\u578b\u5747\u4e0d\u53ef\u7528<\/span>`);\n          }\n          throw new Error(\"\u6240\u6709\u6a21\u578b\u5747\u4e0d\u53ef\u7528\");\n        }\n      }\n    }\n  };\n\n  try {\n    const result = await runRequest();\n    messagesEl.removeChild(messagesEl.lastChild);\n    addMessage(\"ai\", result.choices[0].message.content);\n  } catch (e) {\n    console.error(\"AI\u9519\u8bef\u8be6\u60c5\uff1a\", e);\n  }\n}\n\n\/\/ \u53d1\u9001\u4e8b\u4ef6\uff08\u5b8c\u5168\u4fdd\u7559\uff09\nfunction send() {\n  const text = userInput.value.trim();\n  if (!text) return;\n  userInput.value = \"\";\n  callAI(text);\n}\n\nsendBtn.addEventListener(\"click\", send);\nuserInput.addEventListener(\"keypress\", e=>e.key===\"Enter\"&&send());\nwindow.addEventListener(\"DOMContentLoaded\", loadAllFiles);\n<\/script>\n\n\n\n<!-- WordPress\u9875\u9762HTML\u4ee3\u7801 - \u590d\u5236\u5230\u81ea\u5b9a\u4e49HTML\u5757\u4e2d -->\n<!-- \u65b0\u589e\u5168\u5c40\u57fa\u7840\u6837\u5f0f\uff08\u82f9\u679c\u98ce\u683c\u91cd\u7f6e+\u7ffb\u9875\/\u5c55\u5f00\u6309\u94ae\u6837\u5f0f\uff09 -->\n<style>\n\/* \u5168\u5c40\u57fa\u7840\u6837\u5f0f - \u82f9\u679c\u98ce\u683c\u6781\u7b80\u91cd\u7f6e *\/\n* {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n    font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    letter-spacing: -0.02em;\n}\nbody {\n    background: #f5f5f7; \/* \u82f9\u679c\u5b98\u7f51\u7ecf\u5178\u80cc\u666f\u7070 *\/\n    padding: 2.5vw;\n    max-width: 1920px;\n    margin: 0 auto;\n    color: #1d1d1f;\n}\n\/* \u901a\u7528\u52a8\u753b\u8fc7\u6e21 *\/\n.airoom-header-section, .airoom-market-section, .airoom-filter-section, .airoom-analysis-section, .airoom-stat-card, .airoom-filter-item {\n    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\/* \u79d1\u6280\u611f\u5168\u7403\u80cc\u666f\uff08\u4f4e\u900f\u660e\u5ea6\uff0c\u4e0d\u5e72\u6270\u5185\u5bb9\uff09 *\/\n.airoom-header-section {\n    position: relative;\n    overflow: hidden;\n}\n.airoom-header-section::before {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='45' fill='none' stroke='%2386a8e7' stroke-width='0.5' opacity='0.1'\/%3E%3Cpath d='M50 5a90 90 0 0 1 0 90M5 50a90 90 0 0 1 90 0' fill='none' stroke='%2386a8e7' stroke-width='0.5' opacity='0.1'\/%3E%3C\/svg%3E\") repeat;\n    background-size: 200px;\n    z-index: 0;\n}\n.airoom-header-section > * {\n    position: relative;\n    z-index: 1;\n}\n\/* \u82f9\u679c\u98ce\u683c\u72b6\u6001\u6807\u7b7e *\/\n.airoom-status-item.online {\n    background: rgba(72, 187, 120, 0.1) !important;\n    border-color: rgba(72, 187, 120, 0.2) !important;\n    color: #34c759 !important;\n    font-weight: 500;\n}\n\/* \u8868\u683chover\u6548\u679c *\/\n.airoom-table tbody tr:hover {\n    background: rgba(134, 168, 231, 0.05);\n}\n\/* \u52a0\u8f7d\u4e2d\u6837\u5f0f\u4f18\u5316 *\/\n.airoom-loading {\n    color: #86a8e7 !important;\n    font-weight: 500;\n    font-size: 16px !important;\n}\n\/* \u72b6\u6001\u5fbd\u7ae0\u6837\u5f0f *\/\n.airoom-status-badge {\n    background: rgba(134, 168, 231, 0.1) !important;\n    color: #86a8e7 !important;\n    border: 1px solid rgba(134, 168, 231, 0.2) !important;\n}\n.airoom-status-badge.airoom-status-excellent {\n    background: rgba(52, 199, 89, 0.1) !important;\n    color: #34c759 !important;\n    border-color: rgba(52, 199, 89, 0.2) !important;\n}\n.airoom-status-badge.airoom-status-good {\n    background: rgba(250, 177, 60, 0.1) !important;\n    color: #fabb3c !important;\n    border-color: rgba(250, 177, 60, 0.2) !important;\n}\n.airoom-status-badge.airoom-status-poor {\n    background: rgba(255, 59, 48, 0.1) !important;\n    color: #ff3b30 !important;\n    border-color: rgba(255, 59, 48, 0.2) !important;\n}\n\/* \u7ffb\u9875\u6309\u94ae\u6837\u5f0f\uff08\u82f9\u679c\u98ce\u683c\uff09- \u4fdd\u7559\u7ed9\u5176\u4ed6\u6a21\u5757\u4f7f\u7528 *\/\n.pagination {\n    display: flex;\n    gap: 0.8vw;\n    margin: 2vw 0;\n    flex-wrap: wrap;\n    justify-content: center;\n}\n.pagination-btn {\n    background: rgba(255, 255, 255, 0.8);\n    border: 1px solid rgba(134, 168, 231, 0.3);\n    border-radius: 8px;\n    padding: 0.8vw 1.5vw;\n    font-size: clamp(0.8rem, 1vw, 1rem);\n    color: #0071e3;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s ease;\n}\n.pagination-btn:hover {\n    background: rgba(0, 113, 227, 0.1);\n    border-color: #0071e3;\n}\n.pagination-btn.active {\n    background: #0071e3;\n    color: white;\n    border-color: #0071e3;\n}\n\/* \u5c55\u5f00\/\u6536\u8d77\u6309\u94ae\u6837\u5f0f *\/\n.toggle-btn {\n    background: rgba(255, 255, 255, 0.8);\n    border: 1px solid rgba(175, 82, 222, 0.3);\n    border-radius: 8px;\n    padding: 0.6vw 1.2vw;\n    font-size: clamp(0.7rem, 0.9vw, 0.9rem);\n    color: #af52de;\n    font-weight: 500;\n    cursor: pointer;\n    margin: 1vw 0;\n    transition: all 0.2s ease;\n}\n.toggle-btn:hover {\n    background: rgba(175, 82, 222, 0.1);\n    border-color: #af52de;\n}\n.toggle-btn:disabled {\n    background: rgba(200, 200, 200, 0.5);\n    color: #999;\n    cursor: not-allowed;\n    border-color: rgba(200, 200, 200, 0.3);\n}\n\/* \u9690\u85cf\u5185\u5bb9\u6837\u5f0f *\/\n.hidden-content {\n    display: none;\n    margin-top: 1vw;\n}\n\/* \u5206\u6790\u62a5\u544a\u6392\u7248\u4f18\u5316\uff08\u65e0\u6a2a\u5411\u6eda\u52a8\uff09 *\/\n.airoom-analysis-content {\n    width: 100%;\n    overflow-x: hidden;\n    word-wrap: break-word;\n    word-break: break-all;\n}\n\/* \u8868\u683c\u5bb9\u5668\u4f18\u5316 - \u589e\u52a0\u6a2a\u5411\u6eda\u52a8\u6761 *\/\n.airoom-table-container {\n    width: 100%;\n    overflow-x: auto; \/* \u6539\u4e3aauto\uff0c\u663e\u793a\u6a2a\u5411\u6eda\u52a8\u6761 *\/\n    border-radius: 16px;\n    border: 1px solid rgba(0, 0, 0, 0.05);\n}\n\/* \u8868\u683c\u6837\u5f0f\u8c03\u6574 - \u786e\u4fdd\u5185\u5bb9\u4e0d\u6362\u884c\uff0c\u89e6\u53d1\u6a2a\u5411\u6eda\u52a8 *\/\n.airoom-table {\n    min-width: 800px; \/* \u8bbe\u7f6e\u6700\u5c0f\u5bbd\u5ea6\uff0c\u786e\u4fdd\u5c0f\u5c4f\u5e55\u4e5f\u6709\u6eda\u52a8\u6761 *\/\n}\n.airoom-table th, .airoom-table td {\n    white-space: nowrap; \/* \u7981\u6b62\u5355\u5143\u683c\u5185\u5bb9\u6362\u884c *\/\n}\n\/* \u5e02\u573a\u6570\u636e\u5c55\u5f00\u6309\u94ae\u5bb9\u5668 *\/\n.market-toggle-container {\n    text-align: center;\n    padding: 1vw 0;\n}\n\/* \u9002\u914d\u5c0f\u5c4f\u5e55 *\/\n@media (max-width: 768px) {\n    .pagination-btn {\n        padding: 1.2vw 2vw;\n    }\n    .toggle-btn {\n        padding: 1vw 1.8vw;\n    }\n}\n\/* \u5df2\u52a0\u8f7d\u5185\u5bb9\u533a\u57df *\/\n.loaded-content {\n    border-top: 1px solid rgba(0, 0, 0, 0.05);\n    margin-top: 1vw;\n    padding-top: 1vw;\n}\n\/* \u52a0\u8f7d\u63d0\u793a *\/\n.loading-indicator {\n    text-align: center;\n    padding: 2vw;\n    color: #86a8e7;\n    font-size: clamp(0.9rem, 1vw, 1rem);\n}\n<\/style>\n\n<!-- \u9876\u90e8\u6807\u9898\u533a\u57df\uff08\u4f18\u5316\u6837\u5f0f\uff09 -->\n<div class=\"airoom-header-section\" style=\"background: linear-gradient(135deg, #ffffff 0%, #f8f9ff 100%); border-radius: 20px; padding: 4vw 3.5vw; margin-bottom: 3vw; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05); border: 1px solid rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px);\">\n    <h2 class=\"airoom-header-title\" style=\"font-size: clamp(2.5rem, 4vw, 4rem); font-weight: 700; background: linear-gradient(90deg, #0071e3, #86a8e7, #af52de); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 1.2vw; line-height: 1.1;\">Global Financial Intelligence Terminal<\/h2>\n    <p class=\"airoom-header-subtitle\" style=\"font-size: clamp(1rem, 1.8vw, 1.5rem); color: #86868b; margin-bottom: 2vw; font-weight: 400; max-width: 80%;\">\u5168\u7403\u91d1\u878d\u6570\u636e\u5b9e\u65f6\u667a\u80fd\u5206\u6790\u7cfb\u7edf<\/p>\n    <div class=\"airoom-status-bar\" style=\"display: flex; gap: 2vw; align-items: center; flex-wrap: wrap;\">\n        <span class=\"airoom-status-item online\" style=\"background: rgba(72, 187, 120, 0.1); padding: 0.8vw 1.5vw; border-radius: 999px; border: 1px solid rgba(72, 187, 120, 0.2); font-size: clamp(0.8rem, 1vw, 1rem); color: #34c759;\">\u25cf \u7cfb\u7edf\u72b6\u6001: ONLINE<\/span>\n        <span class=\"airoom-status-item\" id=\"airoom-date\" style=\"background: rgba(134, 168, 231, 0.1); padding: 0.8vw 1.5vw; border-radius: 999px; border: 1px solid rgba(134, 168, 231, 0.2); font-size: clamp(0.8rem, 1vw, 1rem); color: #86a8e7;\"><\/span>\n        <span class=\"airoom-status-item\" style=\"background: rgba(175, 82, 222, 0.1); padding: 0.8vw 1.5vw; border-radius: 999px; border: 1px solid rgba(175, 82, 222, 0.2); font-size: clamp(0.8rem, 1vw, 1rem); color: #af52de;\">\u6570\u636e\u6765\u6e90: API\u5b9e\u65f6\u63a5\u53e3<\/span>\n    <\/div>\n<\/div>\n\n<!-- \u5e02\u573a\u6570\u636e\u533a\u57df\uff08APIshujubaocun.csv - \u540e\u7aef\u5206\u9875\u52a0\u8f7d\uff09 -->\n<div class=\"airoom-market-section\" style=\"background: rgba(255, 255, 255, 0.8); border-radius: 20px; padding: 3vw; margin-bottom: 3vw; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05); border: 1px solid rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px);\">\n    <h3 class=\"airoom-section-title\" style=\"font-size: clamp(1.2rem, 2vw, 1.8rem); font-weight: 600; color: #1d1d1f; margin-bottom: 2vw; display: flex; align-items: center; gap: 1vw; border-bottom: 1px solid rgba(0, 0, 0, 0.05); padding-bottom: 1.5vw;\">\n        <span style=\"width: 4px; height: 28px; background: linear-gradient(180deg, #0071e3, #86a8e7); border-radius: 2px;\"><\/span>\n        APIshujubaocun.csv\n    <\/h3>\n\n    <div class=\"airoom-table-container\">\n        <table class=\"airoom-table\" id=\"airoom-market-table\" style=\"width: 100%; border-collapse: collapse; font-size: clamp(0.8rem, 1vw, 1rem); color: #1d1d1f;\">\n            \n<thead style=\"background: rgba(245, 245, 247, 0.8);\">\n    <tr>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u65e5\u671f<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u5e02\u573a\u540d\u79f0<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u73af\u5883<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u6210\u4ea4\u989d<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u5e73\u5747\u5206<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u6da8\u5e45>8%<\/th>\n        <th style=\"padding: 1.2vw 1vw; text-align: left; font-weight: 600; color: #1d1d1f; border-bottom: 1px solid rgba(0, 0, 0, 0.05); white-space: nowrap;\">\u8dcc\u5e45>8%<\/th>\n    <\/tr>\n<\/thead>\n            <tbody id=\"airoom-market-table-body\">\n                <tr><td colspan=\"7\" class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d&#8230;<\/td><\/tr>\n            <\/tbody>\n        <\/table>\n    <\/div>\n    <!-- \u5e02\u573a\u6570\u636e\u5c55\u5f00\u6309\u94ae\u5bb9\u5668 -->\n    <div id=\"market-toggle-container\" class=\"market-toggle-container\" style=\"display: none;\">\n        <button id=\"market-toggle-btn\" class=\"toggle-btn\" onclick=\"loadNextMarketPage()\">\u52a0\u8f7d\u4e0b\u4e00\u9875<\/button>\n    <\/div>\n    <!-- \u9875\u7801\u4fe1\u606f -->\n    <div id=\"market-page-info\" class=\"market-toggle-container\" style=\"display: none; color: #86868b; font-size: clamp(0.8rem, 1vw, 0.9rem);\">\n        \u7b2c <span id=\"market-current-page\">0<\/span> \/ <span id=\"market-total-pages\">0<\/span> \u9875 | \u5171 <span id=\"market-total-lines\">0<\/span> \u6761\u6570\u636e\n    <\/div>\n<\/div>\n\n<!-- \u4e3b\u5185\u5bb9\u533a\u57df -->\n<div class=\"airoom-main-content\" style=\"display: grid; grid-template-columns: 1fr; gap: 2vw; margin-top: 3vw;\">\n    <!-- AI\u6df1\u5ea6\u5206\u6790\u62a5\u544a\uff08APIshujufenxi.txt - \u540e\u7aef\u5206\u9875\u52a0\u8f7d\uff09 -->\n    <div class=\"airoom-analysis-section\" style=\"background: rgba(255, 255, 255, 0.8); border-radius: 20px; padding: 3vw; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05); border: 1px solid rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); max-height: 700px; overflow-y: auto;\">\n        <h3 class=\"airoom-section-title\" style=\"font-size: clamp(1.2rem, 1.8vw, 1.6rem); font-weight: 600; color: #1d1d1f; margin-bottom: 1.8vw; display: flex; align-items: center; gap: 1vw; border-bottom: 1px solid rgba(0, 0, 0, 0.05); padding-bottom: 1.2vw;\">\n            <span style=\"width: 4px; height: 24px; background: linear-gradient(180deg, #86a8e7, #af52de); border-radius: 2px;\"><\/span>\n            APIshujufenxi.txt\n        <\/h3>\n        <div id=\"airoom-analysis-content\" class=\"airoom-analysis-content\" style=\"line-height: 1.8; color: #424245; font-size: clamp(0.9rem, 1vw, 1.1rem);\">\n            <div class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d&#8230;<\/div>\n        <\/div>\n        <!-- \u5df2\u52a0\u8f7d\u7684\u5206\u6790\u5185\u5bb9\u533a\u57df -->\n        <div id=\"airoom-analysis-loaded\" class=\"loaded-content\" style=\"display: none;\"><\/div>\n        <!-- \u5206\u6790\u62a5\u544a\u5c55\u5f00\u6309\u94ae\u5bb9\u5668 -->\n        <div id=\"analysis-toggle-container\" class=\"market-toggle-container\" style=\"display: none;\">\n            <button id=\"analysis-toggle-btn\" class=\"toggle-btn\" onclick=\"loadNextAnalysisPage()\">\u52a0\u8f7d\u4e0b\u4e00\u9875<\/button>\n        <\/div>\n        <!-- \u9875\u7801\u4fe1\u606f -->\n        <div id=\"analysis-page-info\" class=\"market-toggle-container\" style=\"display: none; color: #86868b; font-size: clamp(0.8rem, 1vw, 0.9rem);\">\n            \u7b2c <span id=\"analysis-current-page\">0<\/span> \/ <span id=\"analysis-total-pages\">0<\/span> \u9875 | \u5171 <span id=\"analysis-total-lines\">0<\/span> \u884c\n        <\/div>\n    <\/div>\n\n    <!-- \u8d44\u4ea7\u7b5b\u9009\u7ec8\u7aef\uff08APIshaixuanjieguo.csv - \u540e\u7aef\u5206\u9875\u52a0\u8f7d\uff09 -->\n    <div class=\"airoom-filter-section\" style=\"background: rgba(255, 255, 255, 0.8); border-radius: 20px; padding: 3vw; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05); border: 1px solid rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); max-height: 700px; overflow-y: auto;\">\n        <h3 class=\"airoom-section-title\" style=\"font-size: clamp(1.2rem, 1.8vw, 1.6rem); font-weight: 600; color: #1d1d1f; margin-bottom: 1.8vw; display: flex; align-items: center; gap: 1vw; border-bottom: 1px solid rgba(0, 0, 0, 0.05); padding-bottom: 1.2vw;\">\n            <span style=\"width: 4px; height: 24px; background: linear-gradient(180deg, #0071e3, #86a8e7); border-radius: 2px;\"><\/span>\n            APIshaixuanjieguo.csv\n        <\/h3>\n        <div id=\"airoom-filter-list\" class=\"airoom-filter-list\">\n            <div class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d&#8230;<\/div>\n        <\/div>\n        <!-- \u5df2\u52a0\u8f7d\u7684\u7b5b\u9009\u5185\u5bb9\u533a\u57df -->\n        <div id=\"airoom-filter-loaded\" class=\"loaded-content\" style=\"display: none;\"><\/div>\n        <!-- \u7b5b\u9009\u7ed3\u679c\u5c55\u5f00\u6309\u94ae\u5bb9\u5668 -->\n        <div id=\"filter-toggle-container\" class=\"market-toggle-container\" style=\"display: none;\">\n            <button id=\"filter-toggle-btn\" class=\"toggle-btn\" onclick=\"loadNextFilterPage()\">\u52a0\u8f7d\u4e0b\u4e00\u9875<\/button>\n        <\/div>\n        <!-- \u9875\u7801\u4fe1\u606f -->\n        <div id=\"filter-page-info\" class=\"market-toggle-container\" style=\"display: none; color: #86868b; font-size: clamp(0.8rem, 1vw, 0.9rem);\">\n            \u7b2c <span id=\"filter-current-page\">0<\/span> \/ <span id=\"filter-total-pages\">0<\/span> \u9875 | \u5171 <span id=\"filter-total-items\">0<\/span> \u6761\u6570\u636e\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- \u9875\u811a\uff08\u82f9\u679c\u98ce\u683c\u6781\u7b80\uff09 -->\n<div class=\"airoom-footer\" style=\"text-align: center; padding: 3vw 0; color: #86868b; font-size: clamp(0.8rem, 1vw, 0.9rem); margin-top: 4vw; border-top: 1px solid rgba(0, 0, 0, 0.05);\">\n    \u00a9 2026 AIROOM Financial Data Systems | Security Level: Classified\n<\/div>\n\n<!-- JavaScript\u4ee3\u7801\uff08\u540e\u7aef\u5206\u9875\u52a0\u8f7d\uff1a\u6bcf\u6b21\u53ea\u8bf7\u6c42\u4e00\u9875\u6570\u636e\uff09 -->\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ ========== \u5b9a\u4e49PHP\u63a5\u53e3\u5730\u5740\uff08\u8bf7\u66ff\u6362\u4e3a\u4f60\u7684\u5b9e\u9645\u57df\u540d\uff09 ==========\n    const apiUrl = 'http:\/\/airoom.ltd\/airoom_get_data.php'; \/\/ \u66ff\u6362\u4e3a\u4f60\u7684\u57df\u540d\n\n    \/\/ ========== \u5e02\u573a\u6570\u636e\u5206\u9875\u52a0\u8f7d\u76f8\u5173\u53d8\u91cf ==========\n    let marketCurrentPage = 0;          \/\/ \u5e02\u573a\u6570\u636e\u5f53\u524d\u9875\u7801\n    let marketTotalPages = 0;           \/\/ \u5e02\u573a\u6570\u636e\u603b\u9875\u6570\n    let marketTotalLines = 0;           \/\/ \u5e02\u573a\u6570\u636e\u603b\u884c\u6570\n    const MARKET_PAGE_SIZE = 80;        \/\/ \u5e02\u573a\u6570\u636e\u6bcf\u9875\u663e\u793a80\u884c\n    let marketIsLoading = false;        \/\/ \u5e02\u573a\u6570\u636e\u52a0\u8f7d\u72b6\u6001\u6807\u5fd7\n\n    \/\/ ========== \u5206\u6790\u62a5\u544a\u5206\u9875\u52a0\u8f7d\u76f8\u5173\u53d8\u91cf ==========\n    let analysisCurrentPage = 0;        \/\/ \u5206\u6790\u62a5\u544a\u5f53\u524d\u9875\u7801\n    let analysisTotalPages = 0;         \/\/ \u5206\u6790\u62a5\u544a\u603b\u9875\u6570\n    let analysisTotalLines = 0;         \/\/ \u5206\u6790\u62a5\u544a\u603b\u884c\u6570\n    const ANALYSIS_PAGE_SIZE = 80;      \/\/ \u5206\u6790\u62a5\u544a\u6bcf\u9875\u663e\u793a80\u884c\n    let analysisIsLoading = false;      \/\/ \u5206\u6790\u62a5\u544a\u52a0\u8f7d\u72b6\u6001\u6807\u5fd7\n\n    \/\/ ========== \u7b5b\u9009\u7ed3\u679c\u5206\u9875\u52a0\u8f7d\u76f8\u5173\u53d8\u91cf ==========\n    let filterCurrentPage = 0;          \/\/ \u7b5b\u9009\u7ed3\u679c\u5f53\u524d\u9875\u7801\n    let filterTotalPages = 0;           \/\/ \u7b5b\u9009\u7ed3\u679c\u603b\u9875\u6570\n    let filterTotalItems = 0;           \/\/ \u7b5b\u9009\u7ed3\u679c\u603b\u6761\u6570\n    const FILTER_PAGE_SIZE = 80;        \/\/ \u7b5b\u9009\u7ed3\u679c\u6bcf\u9875\u663e\u793a80\u9879\n    let filterIsLoading = false;        \/\/ \u7b5b\u9009\u7ed3\u679c\u52a0\u8f7d\u72b6\u6001\u6807\u5fd7\n\n    \/\/ ========== \u8bbe\u7f6e\u5f53\u524d\u65e5\u671f ==========\n    document.getElementById('airoom-date').textContent = '\u66f4\u65b0\u65f6\u95f4: ' + new Date().toLocaleDateString('zh-CN', {\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit'\n    });\n\n    \/\/ ========== 1. \u52a0\u8f7d\u5e02\u573a\u6570\u636e\uff08APIshujubaocun.csv\uff09- \u521d\u59cb\u53ea\u52a0\u8f7d\u7b2c\u4e00\u9875 ==========\n    loadMarketPage(1);\n\n    \/\/ \u5e02\u573a\u6570\u636e\u52a0\u8f7d\u51fd\u6570 - \u6838\u5fc3\u4fee\u590d\uff1a\u79fb\u9664\u8fc7\u5ea6\u8fc7\u6ee4\uff0c\u4fdd\u7559\u6240\u6709\u6709\u6548\u884c\n    function loadMarketPage(page) {\n        if (marketIsLoading) return;\n\n        marketIsLoading = true;\n        const btn = document.getElementById('market-toggle-btn');\n        const tbody = document.getElementById('airoom-market-table-body');\n\n        if (page === 1) {\n            tbody.innerHTML = '<tr><td colspan=\"7\" class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d...<\/td><\/tr>';\n        } else {\n            btn.disabled = true;\n            btn.textContent = '\u52a0\u8f7d\u4e2d...';\n        }\n\n        fetch(`${apiUrl}?file=APIshujubaocun.csv&page=${page}&page_size=${MARKET_PAGE_SIZE}`)\n            .then(response => response.json())\n            .then(result => {\n                if (result.success) {\n                    marketCurrentPage = result.page;\n                    marketTotalPages = result.total_pages;\n                    marketTotalLines = result.total_lines;\n\n                    \/\/ \u4fee\u590d\uff1a\u4ec5\u505a\u57fa\u7840\u7a7a\u503c\u68c0\u67e5\uff0c\u79fb\u9664\u8fc7\u5ea6\u7684\u53bb\u91cd\u548c\u8fc7\u6ee4\n                    const validData = [];\n                    \/\/ \u8df3\u8fc7\u8868\u5934\uff08\u7b2c0\u884c\uff09\uff0c\u5904\u7406\u6240\u6709\u6570\u636e\u884c\n                    for (let i = 1; i < result.data.length; i++) {  \n                        const line = result.data[i].trim();\n                        \/\/ \u8df3\u8fc7\u7a7a\u884c\n                        if (!line) continue;\n                        \n                        const parts = line.split(',');\n                        \/\/ \u4ec5\u68c0\u67e5\u6838\u5fc3\u5b57\u6bb5\uff08\u65e5\u671f\uff09\u662f\u5426\u5b58\u5728\uff0c\u4e0d\u9650\u5236\u5b57\u6bb5\u6570\u91cf\n                        if (parts.length >= 1 && parts[0].trim()) {\n                            validData.push(parts);\n                        }\n                    }\n\n                    \/\/ \u6e32\u67d3\u6570\u636e - \u4fdd\u7559\u5206\u9875\u52a0\u8f7d\u7684\u7d2f\u52a0\u903b\u8f91\n                    if (page === 1) {\n                        tbody.innerHTML = '';\n                    }\n\n                    \/\/ \u6e32\u67d3\u6240\u6709\u6709\u6548\u6570\u636e\u884c\uff0c\u4e0d\u4e22\u5931\u4efb\u4f55\u884c\n                    validData.forEach(parts => {\n                        const status = getStatus(parts[2]);\n                        const tr = document.createElement('tr');\n                        tr.style.borderBottom = '1px solid rgba(0, 0, 0, 0.03)';\n                        tr.innerHTML =\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[0] || '-') + '<\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[1] ? extractMarketName(parts[1]) : '-') + '<\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\"><span class=\"airoom-status-badge ' + status + '\" style=\"display: inline-block; padding: 0.5vw 1vw; border-radius: 999px; font-size: clamp(0.8rem, 1vw, 0.9rem); font-weight: 500;\">' + (parts[2] || '-') + '<\/span><\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[3] ? Math.round(parseFloat(parts[3])) : '-') + '<\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[4] || '0') + '<\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[5] || '0') + '<\/td>' +\n    '<td style=\"padding: 1.2vw 1vw;\">' + (parts[6] || '0') + '<\/td>';\n                        tbody.appendChild(tr);\n                    });\n\n                    \/\/ \u66f4\u65b0\u9875\u7801\u4fe1\u606f\n                    updateMarketUI();\n                } else {\n                    tbody.innerHTML = '<tr><td colspan=\"7\" style=\"text-align:center; color:#fc8181; padding:4vw;\">\u6570\u636e\u52a0\u8f7d\u5931\u8d25: ' + (result.msg || '\u672a\u77e5\u9519\u8bef') + '<\/td><\/tr>';\n                }\n                marketIsLoading = false;\n            })\n            .catch(error => {\n                console.error('\u52a0\u8f7d\u5e02\u573a\u6570\u636e\u5931\u8d25:', error);\n                tbody.innerHTML = '<tr><td colspan=\"7\" style=\"text-align:center; color:#fc8181; padding:4vw;\">\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5<\/td><\/tr>';\n                marketIsLoading = false;\n            });\n    }\n\n    \/\/ \u66f4\u65b0\u5e02\u573a\u6570\u636eUI\n    function updateMarketUI() {\n        const toggleContainer = document.getElementById('market-toggle-container');\n        const pageInfo = document.getElementById('market-page-info');\n        const btn = document.getElementById('market-toggle-btn');\n\n        document.getElementById('market-current-page').textContent = marketCurrentPage;\n        document.getElementById('market-total-pages').textContent = marketTotalPages;\n        document.getElementById('market-total-lines').textContent = marketTotalLines;\n\n        if (marketCurrentPage < marketTotalPages) {\n            toggleContainer.style.display = 'block';\n            pageInfo.style.display = 'block';\n            btn.disabled = false;\n            btn.textContent = '\u52a0\u8f7d\u4e0b\u4e00\u9875\uff08\u7b2c' + (marketCurrentPage + 1) + '\u9875\uff0c\u5171' + marketTotalPages + '\u9875\uff09';\n        } else {\n            toggleContainer.style.display = 'none';\n            pageInfo.style.display = 'block';\n        }\n    }\n\n    \/\/ \u5e02\u573a\u6570\u636e\u52a0\u8f7d\u4e0b\u4e00\u9875\n    window.loadNextMarketPage = function() {\n        if (marketCurrentPage < marketTotalPages) {\n            loadMarketPage(marketCurrentPage + 1);\n        }\n    };\n\n    \/\/ ========== 2. \u52a0\u8f7d\u5206\u6790\u62a5\u544a\uff08APIshujufenxi.txt\uff09- \u521d\u59cb\u53ea\u52a0\u8f7d\u7b2c\u4e00\u9875 ==========\n    loadAnalysisPage(1);\n\n    \/\/ \u5206\u6790\u62a5\u544a\u52a0\u8f7d\u51fd\u6570\n    function loadAnalysisPage(page) {\n        if (analysisIsLoading) return;\n\n        analysisIsLoading = true;\n        const btn = document.getElementById('analysis-toggle-btn');\n        const contentDiv = document.getElementById('airoom-analysis-content');\n        const loadedDiv = document.getElementById('airoom-analysis-loaded');\n\n        if (page === 1) {\n            contentDiv.innerHTML = '<div class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d...<\/div>';\n        } else {\n            btn.disabled = true;\n            btn.textContent = '\u52a0\u8f7d\u4e2d...';\n        }\n\n        fetch(`${apiUrl}?file=APIshujufenxi.txt&page=${page}&page_size=${ANALYSIS_PAGE_SIZE}`)\n            .then(response => response.json())\n            .then(result => {\n                if (result.success) {\n                    analysisCurrentPage = result.page;\n                    analysisTotalPages = result.total_pages;\n                    analysisTotalLines = result.total_lines;\n\n                    \/\/ \u5904\u7406Markdown\u683c\u5f0f\n                    let html = result.data.slice(1).join('\\n');  \/\/ \u8df3\u8fc7\u8868\u5934\n                    html = html\n                        .replace(\/^#\\s+(.+)\/gm, '<h1 style=\"font-size: clamp(1.4rem, 1.8vw, 1.6rem); color: #1d1d1f; margin: 2vw 0 1.2vw 0; font-weight: 600;\">$1<\/h1>')\n                        .replace(\/^##\\s+(.+)\/gm, '<h2 style=\"font-size: clamp(1.2rem, 1.5vw, 1.4rem); color: #1d1d1f; margin: 1.8vw 0 1vw 0; font-weight: 600;\">$1<\/h2>')\n                        .replace(\/^###\\s+(.+)\/gm, '<h3 style=\"font-size: clamp(1rem, 1.2vw, 1.2rem); color: #1d1d1f; margin: 1.5vw 0 0.8vw 0; font-weight: 600;\">$1<\/h3>')\n                        .replace(\/\\*\\*(.+?)\\*\\*\/g, '<strong style=\"color: #0071e3; font-weight: 600;\">$1<\/strong>')\n                        .replace(\/\\n\\n+\/g, '<\/p><p style=\"margin-bottom: 1.2vw; text-align: justify; word-wrap: break-word;\">')\n                        .replace(\/\\n\/g, '<br>');\n                    html = '<p style=\"margin-bottom: 1.2vw; text-align: justify; word-wrap: break-word;\">' + html + '<\/p>';\n\n                    \/\/ \u6e32\u67d3\n                    if (page === 1) {\n                        contentDiv.innerHTML = html;\n                    } else {\n                        const pageDiv = document.createElement('div');\n                        pageDiv.style.marginBottom = '1vw';\n                        pageDiv.innerHTML = html;\n                        loadedDiv.appendChild(pageDiv);\n                        loadedDiv.style.display = 'block';\n                    }\n\n                    \/\/ \u66f4\u65b0UI\n                    updateAnalysisUI();\n                } else {\n                    contentDiv.innerHTML = '<div style=\"text-align:center;color:#fc8181;padding:4vw;\">\u6570\u636e\u52a0\u8f7d\u5931\u8d25: ' + (result.msg || '\u672a\u77e5\u9519\u8bef') + '<\/div>';\n                }\n                analysisIsLoading = false;\n            })\n            .catch(error => {\n                console.error('\u52a0\u8f7d\u5206\u6790\u62a5\u544a\u5931\u8d25:', error);\n                contentDiv.innerHTML = '<div style=\"text-align:center;color:#fc8181;padding:4vw;\">\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5<\/div>';\n                analysisIsLoading = false;\n            });\n    }\n\n    \/\/ \u66f4\u65b0\u5206\u6790\u62a5\u544aUI\n    function updateAnalysisUI() {\n        const toggleContainer = document.getElementById('analysis-toggle-container');\n        const pageInfo = document.getElementById('analysis-page-info');\n        const btn = document.getElementById('analysis-toggle-btn');\n\n        document.getElementById('analysis-current-page').textContent = analysisCurrentPage;\n        document.getElementById('analysis-total-pages').textContent = analysisTotalPages;\n        document.getElementById('analysis-total-lines').textContent = analysisTotalLines;\n\n        if (analysisCurrentPage < analysisTotalPages) {\n            toggleContainer.style.display = 'block';\n            pageInfo.style.display = 'block';\n            btn.disabled = false;\n            btn.textContent = '\u52a0\u8f7d\u4e0b\u4e00\u9875\uff08\u7b2c' + (analysisCurrentPage + 1) + '\u9875\uff0c\u5171' + analysisTotalPages + '\u9875\uff09';\n        } else {\n            toggleContainer.style.display = 'none';\n            pageInfo.style.display = 'block';\n        }\n    }\n\n    \/\/ \u5206\u6790\u62a5\u544a\u52a0\u8f7d\u4e0b\u4e00\u9875\n    window.loadNextAnalysisPage = function() {\n        if (analysisCurrentPage < analysisTotalPages) {\n            loadAnalysisPage(analysisCurrentPage + 1);\n        }\n    };\n\n    \/\/ ========== 3. \u52a0\u8f7d\u7b5b\u9009\u7ed3\u679c\uff08APIshaixuanjieguo.csv\uff09- \u521d\u59cb\u53ea\u52a0\u8f7d\u7b2c\u4e00\u9875 ==========\n    loadFilterPage(1);\n\n    \/\/ \u7b5b\u9009\u7ed3\u679c\u52a0\u8f7d\u51fd\u6570\n    function loadFilterPage(page) {\n        if (filterIsLoading) return;\n\n        filterIsLoading = true;\n        const btn = document.getElementById('filter-toggle-btn');\n        const listDiv = document.getElementById('airoom-filter-list');\n        const loadedDiv = document.getElementById('airoom-filter-loaded');\n\n        if (page === 1) {\n            listDiv.innerHTML = '<div class=\"airoom-loading\" style=\"text-align: center; padding: 4vw; color: #86a8e7;\">\u52a0\u8f7d\u4e2d...<\/div>';\n        } else {\n            btn.disabled = true;\n            btn.textContent = '\u52a0\u8f7d\u4e2d...';\n        }\n\n        fetch(`${apiUrl}?file=APIshaixuanjieguo.csv&page=${page}&page_size=${FILTER_PAGE_SIZE}`)\n            .then(response => response.json())\n            .then(result => {\n                if (result.success) {\n                    filterCurrentPage = result.page;\n                    filterTotalPages = result.total_pages;\n                    filterTotalItems = result.total_lines;\n\n                    let html = '';\n                    for (let i = 1; i < result.data.length; i++) {  \/\/ \u8df3\u8fc7\u8868\u5934\n                        const line = result.data[i];\n                        const parts = line.split(',');\n                        if (parts.length >= 2 && parts[0] && parts[1]) {\n                            const market = parts[0].trim();\n                            const name = parts.slice(1).join(',').trim();\n                            html += '<div class=\"airoom-filter-item\" style=\"background: rgba(245, 245, 247, 0.6); padding: 1vw 1.2vw; border-radius: 12px; display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.8vw;\">' +\n                                '<span class=\"airoom-filter-market\" style=\"font-weight: 500; color: #0071e3; min-width: 80px;\">' + market + '<\/span>' +\n                                '<span class=\"airoom-filter-name\" style=\"color: #424245; flex: 1; margin-left: 1vw;\">' + name + '<\/span>' +\n                                '<\/div>';\n                        }\n                    }\n\n                    \/\/ \u6e32\u67d3\n                    if (page === 1) {\n                        listDiv.innerHTML = html;\n                    } else {\n                        loadedDiv.innerHTML += html;\n                        loadedDiv.style.display = 'block';\n                    }\n\n                    \/\/ \u66f4\u65b0UI\n                    updateFilterUI();\n                } else {\n                    listDiv.innerHTML = '<div style=\"text-align:center;color:#fc8181;padding:4vw;\">\u6570\u636e\u52a0\u8f7d\u5931\u8d25: ' + (result.msg || '\u672a\u77e5\u9519\u8bef') + '<\/div>';\n                }\n                filterIsLoading = false;\n            })\n            .catch(error => {\n                console.error('\u52a0\u8f7d\u7b5b\u9009\u6570\u636e\u5931\u8d25:', error);\n                listDiv.innerHTML = '<div style=\"text-align:center;color:#fc8181;padding:4vw;\">\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5<\/div>';\n                filterIsLoading = false;\n            });\n    }\n\n    \/\/ \u66f4\u65b0\u7b5b\u9009\u7ed3\u679cUI\n    function updateFilterUI() {\n        const toggleContainer = document.getElementById('filter-toggle-container');\n        const pageInfo = document.getElementById('filter-page-info');\n        const btn = document.getElementById('filter-toggle-btn');\n\n        document.getElementById('filter-current-page').textContent = filterCurrentPage;\n        document.getElementById('filter-total-pages').textContent = filterTotalPages;\n        document.getElementById('filter-total-items').textContent = filterTotalItems;\n\n        if (filterCurrentPage < filterTotalPages) {\n            toggleContainer.style.display = 'block';\n            pageInfo.style.display = 'block';\n            btn.disabled = false;\n            btn.textContent = '\u52a0\u8f7d\u4e0b\u4e00\u9875\uff08\u7b2c' + (filterCurrentPage + 1) + '\u9875\uff0c\u5171' + filterTotalPages + '\u9875\uff09';\n        } else {\n            toggleContainer.style.display = 'none';\n            pageInfo.style.display = 'block';\n        }\n    }\n\n    \/\/ \u7b5b\u9009\u7ed3\u679c\u52a0\u8f7d\u4e0b\u4e00\u9875\n    window.loadNextFilterPage = function() {\n        if (filterCurrentPage < filterTotalPages) {\n            loadFilterPage(filterCurrentPage + 1);\n        }\n    };\n\n    \/\/ ========== \u901a\u7528\u5de5\u5177\u51fd\u6570 ==========\n    function formatNumber(num) {\n        if (!num) return '-';\n        num = num.replace(\/,\/g, '');\n        const n = parseFloat(num);\n        if (isNaN(n)) return num;\n        if (n >= 1e12) return (n \/ 1e12).toFixed(2) + '\u4e07\u4ebf';\n        if (n >= 1e8) return (n \/ 1e8).toFixed(2) + '\u4ebf';\n        if (n >= 1e4) return (n \/ 1e4).toFixed(2) + '\u4e07';\n        return n.toFixed(2);\n    }\n\n    \/\/ \u2705 \u4fee\u590d\uff1a\u76f4\u63a5\u8fd4\u56de\u5b8c\u6574\u5e02\u573a\u540d\u79f0\uff0c\u4e0d\u505a\u4efb\u4f55\u622a\u53d6\n    function extractMarketName(str) {\n        if (!str) return '-';\n        \/\/ \u79fb\u9664\u539f\u6709\u7684\u622a\u53d6\u903b\u8f91\uff0c\u5b8c\u6574\u663e\u793a\u5e02\u573a\u540d\u79f0\n        return str;\n    }\n\n    function getStatus(status) {\n        if (status === '\u4f18\u79c0') return 'airoom-status-excellent';\n        if (status === '\u826f\u597d') return 'airoom-status-good';\n        if (status === '\u5dee') return 'airoom-status-poor';\n        return '';\n    }\n});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>This page is for simulation only and does not represent real\u2011world scenarios.The market involves risks, and investment requires caution.All views and data are for experimental purposes only.You shall be solely responsible for any consequences arising from their use.They do not constitute investment advice or basis.The data does not reflect market trends, prices, yields or return rates.All data is from simulated accounts, not live trading.<\/strong><br><strong>\u672c\u9875\u9762\u4e3a\u6a21\u62df\uff0c\u975e\u73b0\u5b9e\u573a\u666f\u3002\u5e02\u573a\u6709\u98ce\u9669\uff0c\u6295\u8d44\u9700\u8c28\u614e\u3002\u89c2\u70b9\u548c\u6570\u636e\u53ea\u505a\u5b9e\u9a8c\uff0c\u4f7f\u7528\u540e\u679c\u81ea\u8d1f\uff0c\u4e0d\u6784\u6210\u6295\u8d44\u4f9d\u636e\u5efa\u8bae\uff0c\u6570\u636e\u4e0d\u662f\u5e02\u573a\u65b9\u5411\u3001\u4ef7\u683c\u3001\u6536\u76ca\u7387\u3001\u56de\u62a5\u7387\u3002\u4e00\u5207\u6570\u636e\u5747\u4e3a\u6a21\u62df\u4ed3\uff0c\u4e0d\u662f\u5b9e\u76d8\u3002<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This page is for simulation only and does not represent [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-65","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/pages\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/comments?post=65"}],"version-history":[{"count":122,"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/pages\/65\/revisions"}],"predecessor-version":[{"id":474,"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/pages\/65\/revisions\/474"}],"wp:attachment":[{"href":"http:\/\/airoom.ltd\/index.php\/wp-json\/wp\/v2\/media?parent=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}