Преглед изворни кода

feat: show manual query json example

SamLee пре 2 недеља
родитељ
комит
c34001f431

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
app/frontend/dist/assets/index-Dox3rE61.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
app/frontend/dist/assets/index-Dyg7G-Zh.js


+ 2 - 2
app/frontend/dist/index.html

@@ -4,8 +4,8 @@
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>创作知识</title>
-    <script type="module" crossorigin src="/app/assets/index-iEdd66_J.js"></script>
-    <link rel="stylesheet" crossorigin href="/app/assets/index-zUYQ6IWb.css">
+    <script type="module" crossorigin src="/app/assets/index-Dyg7G-Zh.js"></script>
+    <link rel="stylesheet" crossorigin href="/app/assets/index-Dox3rE61.css">
   </head>
   <body>
     <div id="root"></div>

+ 29 - 4
app/frontend/src/features/query-board/ManualQueryModal.jsx

@@ -1,6 +1,25 @@
 import { useMemo, useState } from 'react'
 import { submitManualQueryBatch } from '../../api/workbench.js'
 
+const JSON_EXAMPLE = `{
+  "queries": [
+    "符号 视频 灵感 怎么做",
+    "符号 视频 灵感 有哪些",
+    {
+      "query_text": "叙事体裁 视频 灵感 为什么",
+      "axes": {
+        "实质": "叙事体裁",
+        "模态": "视频",
+        "业务阶段": "灵感",
+        "知识类型": "为什么"
+      },
+      "metadata": {
+        "source": "manual_upload"
+      }
+    }
+  ]
+}`
+
 function normalizeJsonQueries(value) {
   if (Array.isArray(value)) return value
   if (!value || typeof value !== 'object') return []
@@ -89,10 +108,16 @@ export default function ManualQueryModal({ mode, onClose, onSubmitted }) {
         </div>
 
         {mode === 'json' ? (
-          <label className="manual-upload">
-            <input accept=".json,application/json" type="file" onChange={onFileChange} />
-            <span>{fileName || '选择 JSON 文件'}</span>
-          </label>
+          <>
+            <label className="manual-upload">
+              <input accept=".json,application/json" type="file" onChange={onFileChange} />
+              <span>{fileName || '选择 JSON 文件'}</span>
+            </label>
+            <div className="manual-json-example">
+              <div className="manual-json-example-title">JSON 格式案例</div>
+              <pre>{JSON_EXAMPLE}</pre>
+            </div>
+          </>
         ) : (
           <textarea
             className="manual-textarea"

+ 25 - 0
app/frontend/src/styles/query-board.css

@@ -117,6 +117,31 @@
   display: none;
 }
 
+.manual-json-example {
+  border: 1px solid #e5e6eb;
+  border-radius: 6px;
+  background: #f7f8fa;
+  overflow: hidden;
+}
+
+.manual-json-example-title {
+  padding: 8px 10px;
+  border-bottom: 1px solid #e5e6eb;
+  color: #4e5969;
+  font-size: 12px;
+  font-weight: 700;
+}
+
+.manual-json-example pre {
+  max-height: 240px;
+  margin: 0;
+  padding: 10px 12px;
+  overflow: auto;
+  color: #1d2129;
+  font: 12px/1.55 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
+  white-space: pre-wrap;
+}
+
 .manual-preview {
   padding: 10px 12px;
   border: 1px solid #e5e6eb;

Неке датотеке нису приказане због велике количине промена