index.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>RAG管道测试可视化工具</title>
  7. <link rel="stylesheet" href="styles.css">
  8. </head>
  9. <body>
  10. <div class="container">
  11. <header class="header">
  12. <h1>🔍 RAG管道测试可视化工具</h1>
  13. <p class="subtitle">RAG链路各环节输入输出数据流转调试工具</p>
  14. </header>
  15. <!-- RAG测试输入区域 -->
  16. <section class="rag-input-section">
  17. <h2>🚀 RAG链路测试</h2>
  18. <div class="server-status" id="serverStatus">
  19. <span class="status-dot offline"></span>
  20. <span class="status-text">服务未连接</span>
  21. </div>
  22. <div class="input-area">
  23. <textarea id="ragInput" placeholder="输入测试文本,点击执行RAG检索...&#10;&#10;示例:主要部件说明&#10;1、主梁总成&#10;主梁总成由主梁和导梁构成。主梁单节长12m,共7节,每节重10.87t..."></textarea>
  24. </div>
  25. <div class="action-buttons">
  26. <button class="btn btn-primary" id="runRagBtn" onclick="runRAG()">
  27. <span class="btn-icon">▶</span> 执行RAG检索
  28. </button>
  29. <button class="btn btn-secondary" onclick="loadSampleData()">加载历史数据</button>
  30. <button class="btn btn-secondary" onclick="clearData()">清空</button>
  31. </div>
  32. <div class="loading-overlay" id="loadingOverlay" style="display: none;">
  33. <div class="loading-spinner"></div>
  34. <p>正在执行RAG检索...</p>
  35. </div>
  36. </section>
  37. <!-- 文件上传区域 -->
  38. <section class="upload-section">
  39. <div class="upload-area" id="uploadArea">
  40. <div class="upload-icon">📁</div>
  41. <p>或拖拽JSON文件到此处查看历史数据</p>
  42. <input type="file" id="fileInput" accept=".json" hidden>
  43. </div>
  44. </section>
  45. <!-- 管道概览 -->
  46. <section class="pipeline-overview" id="pipelineOverview" style="display: none;">
  47. <h2>📊 管道概览</h2>
  48. <div class="overview-cards">
  49. <div class="overview-card">
  50. <div class="card-icon">⏱️</div>
  51. <div class="card-content">
  52. <span class="card-label">执行时间</span>
  53. <span class="card-value" id="totalTime">-</span>
  54. </div>
  55. </div>
  56. <div class="overview-card">
  57. <div class="card-icon">📝</div>
  58. <div class="card-content">
  59. <span class="card-label">处理阶段</span>
  60. <span class="card-value" id="stageCount">-</span>
  61. </div>
  62. </div>
  63. <div class="overview-card">
  64. <div class="card-icon">✅</div>
  65. <div class="card-content">
  66. <span class="card-label">执行状态</span>
  67. <span class="card-value" id="execStatus">-</span>
  68. </div>
  69. </div>
  70. </div>
  71. </section>
  72. <!-- 管道流程图 -->
  73. <section class="pipeline-flow" id="pipelineFlow" style="display: none;">
  74. <h2>🔄 管道流程</h2>
  75. <div class="flow-container" id="flowContainer">
  76. <!-- 动态生成流程节点 -->
  77. </div>
  78. </section>
  79. <!-- 详细数据面板 -->
  80. <section class="detail-panel" id="detailPanel" style="display: none;">
  81. <h2>📋 详细数据</h2>
  82. <div class="tabs">
  83. <button class="tab-btn active" data-tab="input">输入数据</button>
  84. <button class="tab-btn" data-tab="output">输出数据</button>
  85. <button class="tab-btn" data-tab="raw">原始JSON</button>
  86. </div>
  87. <div class="tab-content">
  88. <div class="tab-pane active" id="inputPane">
  89. <pre class="json-viewer" id="inputViewer"></pre>
  90. </div>
  91. <div class="tab-pane" id="outputPane">
  92. <pre class="json-viewer" id="outputViewer"></pre>
  93. </div>
  94. <div class="tab-pane" id="rawPane">
  95. <pre class="json-viewer" id="rawViewer"></pre>
  96. </div>
  97. </div>
  98. </section>
  99. <!-- 各阶段详情 -->
  100. <section class="stages-detail" id="stagesDetail" style="display: none;">
  101. <h2>🔬 各阶段详情</h2>
  102. <div class="accordion" id="stagesAccordion">
  103. <!-- 动态生成各阶段详情 -->
  104. </div>
  105. </section>
  106. </div>
  107. <script src="app.js"></script>
  108. </body>
  109. </html>