@customize-agent/server 3.0.20 → 3.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -150,7 +150,7 @@
150
150
  "static/chunks/292-f0a2c92861c304e6.js",
151
151
  "static/chunks/858-5e6982e2b239d4b7.js",
152
152
  "static/chunks/969-5d5ff5a3ed74f52b.js",
153
- "static/chunks/pages/guide-acf32d66a6df6e5a.js"
153
+ "static/chunks/pages/guide-8b0f474da04fc9f1.js"
154
154
  ],
155
155
  "/knowledge": [
156
156
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "35feaa205e63669c10e324489967814b",
7
- "previewModeSigningKey": "e0f64e133cc1b42cf64c952381755c1ad7179710b8d468f6e43edb9b2418a8bf",
8
- "previewModeEncryptionKey": "b0199578a2c74a6f58fe42b932d93de0b56599b2d8622d8917f68e91d3f82fe1"
6
+ "previewModeId": "be7e6238bbee3dc6e4d5d45979485d6c",
7
+ "previewModeSigningKey": "35f773e99d4c0be4319061039d1dc105ae9a880cf96c5f2339d44c847bbb05b7",
8
+ "previewModeEncryptionKey": "8015a11e6e3903308d42a9c339d7dbb53cdedc823d5e5e49cbaafdc0b37aa82e"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -144,15 +144,23 @@
144
144
  - 图片或地图只有展示,没有说明其用途。
145
145
 
146
146
  ## 通过标准
147
- 文档应能说明:使用了哪些文件角色、哪些提示词角色、哪些规范包规则,以及最终导出为什么可以交付。`}))m(g.join(c,a),b);n(g.join(c,"表格数据","表格数据-热门干员推荐.xlsx")),n(g.join(c,"表格数据","表格数据-热门干员推荐.xls")),m(g.join(c,"文档资料","Word资料-队伍搭配说明.doc"),"【内置 DOC 示例】\n队伍搭配建议:露娜负责侦察和路线判断,蜂医负责治疗和救援,红狼负责突破,牧羊人负责防守控场。\n"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>1e3)return;i.mkdirSync(g.dirname(a),{recursive:!0});let d=`import sys,zipfile,html
148
- out=sys.argv[1]; title=sys.argv[2]; ps=sys.argv[3:]
149
- def p(t): return '<w:p><w:r><w:t>'+html.escape(t)+'</w:t></w:r></w:p>'
150
- xml='<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>'+p(title)+''.join(p(x) for x in ps)+'<w:sectPr/></w:body></w:document>'
151
- with zipfile.ZipFile(out,'w',zipfile.ZIP_DEFLATED) as z:
152
- z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
153
- z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
154
- z.writestr('word/document.xml',xml)
155
- `;(0,j.execFileSync)("python3",["-c",d,a,b,...c],{stdio:"pipe"})}(g.join(c,"文档资料","Word资料-队伍搭配说明.docx"),"三角洲行动队伍搭配说明",["露娜负责侦察和路线判断,蜂医负责治疗和救援。","红狼适合突破和正面压制,牧羊人适合防守控场。","内置 DOCX 用于验证 Word 类文件解析、索引、角色绑定和文档生成全流程。"]),function(a,b){if(i.existsSync(a)&&i.statSync(a).size>500)return;i.mkdirSync(g.dirname(a),{recursive:!0});let c=`%PDF-1.4
147
+ 文档应能说明:使用了哪些文件角色、哪些提示词角色、哪些规范包规则,以及最终导出为什么可以交付。`}))m(g.join(c,a),b);n(g.join(c,"表格数据","表格数据-热门干员推荐.xlsx")),n(g.join(c,"表格数据","表格数据-热门干员推荐.xls")),m(g.join(c,"文档资料","Word资料-队伍搭配说明.doc"),"【内置 DOC 示例】\n队伍搭配建议:露娜负责侦察和路线判断,蜂医负责治疗和救援,红狼负责突破,牧羊人负责防守控场。\n"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>1e3)return;i.mkdirSync(g.dirname(a),{recursive:!0});let d=`
148
+ const fs = require('fs');
149
+ const JSZip = require('jszip');
150
+ const out = process.argv[1];
151
+ const title = process.argv[2];
152
+ const paragraphs = process.argv.slice(3);
153
+ const escapeXml = text => String(text).replace(/[<>&"']/g, char => ({ '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;', "'": '&apos;' }[char]));
154
+ const paragraph = text => '<w:p><w:r><w:t>' + escapeXml(text) + '</w:t></w:r></w:p>';
155
+ const xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>' + paragraph(title) + paragraphs.map(paragraph).join('') + '<w:sectPr/></w:body></w:document>';
156
+ (async () => {
157
+ const zip = new JSZip();
158
+ zip.file('[Content_Types].xml', '<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>');
159
+ zip.file('_rels/.rels', '<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>');
160
+ zip.file('word/document.xml', xml);
161
+ fs.writeFileSync(out, await zip.generateAsync({ type: 'nodebuffer', compression: 'DEFLATE' }));
162
+ })().catch(error => { console.error(error); process.exit(1); });
163
+ `;(0,j.execFileSync)(process.execPath,["-e",d,a,b,...c],{stdio:"pipe"})}(g.join(c,"文档资料","Word资料-队伍搭配说明.docx"),"三角洲行动队伍搭配说明",["露娜负责侦察和路线判断,蜂医负责治疗和救援。","红狼适合突破和正面压制,牧羊人适合防守控场。","内置 DOCX 用于验证 Word 类文件解析、索引、角色绑定和文档生成全流程。"]),function(a,b){if(i.existsSync(a)&&i.statSync(a).size>500)return;i.mkdirSync(g.dirname(a),{recursive:!0});let c=`%PDF-1.4
156
164
  1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
157
165
  2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
158
166
  3 0 obj<</Type/Page/Parent 2 0 R/MediaBox[0 0 595 842]/Contents 4 0 R/Resources<</Font<</F1 5 0 R>>>>>>endobj
@@ -162,13 +170,19 @@ endstream endobj
162
170
  5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica>>endobj
163
171
  trailer<</Root 1 0 R>>
164
172
  %%EOF
165
- `;i.writeFileSync(a,c,"binary")}(g.join(c,"文档资料","PDF资料-官方攻略摘录.pdf"),"Delta Force Builtin PDF Sample");let d=["# 【内置】干员图片资料","","图片公开来源:PlayerHub / luoy-oss deltaforce_id 公开索引",""];for(let[a,b]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let e=g.join(c,"图片素材","干员图片",a);!function(a,b,c){if(!i.existsSync(b)||!(i.statSync(b).size>=1e3)){var d=(0,j.execFileSync)("python3",["-c",'import sys,urllib.request; url=sys.argv[1]; req=urllib.request.Request(url,headers={"User-Agent":"Mozilla/5.0"}); sys.stdout.buffer.write(urllib.request.urlopen(req,timeout=30).read())',a],{encoding:"buffer",maxBuffer:0x1e00000});if(i.mkdirSync(g.dirname(b),{recursive:!0}),d.length<1e3)throw Error(`内置资料下载失败或文件过小:${a}`);let e=g.join(g.dirname(b),`.${g.basename(b)}.${process.pid}.tmp`);try{i.writeFileSync(e,d),i.renameSync(e,b)}catch(c){try{i.existsSync(e)&&i.rmSync(e,{force:!0})}catch{console.warn("[builtin-demo] 临时文件清理失败",e)}throw Error(`内置资料写入失败:${b},来源:${a},原因:${c instanceof Error?c.message:String(c)}`,{cause:c})}if(!i.existsSync(b)||i.statSync(b).size<c)throw Error(`内置资料写入失败或文件过小:${a}`);try{i.writeFileSync(`${b}.source.txt`,`公开来源:${a}
173
+ `;i.writeFileSync(a,c,"binary")}(g.join(c,"文档资料","PDF资料-官方攻略摘录.pdf"),"Delta Force Builtin PDF Sample");let d=["# 【内置】干员图片资料","","图片公开来源:PlayerHub / luoy-oss deltaforce_id 公开索引",""];for(let[a,b]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let e=g.join(c,"图片素材","干员图片",a);!function(a,b,c){if(!i.existsSync(b)||!(i.statSync(b).size>=1e3)){var d=function(a){let b=`
174
+ const url = process.argv[1];
175
+ (async () => {
176
+ const response = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' }, signal: AbortSignal.timeout(30000) });
177
+ if (!response.ok) throw new Error(\`HTTP \${response.status} \${response.statusText}: \${url}\`);
178
+ process.stdout.write(Buffer.from(await response.arrayBuffer()));
179
+ })().catch(error => { console.error(error); process.exit(1); });
180
+ `;return(0,j.execFileSync)(process.execPath,["-e",b,a],{encoding:"buffer",maxBuffer:0x1e00000})}(a);if(i.mkdirSync(g.dirname(b),{recursive:!0}),d.length<1e3)throw Error(`内置资料下载失败或文件过小:${a}`);let e=g.join(g.dirname(b),`.${g.basename(b)}.${process.pid}.tmp`);try{i.writeFileSync(e,d),i.renameSync(e,b)}catch(c){try{i.existsSync(e)&&i.rmSync(e,{force:!0})}catch{console.warn("[builtin-demo] 临时文件清理失败",e)}throw Error(`内置资料写入失败:${b},来源:${a},原因:${c instanceof Error?c.message:String(c)}`,{cause:c})}if(!i.existsSync(b)||i.statSync(b).size<c)throw Error(`内置资料写入失败或文件过小:${a}`);try{i.writeFileSync(`${b}.source.txt`,`公开来源:${a}
166
181
  本地文件:${g.basename(b)}
167
182
  文件大小:${i.statSync(b).size} 字节
168
183
  `,"utf-8")}catch{}}}(b,e,1e3),d.push(`- ${a.replace(".png","")}:${b};本地文件:${g.relative(c,e)};大小:${i.statSync(e).size} 字节`)}m(g.join(c,"图片素材","图片文件-干员图片来源.md"),d.join("\n"));let e=["# 【内置】三角洲官方完整地图图纸资料","","来源页面:https://df.qq.com/cp/a20240729directory/","说明:该官方地图工具使用 Leaflet 瓦片图作为地图图纸/底图资源,以下文件不是单瓦片,而是由官方 4x4 瓦片网格拼接得到的完整地图图纸。",""];for(let[a,b]of Object.entries({"零号大坝-官方完整地图图纸.jpg":"map_db","航天基地-官方完整地图图纸.jpg":"map_htjd","巴克什-官方完整地图图纸.jpg":"map_bks","潮汐监狱-官方完整地图图纸.jpg":"map_cxjy","AZ3-官方完整地图图纸.jpg":"map_az3","全面战场-攀升官方完整地图图纸.jpg":"map_qhz"})){let d=g.join(c,"图片素材","干员图片",`地图图纸-${a}`);!function(a,b,c){if(i.existsSync(b)&&i.statSync(b).size>=5e4)return;i.mkdirSync(g.dirname(b),{recursive:!0});let d=`
169
184
  const { createCanvas, loadImage } = require('@napi-rs/canvas');
170
185
  const fs = require('fs');
171
- const cp = require('child_process');
172
186
  const mapName = process.argv[1];
173
187
  const out = process.argv[2];
174
188
  const zoom = 2;
@@ -176,13 +190,16 @@ const tileSize = 256;
176
190
  const gridSize = 4;
177
191
  const canvas = createCanvas(tileSize * gridSize, tileSize * gridSize);
178
192
  const ctx = canvas.getContext('2d');
193
+ async function download(url) {
194
+ const response = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' }, signal: AbortSignal.timeout(30000) });
195
+ if (!response.ok) throw new Error(\`HTTP \${response.status} \${response.statusText}: \${url}\`);
196
+ return Buffer.from(await response.arrayBuffer());
197
+ }
179
198
  (async () => {
180
199
  for (let y = 0; y < gridSize; y++) {
181
200
  for (let x = 0; x < gridSize; x++) {
182
201
  const url = \`https://game.gtimg.cn/images/dfm/cp/a20240729directory/img/\${mapName}/\${zoom}_\${x}_\${y}.jpg\`;
183
- const py = 'import sys,urllib.request; url=sys.argv[1]; req=urllib.request.Request(url,headers={"User-Agent":"Mozilla/5.0"}); sys.stdout.buffer.write(urllib.request.urlopen(req,timeout=30).read())';
184
- const data = cp.execFileSync('python3', ['-c', py, url], { encoding: 'buffer', maxBuffer: 30 * 1024 * 1024 });
185
- const image = await loadImage(data);
202
+ const image = await loadImage(await download(url));
186
203
  ctx.drawImage(image, x * tileSize, y * tileSize, tileSize, tileSize);
187
204
  }
188
205
  }
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/index-c5e0758e6b31deee.js"],"/_app":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/css/9af88fe8ee791d26.css","static/chunks/pages/_app-b1f31c6bbc0bb7b1.js"],"/_error":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/881-a1eb917222b66f09.js","static/chunks/pages/asset-library-82606363f9142bad.js"],"/context/long-term":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/257-e4ebae17a8ee8412.js","static/chunks/pages/context/long-term-f2a550bc848ec1a3.js"],"/context/short-term":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/257-e4ebae17a8ee8412.js","static/chunks/pages/context/short-term-1de28da82d2b6276.js"],"/document-roles":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/pages/document-roles-54a1cc04116e8c18.js"],"/document-specs":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/20-8968ee2d4013a5b8.js","static/chunks/pages/document-specs-723dee6883949a17.js"],"/documents":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/617-68a9e848c380f9c3.js","static/chunks/pages/documents-47516fed70f892dc.js"],"/guide":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/969-5d5ff5a3ed74f52b.js","static/chunks/pages/guide-acf32d66a6df6e5a.js"],"/knowledge":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/350-8c5e13c0577a38c3.js","static/chunks/80-96429163e5c103a8.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/file-detail-7a1a3d4352ecfa0a.js"],"/knowledge/files":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/15-4683808cb8db7005.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/files-f0e05583bf7c57d9.js"],"/knowledge/manage":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/577-5b2691f0c8f17187.js","static/chunks/935-daa0026982d7fa8d.js","static/chunks/pages/knowledge/manage-8acff53019eb6cc1.js"],"/knowledge/search":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/20-8968ee2d4013a5b8.js","static/chunks/350-8c5e13c0577a38c3.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/search-1f3bd8fcb7af3e4d.js"],"/models":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/20-8968ee2d4013a5b8.js","static/css/0e153583d22cc52e.css","static/chunks/pages/models-11533caad3723009.js"],"/overview":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/15-4683808cb8db7005.js","static/chunks/577-5b2691f0c8f17187.js","static/chunks/224-9a7074031493793b.js","static/chunks/pages/overview-f80672c242d9aa32.js"],"/prompt":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/pages/prompt-c9bc7884a44d3767.js"],"/settings":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/css/82b6ddff0ef364fe.css","static/chunks/pages/settings-68f0d05bf95d12da.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/index-c5e0758e6b31deee.js"],"/_app":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/css/9af88fe8ee791d26.css","static/chunks/pages/_app-b1f31c6bbc0bb7b1.js"],"/_error":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/881-a1eb917222b66f09.js","static/chunks/pages/asset-library-82606363f9142bad.js"],"/context/long-term":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/257-e4ebae17a8ee8412.js","static/chunks/pages/context/long-term-f2a550bc848ec1a3.js"],"/context/short-term":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/257-e4ebae17a8ee8412.js","static/chunks/pages/context/short-term-1de28da82d2b6276.js"],"/document-roles":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/pages/document-roles-54a1cc04116e8c18.js"],"/document-specs":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/20-8968ee2d4013a5b8.js","static/chunks/pages/document-specs-723dee6883949a17.js"],"/documents":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/232-813af4932a145fdc.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/951-8ecf8af33ab36369.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/617-68a9e848c380f9c3.js","static/chunks/pages/documents-47516fed70f892dc.js"],"/guide":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/969-5d5ff5a3ed74f52b.js","static/chunks/pages/guide-8b0f474da04fc9f1.js"],"/knowledge":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/350-8c5e13c0577a38c3.js","static/chunks/80-96429163e5c103a8.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/file-detail-7a1a3d4352ecfa0a.js"],"/knowledge/files":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/15-4683808cb8db7005.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/files-f0e05583bf7c57d9.js"],"/knowledge/manage":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/400-1fa1899b7c3f0bb4.js","static/chunks/577-5b2691f0c8f17187.js","static/chunks/935-daa0026982d7fa8d.js","static/chunks/pages/knowledge/manage-8acff53019eb6cc1.js"],"/knowledge/search":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/700-5d29b0475311f590.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/20-8968ee2d4013a5b8.js","static/chunks/350-8c5e13c0577a38c3.js","static/css/d284a7454d6f6b06.css","static/chunks/pages/knowledge/search-1f3bd8fcb7af3e4d.js"],"/models":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/20-8968ee2d4013a5b8.js","static/css/0e153583d22cc52e.css","static/chunks/pages/models-11533caad3723009.js"],"/overview":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/15-4683808cb8db7005.js","static/chunks/577-5b2691f0c8f17187.js","static/chunks/224-9a7074031493793b.js","static/chunks/pages/overview-f80672c242d9aa32.js"],"/prompt":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/pages/prompt-c9bc7884a44d3767.js"],"/settings":["static/chunks/webpack-77d10b4726f13aa5.js","static/chunks/framework-161be364fd69a7ce.js","static/chunks/main-ed4abb3bb200c815.js","static/chunks/260-cec84dc6c353e104.js","static/css/82b6ddff0ef364fe.css","static/chunks/pages/settings-68f0d05bf95d12da.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=6350,a.ids=[6350],a.modules={2323:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},89572:(a,b,c)=>{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>q});var d={};c.r(d),c.d(d,{default:()=>k});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(2323),j=c(96770);async function k(a,b){if(!["GET","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,i.I)();if("POST"===a.method){let{name:d,apiKey:e,baseUrl:f,protocol:g,capabilities:h,oldName:i}=a.body;if(!d)return b.status(400).json({error:"Provider name required"});let j=String(d),k=i?String(i):j;if(k!==j){let a=c.load(),b=a.providers[k]??{};for(let c of(a.providers[j]={...b,...a.providers[j]},delete a.providers[k],["reader","reasoning","action"])){let b=a.models[c];b.list=b.list.map(a=>a.provider===k?{...a,provider:j,name:a.name===k?j:a.name}:a),b.active===k&&(b.active=j)}c.save(a)}return c.ensureProvider(j),void 0!==e&&c.setProviderKey(j,e),void 0!==f&&c.setProviderUrl(j,f),void 0!==g&&c.setProviderProtocol(j,g),void 0!==h&&"object"==typeof h&&c.setProviderCapabilities(j,{imageGeneration:!0===h.imageGeneration,imageUnderstanding:!0===h.imageUnderstanding,fileUnderstanding:!0===h.fileUnderstanding,audio:!0===h.audio,video:!0===h.video}),c.load().models.action.list.some(a=>a.provider===j&&a.name===j)||c.addModel("action",{provider:j,name:j}),b.status(200).json({success:!0})}let d=c.load();b.status(200).json(Object.entries(d.providers).map(([a,b])=>({name:a,apiKey:b.apiKey?"••••"+b.apiKey.slice(-4):void 0,baseUrl:b.baseUrl,protocol:b.protocol,detectedProtocol:(0,j.detectProtocol)(a),hasApiKey:!!b.apiKey,capabilities:b.capabilities??{}})))}catch(a){console.error("[api] config/providers",a),b.status(500).json({error:"Internal server error"})}}var l=c(68970),m=c(50296);let n=(0,h.M)(d,"default"),o=(0,h.M)(d,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers",pathname:"/api/config/providers",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/config/providers"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,l.getTracer)(),e=d.getActiveScopeSpan(),j=p.instrumentationOnRequestError.bind(p),k=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/config/providers",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(m.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:l.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=89572));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=6350,a.ids=[6350],a.modules={2323:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},89572:(a,b,c)=>{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>q});var d={};c.r(d),c.d(d,{default:()=>k});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(2323),j=c(96770);async function k(a,b){if(!["GET","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,i.I)();if("POST"===a.method){let{name:d,apiKey:e,baseUrl:f,protocol:g,capabilities:h,oldName:i}=a.body;if(!d)return b.status(400).json({error:"Provider name required"});let j=String(d),k=i?String(i):j;if(k!==j){let a=c.load(),b=a.providers[k]??{};for(let c of(a.providers[j]={...b,...a.providers[j]},delete a.providers[k],["reader","reasoning","action"])){let b=a.models[c];b.list=b.list.map(a=>a.provider===k?{...a,provider:j,name:a.name===k?j:a.name}:a),b.active===k&&(b.active=j)}c.save(a)}return c.ensureProvider(j),void 0!==e&&c.setProviderKey(j,e),void 0!==f&&c.setProviderUrl(j,f),void 0!==g&&c.setProviderProtocol(j,g),void 0!==h&&"object"==typeof h&&c.setProviderCapabilities(j,{imageGeneration:!0===h.imageGeneration,imageUnderstanding:!0===h.imageUnderstanding,fileUnderstanding:!0===h.fileUnderstanding,audio:!0===h.audio,video:!0===h.video}),c.load().models.action.list.some(a=>a.provider===j&&a.name===j)||c.addModel("action",{provider:j,name:j}),b.status(200).json({success:!0})}let d=c.load();b.status(200).json(Object.entries(d.providers).map(([a,b])=>({name:a,apiKey:b.apiKey?"••••"+b.apiKey.slice(-4):void 0,baseUrl:b.baseUrl,protocol:b.protocol,detectedProtocol:(0,j.detectProtocol)(a),hasApiKey:!!b.apiKey,capabilities:b.capabilities??{}})))}catch(c){let a=c instanceof Error?c.message:String(c);console.error("[api] config/providers",c),b.status(500).json({error:a||"Internal server error"})}}var l=c(68970),m=c(50296);let n=(0,h.M)(d,"default"),o=(0,h.M)(d,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers",pathname:"/api/config/providers",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/config/providers"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,l.getTracer)(),e=d.getActiveScopeSpan(),j=p.instrumentationOnRequestError.bind(p),k=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/config/providers",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(m.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:l.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=89572));module.exports=c})();
@@ -1,2 +1,2 @@
1
1
  "use strict";(()=>{var a={};a.id=5592,a.ids=[5592],a.modules={6708:(a,b,c)=>{c.d(b,{H7:()=>l,Qf:()=>j,oy:()=>k});var d=c(29021),e=c(21820),f=c(33873),g=c(19898);function h(a){return f.join(e.homedir(),".customize-agent","projects",(0,g.computeProjectId)(a),"kb-operations.jsonl")}function i(a){let b=h(a);return d.existsSync(b)?d.readFileSync(b,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}}):[]}function j(a,b){let c=Date.now(),e=i(a),g=e.findIndex(a=>a.id===b.id),j=g>=0?e[g]:void 0,k={id:b.id,type:b.type,title:b.title,stage:b.stage??j?.stage??"uploading",status:b.status??j?.status??"processing",message:b.message??j?.message??"",percent:b.percent??j?.percent??0,fileName:b.fileName??j?.fileName,filePath:b.filePath??j?.filePath,chunkCount:b.chunkCount??j?.chunkCount,textLength:b.textLength??j?.textLength,extractionMode:b.extractionMode??j?.extractionMode,error:b.error??j?.error,createdAt:j?.createdAt??c,updatedAt:c};g>=0?e[g]=k:e.push(k);let l=h(a);return d.mkdirSync(f.dirname(l),{recursive:!0}),d.writeFileSync(l,`${e.slice(-200).map(a=>JSON.stringify(a)).join("\n")}
2
- `,"utf8"),k}function k(a,b=50){return i(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function l(a){let b=i(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),b.length}},15751:a=>{a.exports=require("xlsx")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},24501:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29021),j=c(33873),k=c(23328),l=c(6708);async function m(a){let b=await (0,k.Qh)().getProject(a);return await b.incrementalIndex(),b.listFiles()}async function n(a,b){if(!["GET","DELETE","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c="string"==typeof a.body?.projectRoot?a.body.projectRoot:void 0,d=a.query.projectRoot||c||(0,k.aY)();if(!d)return b.status(200).json({files:[],total:0});if("GET"===a.method&&"1"!==a.query.reindex){let c=a.query.category,e=parseInt(a.query.page||"1",10),f=parseInt(a.query.limit||"50",10),g=(0,k.T4)(d),h=await m(g);0===h.length&&(h=function(a){let b=j.join(a,"knowledgeBase");if(!i.existsSync(b))return[];let c=[],d=a=>{for(let e of i.readdirSync(a,{withFileTypes:!0})){let f=j.join(a,e.name);if(e.isDirectory()){d(f);continue}if(e.name.endsWith(".source.txt"))continue;let g=i.statSync(f),h=j.relative(b,f).split(j.sep).join("/");c.push({relativePath:h,category:h.includes("表格数据/")?"spreadsheet":h.includes("图片素材/")?"image":h.includes("图纸文件/")?"cad":h.includes("文档资料/")?"document":"other",format:j.extname(h).slice(1).toLowerCase()||"text",contentHash:"",fileSize:g.size,mtime:g.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"pending"})}};return d(b),c.sort((a,b)=>a.relativePath.localeCompare(b.relativePath,"zh-CN"))}(g)),c&&(h=h.filter(a=>a.category===c));let l=h.length,n=h.slice((e-1)*f,e*f).map(a=>({...a,builtIn:!0}));b.status(200).json({files:n,total:l,page:e,limit:f,initializing:!1});return}let e=await (0,k.Qh)().getProject(d);if(("POST"===a.method||"1"===a.query.reindex)&&await e.incrementalIndex(),"DELETE"===a.method){let{relativePath:c,relativePaths:f,all:g}=a.body,h=g?e.listFiles().map(a=>a.relativePath):Array.isArray(f)?f.map(String):c?[String(c)]:[];if(0===h.length)return b.status(400).json({error:"relativePath or relativePaths is required"});let i=`delete-${Date.now()}-${Math.random().toString(36).slice(2)}`,j=g?`删除全部 ${h.length} 个文件`:1===h.length?`删除 ${h[0]}`:`批量删除 ${h.length} 个文件`;(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"uploading",status:"processing",percent:10,message:"正在删除文件和索引",filePath:h[0],fileName:h[0]?.split("/").pop()});let k=0;for(let a of h)await e.removeFile(a),k++,(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"uploading",status:"processing",percent:Math.min(95,Math.round(k/h.length*90)),message:`已删除 ${k}/${h.length}`,filePath:a,fileName:a.split("/").pop()});return(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"done",status:"success",percent:100,message:`已删除 ${k} 个文件和索引`,filePath:h[0],fileName:h[0]?.split("/").pop()}),b.status(200).json({success:!0,deleted:k})}let f=a.query.category,g=parseInt(a.query.page||"1",10),h=parseInt(a.query.limit||"50",10),n=e.listFiles();f&&(n=n.filter(a=>a.category===f));let o=e.getVectorStatus(),p=n.length,q=n.slice((g-1)*h,g*h).map(a=>({...a,builtIn:!0}));b.status(200).json({files:q,total:p,page:g,limit:h,vectorStatus:o})}catch(a){console.error("[api] kb/files/index",a),b.status(500).json({error:"Internal server error"})}}var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/files",pathname:"/api/kb/files",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/kb/files"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/kb/files",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,3328],()=>b(b.s=24501));module.exports=c})();
2
+ `,"utf8"),k}function k(a,b=50){return i(a).sort((a,b)=>b.updatedAt-a.updatedAt).slice(0,b)}function l(a){let b=i(a),c=h(a);return d.existsSync(c)&&d.unlinkSync(c),b.length}},15751:a=>{a.exports=require("xlsx")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},24501:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29021),j=c(33873),k=c(23328),l=c(6708);async function m(a){let b=await (0,k.Qh)().getProject(a);return await b.incrementalIndex(),b.listFiles()}async function n(a,b){if(!["GET","DELETE","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c="string"==typeof a.body?.projectRoot?a.body.projectRoot:void 0,d=a.query.projectRoot||c||(0,k.aY)();if(!d)return b.status(200).json({files:[],total:0});if("GET"===a.method&&"1"!==a.query.reindex){let c=a.query.category,e=parseInt(a.query.page||"1",10),f=parseInt(a.query.limit||"50",10),g=(0,k.T4)(d),h=await m(g);0===h.length&&(h=function(a){let b=j.join(a,"knowledgeBase");if(!i.existsSync(b))return[];let c=[],d=a=>{for(let e of i.readdirSync(a,{withFileTypes:!0})){let f=j.join(a,e.name);if(e.isDirectory()){d(f);continue}if(e.name.endsWith(".source.txt"))continue;let g=i.statSync(f),h=j.relative(b,f).split(j.sep).join("/");c.push({relativePath:h,category:h.includes("表格数据/")?"spreadsheet":h.includes("图片素材/")?"image":h.includes("图纸文件/")?"cad":h.includes("文档资料/")?"document":"other",format:j.extname(h).slice(1).toLowerCase()||"text",contentHash:"",fileSize:g.size,mtime:g.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"pending"})}};return d(b),c.sort((a,b)=>a.relativePath.localeCompare(b.relativePath,"zh-CN"))}(g)),c&&(h=h.filter(a=>a.category===c));let l=h.length,n=h.slice((e-1)*f,e*f).map(a=>({...a,builtIn:!0}));b.status(200).json({files:n,total:l,page:e,limit:f,initializing:!1});return}let e=await (0,k.Qh)().getProject(d);if(("POST"===a.method||"1"===a.query.reindex)&&await e.incrementalIndex(),"DELETE"===a.method){let{relativePath:c,relativePaths:f,all:g}=a.body,h=g?e.listFiles().map(a=>a.relativePath):Array.isArray(f)?f.map(String):c?[String(c)]:[];if(0===h.length)return b.status(400).json({error:"relativePath or relativePaths is required"});let i=`delete-${Date.now()}-${Math.random().toString(36).slice(2)}`,j=g?`删除全部 ${h.length} 个文件`:1===h.length?`删除 ${h[0]}`:`批量删除 ${h.length} 个文件`;(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"uploading",status:"processing",percent:10,message:"正在删除文件和索引",filePath:h[0],fileName:h[0]?.split("/").pop()});let k=0;for(let a of h)await e.removeFile(a),k++,(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"uploading",status:"processing",percent:Math.min(95,Math.round(k/h.length*90)),message:`已删除 ${k}/${h.length}`,filePath:a,fileName:a.split("/").pop()});return(0,l.Qf)(d,{id:i,type:"delete",title:j,stage:"done",status:"success",percent:100,message:`已删除 ${k} 个文件和索引`,filePath:h[0],fileName:h[0]?.split("/").pop()}),b.status(200).json({success:!0,deleted:k})}let f=a.query.category,g=parseInt(a.query.page||"1",10),h=parseInt(a.query.limit||"50",10),n=e.listFiles();f&&(n=n.filter(a=>a.category===f));let o=e.getVectorStatus(),p=n.length,q=n.slice((g-1)*h,g*h).map(a=>({...a,builtIn:!0}));b.status(200).json({files:q,total:p,page:g,limit:h,vectorStatus:o})}catch(c){let a=c instanceof Error?c.message:String(c);console.error("[api] kb/files/index",c),b.status(500).json({error:a||"Internal server error"})}}var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/files",pathname:"/api/kb/files",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/kb/files"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/kb/files",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,3328],()=>b(b.s=24501));module.exports=c})();
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="preload" href="/_next/static/css/9af88fe8ee791d26.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9af88fe8ee791d26.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-ed4abb3bb200c815.js" defer=""></script><script src="/_next/static/chunks/pages/_app-b1f31c6bbc0bb7b1.js" defer=""></script><script src="/_next/static/chunks/260-cec84dc6c353e104.js" defer=""></script><script src="/_next/static/chunks/167-d4f384b289ecb70c.js" defer=""></script><script src="/_next/static/chunks/382-6ab5f41cd91edad0.js" defer=""></script><script src="/_next/static/chunks/292-f0a2c92861c304e6.js" defer=""></script><script src="/_next/static/chunks/858-5e6982e2b239d4b7.js" defer=""></script><script src="/_next/static/chunks/969-5d5ff5a3ed74f52b.js" defer=""></script><script src="/_next/static/chunks/pages/guide-acf32d66a6df6e5a.js" defer=""></script><script src="/_next/static/customize-agent-dashboard/_buildManifest.js" defer=""></script><script src="/_next/static/customize-agent-dashboard/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div><div class="sidebarLogoSub">管理控制台</div></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span>总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span>知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>生成编辑</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span>角色配置</span></div></a><a href="/document-specs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/guide"><div class="sidebarItem sidebarItemActive"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span>学习说明</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span>模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span>提示词管理</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span>设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div class="space-y-6 animateFadeIn"><div class="ant-card ant-card-bordered cardGlass css-1pi45l5 css-var-_R_16_"><div class="ant-card-body" style="padding:24px"><h2 class="ant-typography mb-2 css-1pi45l5 css-var-_R_16_">学习说明:如何跑通文档生成全流程</h2><div class="ant-typography pageDesc mb-0 css-1pi45l5 css-var-_R_16_">本页面用于指导用户从模型配置、知识库、提示词、角色配置、模板创建、生成、校验到导出的完整操作流程。建议第一次使用时按顺序完成每一步。</div></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="setting" class="anticon anticon-setting"><svg viewBox="64 64 896 896" focusable="false" data-icon="setting" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z"></path></svg></span>准备阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">配置模型</span></div><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">上传知识库资料</span></div><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">创建提示词</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="form" class="anticon anticon-form"><svg viewBox="64 64 896 896" focusable="false" data-icon="form" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z"></path><path d="M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 00-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z"></path></svg></span>编排阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建文件角色</span></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建提示词角色</span></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建项目角色配置并排序</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="rocket" class="anticon anticon-rocket"><svg viewBox="64 64 896 896" focusable="false" data-icon="rocket" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 00-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0043.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0043.1-30.5 97.52 97.52 0 0021.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0162.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 01-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1096 0 48 48 0 10-96 0z"></path></svg></span>生成阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">创建模板</span></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">后台生成轮询</span></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">动态执行状态</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="safety-certificate" class="anticon anticon-safety-certificate"><svg viewBox="64 64 896 896" focusable="false" data-icon="safety-certificate" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0026 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"></path></svg></span>交付阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">审查事实和来源</span></div><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">检查导出门禁</span></div><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">导出正式文件</span></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">全流程步骤</div></div></div><div class="ant-card-body"><div class="ant-steps ant-steps-vertical ant-steps-title-horizontal ant-steps-filled css-1pi45l5 css-var-_R_16_" style="--ant-cmp-steps-items-offset:0"><div class="ant-steps-item ant-steps-item-process ant-steps-item-active"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">1</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第一步:配置模型</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">让系统具备 LLM JSON 事实抽取、章节生成和校验能力。(入口:左侧菜单 → 模型配置)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">2</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第二步:上传知识库资料</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">把项目资料放入系统,让后续文件角色可以绑定。(入口:左侧菜单 → 知识库 → 文件管理 / 管理)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">3</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第三步:创建提示词</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">定义每个执行阶段的模型行为。(入口:左侧菜单 → 提示词管理)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">4</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第四步:创建文件角色</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">告诉系统每个文件在生成流程中的用途。(入口:左侧菜单 → 角色配置 → 新建文件角色)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">5</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第五步:创建提示词角色</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">告诉系统每条提示词在哪个执行阶段使用。(入口:左侧菜单 → 角色配置 → 新建提示词角色)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">6</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第六步:创建项目角色配置并排序</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">把文件角色和提示词角色组合成一个可复用的项目生成方案。(入口:左侧菜单 → 角色配置 → 新建项目配置)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">7</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第七步:创建模板并绑定项目配置</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">定义要生成哪种文档,以及使用哪套项目角色配置。(入口:左侧菜单 → 生成编辑 → 新建模板)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">8</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第八步:执行生成并查看状态</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">让用户明确知道生成流程进行到哪一步。(入口:左侧菜单 → 生成编辑 → 选择模板 → 点击生成)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">9</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第九步:审查结果并导出</div></div><div class="ant-steps-item-content">确保文档可追溯、可校验、可交付。(入口:生成编辑 → 编辑器下方 Tabs → 导出按钮)</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">详细步骤说明:照着做即可跑通</div></div></div><div class="ant-card-body"><ol class="ant-steps ant-steps-vertical ant-steps-title-horizontal ant-steps-outlined ant-steps-dot ant-timeline css-1pi45l5 css-var-_R_16_ css-1pi45l5 css-var-_R_16_" style="--ant-cmp-steps-items-offset:0"><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第一步:配置模型</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>让系统具备 LLM JSON 事实抽取、章节生成和校验能力。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 模型配置</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。</li><li>填写 Base URL、API Key、供应商名称并保存。</li><li>添加模型名称,建议至少准备一个用于生成和推理的模型。</li><li>把模型设置为当前启用模型。</li><li>执行健康检查,确认模型可调用。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">模型健康检查通过</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少有一个启用模型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">API Key 和 Base URL 正确</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第二步:上传知识库资料</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>把项目资料放入系统,让后续文件角色可以绑定。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 知识库 → 文件管理 / 管理</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>上传招标文件、工程概况、合同条件、技术要求等项目事实资料。</li><li>上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。</li><li>上传图纸目录、图纸说明、设计说明等图纸类资料。</li><li>上传规范、规程、企业标准、评分办法、编制要求等规则类资料。</li><li>等待索引完成,并在知识库文件列表中确认文件可见。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件上传成功</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">索引完成</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件能在文件角色绑定下拉框中看到</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第三步:创建提示词</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>定义每个执行阶段的模型行为。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 提示词管理</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。</li><li>创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。</li><li>创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。</li><li>创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。</li><li>保存后确认提示词能在提示词角色绑定下拉框中看到。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">事实抽取提示词已创建</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">章节生成提示词已创建</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">校验或格式化提示词已创建</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第四步:创建文件角色</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>告诉系统每个文件在生成流程中的用途。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建文件角色</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。</li><li>选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。</li><li>绑定对应知识库文件。</li><li>保存角色。</li><li>按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件角色有名称</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已选择处理类型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定知识库文件</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第五步:创建提示词角色</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>告诉系统每条提示词在哪个执行阶段使用。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建提示词角色</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。</li><li>选择执行类型:事实抽取、章节生成、校验、格式化或参考。</li><li>绑定对应提示词。</li><li>保存角色。</li><li>一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">提示词角色有名称</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已选择执行类型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定提示词</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第六步:创建项目角色配置并排序</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>把文件角色和提示词角色组合成一个可复用的项目生成方案。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建项目配置</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写配置名称,例如“某项目施工组织设计配置”。</li><li>添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。</li><li>添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。</li><li>保存项目角色配置。</li><li>后续模板只绑定项目角色配置,不再重复绑定文件和提示词。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少包含一个文件角色</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少包含一个提示词角色</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">顺序符合业务流程</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第七步:创建模板并绑定项目配置</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>定义要生成哪种文档,以及使用哪套项目角色配置。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 生成编辑 → 新建模板</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。</li><li>填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。</li><li>填写分类、输出标题和模板说明。</li><li>选择第六步创建的项目角色配置。</li><li>保存模板。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">模板名称清晰</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">输出标题正确</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定项目角色配置</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第八步:执行生成并查看状态</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>让用户明确知道生成流程进行到哪一步。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 生成编辑 → 选择模板 → 点击生成</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>点击生成按钮后,页面会出现“执行状态”卡片。</li><li>执行状态会根据当前模板、文档规范包、文件角色、提示词角色和章节自动生成,不是固定工程流程。</li><li>当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色或门禁规则。</li><li>生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。</li><li>生成完成后,系统会用后端真实 executionStages 回填最终状态。</li><li>如果导出门禁未通过,生成完成节点会提示需要检查校验结果。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">执行状态 Card 出现</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">当前节点有高亮</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">生成完成后有执行阶段结果</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-active ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第九步:审查结果并导出</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>确保文档可追溯、可校验、可交付。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>生成编辑 → 编辑器下方 Tabs → 导出按钮</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。</li><li>查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。</li><li>查看“缺失项”,补齐缺失资料或调整角色配置。</li><li>查看“严格校验”,处理 error 级问题。</li><li>查看“导出门禁”,全部通过后再导出 PDF。</li><li>可以先导出 HTML 预览排版,再导出 PDF。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">无阻断错误</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">关键事实有来源</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">章节有证据</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">导出门禁通过</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>PDF 导出会强制门禁。门禁未通过时,系统会阻止导出,避免问题文档流出。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li></ol></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">角色设计说明</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">角色用于把用户自定义名称和系统可执行能力连接起来。用户可以完全自定义角色名称,但必须选择执行类型或处理类型,让系统知道如何使用它。</div><div class="space-y-3"><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">file</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>文件角色</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">文件角色绑定知识库文件,并选择处理类型,例如规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。</div></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">prompt</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示词角色</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">提示词角色绑定提示词,并选择执行类型,例如事实抽取、章节生成、校验、格式化或参考。</div></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">config</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>项目角色配置</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">项目角色配置把多个文件角色和提示词角色组合起来,并定义执行顺序。模板只需要绑定项目角色配置。</div></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生成引擎说明</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">生成引擎会按角色配置组织资料和提示词,执行事实抽取、表格解析、章节生成、严格校验和正式排版。</div><div class="space-y-2"><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">事实抽取</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">章节生成</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">校验</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">格式化</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">导出门禁</span></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态 schema、证据和执行状态说明</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态事实 schema</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">结构化资源证据</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态执行状态</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">文件角色处理类型大白话说明</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">规则文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">项目事实文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">表格数据</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">图纸文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">规范文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">参考资料</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">推荐资料清单</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">必备资料</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>项目事实文件</li><li>招标或编制规则</li><li>章节生成提示词</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">强烈建议</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>表格数据</li><li>图纸说明</li><li>规范或企业标准</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">导出前确认</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>无 error 校验</li><li>事实有来源</li><li>导出门禁通过</li></ul></div></div></div></div></div></div><div class="ant-collapse ant-collapse-icon-placement-start css-1pi45l5 css-var-_R_16_"><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">准备资料时要注意什么?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">角色应该怎么命名?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">模板应该怎么创建?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">生成过程中怎么看进度?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">怎样判断能否正式导出?</span></div></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/guide","query":{},"buildId":"customize-agent-dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="preload" href="/_next/static/css/9af88fe8ee791d26.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9af88fe8ee791d26.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-ed4abb3bb200c815.js" defer=""></script><script src="/_next/static/chunks/pages/_app-b1f31c6bbc0bb7b1.js" defer=""></script><script src="/_next/static/chunks/260-cec84dc6c353e104.js" defer=""></script><script src="/_next/static/chunks/167-d4f384b289ecb70c.js" defer=""></script><script src="/_next/static/chunks/382-6ab5f41cd91edad0.js" defer=""></script><script src="/_next/static/chunks/292-f0a2c92861c304e6.js" defer=""></script><script src="/_next/static/chunks/858-5e6982e2b239d4b7.js" defer=""></script><script src="/_next/static/chunks/969-5d5ff5a3ed74f52b.js" defer=""></script><script src="/_next/static/chunks/pages/guide-8b0f474da04fc9f1.js" defer=""></script><script src="/_next/static/customize-agent-dashboard/_buildManifest.js" defer=""></script><script src="/_next/static/customize-agent-dashboard/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div><div class="sidebarLogoSub">管理控制台</div></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span>总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span>知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>生成编辑</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span>角色配置</span></div></a><a href="/document-specs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/guide"><div class="sidebarItem sidebarItemActive"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span>学习说明</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span>模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span>提示词管理</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span>设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div class="space-y-6 animateFadeIn"><div class="ant-card ant-card-bordered cardGlass css-1pi45l5 css-var-_R_16_"><div class="ant-card-body" style="padding:24px"><h2 class="ant-typography mb-2 css-1pi45l5 css-var-_R_16_">学习说明:如何跑通文档生成全流程</h2><div class="ant-typography pageDesc mb-0 css-1pi45l5 css-var-_R_16_">本页面用于指导用户从模型配置、知识库、提示词、角色配置、模板创建、生成、校验到导出的完整操作流程。建议第一次使用时按顺序完成每一步。</div></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="setting" class="anticon anticon-setting"><svg viewBox="64 64 896 896" focusable="false" data-icon="setting" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z"></path></svg></span>准备阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">配置模型</span></div><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">上传知识库资料</span></div><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">创建提示词</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="form" class="anticon anticon-form"><svg viewBox="64 64 896 896" focusable="false" data-icon="form" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z"></path><path d="M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 00-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z"></path></svg></span>编排阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建文件角色</span></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建提示词角色</span></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">创建项目角色配置并排序</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="rocket" class="anticon anticon-rocket"><svg viewBox="64 64 896 896" focusable="false" data-icon="rocket" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 00-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0043.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0043.1-30.5 97.52 97.52 0 0021.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0162.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 01-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1096 0 48 48 0 10-96 0z"></path></svg></span>生成阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">创建模板</span></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">后台生成轮询</span></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">动态执行状态</span></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered h-full css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title"><span class="flex items-center gap-2"><span role="img" aria-label="safety-certificate" class="anticon anticon-safety-certificate"><svg viewBox="64 64 896 896" focusable="false" data-icon="safety-certificate" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0026 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"></path></svg></span>交付阶段</span></div></div></div><div class="ant-card-body"><div class="space-y-2"><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">审查事实和来源</span></div><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">检查导出门禁</span></div><div><span class="ant-tag ant-tag-filled ant-tag-green css-1pi45l5 css-var-_R_16_">导出正式文件</span></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">全流程步骤</div></div></div><div class="ant-card-body"><div class="ant-steps ant-steps-vertical ant-steps-title-horizontal ant-steps-filled css-1pi45l5 css-var-_R_16_" style="--ant-cmp-steps-items-offset:0"><div class="ant-steps-item ant-steps-item-process ant-steps-item-active"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">1</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第一步:配置模型</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">让系统具备 LLM JSON 事实抽取、章节生成和校验能力。(入口:左侧菜单 → 模型配置)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">2</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第二步:上传知识库资料</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">把项目资料放入系统,让后续文件角色可以绑定。(入口:左侧菜单 → 知识库 → 文件管理 / 管理)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">3</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第三步:创建提示词</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">定义每个执行阶段的模型行为。(入口:左侧菜单 → 提示词管理)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">4</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第四步:创建文件角色</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">告诉系统每个文件在生成流程中的用途。(入口:左侧菜单 → 角色配置 → 新建文件角色)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">5</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第五步:创建提示词角色</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">告诉系统每条提示词在哪个执行阶段使用。(入口:左侧菜单 → 角色配置 → 新建提示词角色)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">6</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第六步:创建项目角色配置并排序</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">把文件角色和提示词角色组合成一个可复用的项目生成方案。(入口:左侧菜单 → 角色配置 → 新建项目配置)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">7</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第七步:创建模板并绑定项目配置</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">定义要生成哪种文档,以及使用哪套项目角色配置。(入口:左侧菜单 → 生成编辑 → 新建模板)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">8</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第八步:执行生成并查看状态</div><div class="ant-steps-item-rail ant-steps-item-rail-wait"></div></div><div class="ant-steps-item-content">让用户明确知道生成流程进行到哪一步。(入口:左侧菜单 → 生成编辑 → 选择模板 → 点击生成)</div></div></div></div><div class="ant-steps-item ant-steps-item-wait"><div class="ant-steps-item-wrapper"><div class="ant-steps-item-icon ant-wave-target"><span class="ant-steps-item-icon-number">9</span></div><div class="ant-steps-item-section"><div class="ant-steps-item-header"><div class="ant-steps-item-title">第九步:审查结果并导出</div></div><div class="ant-steps-item-content">确保文档可追溯、可校验、可交付,同时能区分阻断问题和可复核 warning。(入口:生成编辑 → 编辑器下方 Tabs → 导出按钮 / 草稿历史)</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">详细步骤说明:照着做即可跑通</div></div></div><div class="ant-card-body"><ol class="ant-steps ant-steps-vertical ant-steps-title-horizontal ant-steps-outlined ant-steps-dot ant-timeline css-1pi45l5 css-var-_R_16_ css-1pi45l5 css-var-_R_16_" style="--ant-cmp-steps-items-offset:0"><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第一步:配置模型</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>让系统具备 LLM JSON 事实抽取、章节生成和校验能力。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 模型配置</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。</li><li>填写 Base URL、API Key、供应商名称并保存。</li><li>添加模型名称,建议至少准备一个用于生成和推理的模型。</li><li>把模型设置为当前启用模型。</li><li>执行健康检查,确认模型可调用。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">模型健康检查通过</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少有一个启用模型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">API Key 和 Base URL 正确</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第二步:上传知识库资料</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>把项目资料放入系统,让后续文件角色可以绑定。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 知识库 → 文件管理 / 管理</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>上传招标文件、工程概况、合同条件、技术要求等项目事实资料。</li><li>上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。</li><li>上传图纸目录、图纸说明、设计说明等图纸类资料。</li><li>上传规范、规程、企业标准、评分办法、编制要求等规则类资料。</li><li>等待索引完成,并在知识库文件列表中确认文件可见。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件上传成功</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">索引完成</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件能在文件角色绑定下拉框中看到</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第三步:创建提示词</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>定义每个执行阶段的模型行为。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 提示词管理</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。</li><li>创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。</li><li>创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。</li><li>创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。</li><li>保存后确认提示词能在提示词角色绑定下拉框中看到。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">事实抽取提示词已创建</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">章节生成提示词已创建</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">校验或格式化提示词已创建</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第四步:创建文件角色</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>告诉系统每个文件在生成流程中的用途。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建文件角色</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。</li><li>选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。</li><li>绑定对应知识库文件。</li><li>保存角色。</li><li>按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">文件角色有名称</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已选择处理类型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定知识库文件</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第五步:创建提示词角色</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>告诉系统每条提示词在哪个执行阶段使用。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建提示词角色</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。</li><li>选择执行类型:事实抽取、章节生成、校验、格式化或参考。</li><li>绑定对应提示词。</li><li>保存角色。</li><li>一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">提示词角色有名称</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已选择执行类型</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定提示词</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第六步:创建项目角色配置并排序</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>把文件角色和提示词角色组合成一个可复用的项目生成方案。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 角色配置 → 新建项目配置</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写配置名称,例如“某项目施工组织设计配置”。</li><li>添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。</li><li>添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。</li><li>保存项目角色配置。</li><li>后续模板只绑定项目角色配置,不再重复绑定文件和提示词。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少包含一个文件角色</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">至少包含一个提示词角色</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">顺序符合业务流程</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第七步:创建模板并绑定项目配置</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>定义要生成哪种文档,以及使用哪套项目角色配置。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 生成编辑 → 新建模板</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。</li><li>填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。</li><li>填写分类、输出标题和模板说明。</li><li>选择第六步创建的项目角色配置。</li><li>保存模板。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">模板名称清晰</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">输出标题正确</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">已绑定项目角色配置</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"><div class="ant-steps-item-rail ant-steps-item-rail-finish ant-timeline-item-rail"></div></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第八步:执行生成并查看状态</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>让用户明确知道生成流程进行到哪一步。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>左侧菜单 → 生成编辑 → 选择模板 → 点击生成</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>点击生成按钮后,页面会出现“执行状态”卡片。</li><li>执行状态会根据当前模板、文档规范包、文件角色、提示词角色和章节自动生成,不是固定工程流程。</li><li>当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色或门禁规则。</li><li>生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。</li><li>生成完成后,系统会用后端真实 executionStages 回填最终状态。</li><li>如果导出门禁未通过,生成完成节点会提示需要检查校验结果。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">执行状态 Card 出现</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">当前节点有高亮</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">生成完成后有执行阶段结果</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li><li class="ant-steps-item ant-steps-item-finish ant-steps-item-custom ant-steps-item-active ant-steps-item-empty-header ant-timeline-item-placement-start ant-timeline-item"><div class="ant-steps-item-wrapper ant-timeline-item-wrapper"><div class="ant-steps-item-icon ant-wave-target ant-timeline-item-icon"><span role="img" aria-label="check-circle" class="anticon anticon-check-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="check-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"></path><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path></svg></span></div><div class="ant-steps-item-section ant-timeline-item-section"><div class="ant-steps-item-header ant-timeline-item-header"></div><div class="ant-steps-item-content ant-timeline-item-content"><div class="space-y-3"><h4 class="ant-typography mb-0 css-1pi45l5 css-var-_R_16_">第九步:审查结果并导出</h4><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>目标:</strong></span>确保文档可追溯、可校验、可交付,同时能区分阻断问题和可复核 warning。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>入口:</strong></span>生成编辑 → 编辑器下方 Tabs → 导出按钮 / 草稿历史</div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>操作步骤:</strong></span><ol class="list-decimal pl-6 mt-2 space-y-1"><li>查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。</li><li>查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。</li><li>查看“缺失项”,补齐缺失资料或调整角色配置。</li><li>查看“校验”,优先处理 error;warning 表示可导出但建议复核。</li><li>查看“导出门禁”,真实 blockingIssues 会阻断 PDF/DOCX 导出,普通 warning 不阻断。</li><li>在草稿历史中确认生成状态、warning 原因、整体生成耗时,并可删除不需要的记录。</li><li>可以先导出 HTML 预览排版,再导出 DOCX/PDF。</li></ol></div><div><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>完成检查:</strong></span><div class="mt-2 flex flex-wrap gap-2"><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">无真实阻断问题</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">关键事实有来源</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">章节有证据</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">warning 原因已复核</span><span class="ant-tag ant-tag-filled ant-tag-success css-1pi45l5 css-var-_R_16_">导出文件可打开</span></div></div><div class="ant-typography css-1pi45l5 css-var-_R_16_"><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示:</strong></span>导出不是简单放行:真实阻断仍会拦截;生成完成但存在可复核问题时显示 warning,用户可以继续导出并按原因优化资料。</div><div class="ant-divider css-1pi45l5 css-var-_R_16_ ant-divider-horizontal ant-divider-rail" role="separator"></div></div></div></div></div></li></ol></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">角色设计说明</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">角色用于把用户自定义名称和系统可执行能力连接起来。用户可以完全自定义角色名称,但必须选择执行类型或处理类型,让系统知道如何使用它。</div><div class="space-y-3"><div><span class="ant-tag ant-tag-filled ant-tag-blue css-1pi45l5 css-var-_R_16_">file</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>文件角色</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">文件角色绑定知识库文件,并选择处理类型,例如规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。</div></div><div><span class="ant-tag ant-tag-filled ant-tag-purple css-1pi45l5 css-var-_R_16_">prompt</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>提示词角色</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">提示词角色绑定提示词,并选择执行类型,例如事实抽取、章节生成、校验、格式化或参考。</div></div><div><span class="ant-tag ant-tag-filled ant-tag-geekblue css-1pi45l5 css-var-_R_16_">config</span><span class="ant-typography css-1pi45l5 css-var-_R_16_"><strong>项目角色配置</strong></span><div class="ant-typography css-1pi45l5 css-var-_R_16_">项目角色配置把多个文件角色和提示词角色组合起来,并定义执行顺序。模板只需要绑定项目角色配置。</div></div></div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生成引擎说明</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">生成引擎会按角色配置组织资料和提示词,执行事实抽取、表格解析、章节生成、严格校验和正式排版。</div><div class="space-y-2"><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">事实抽取</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">章节生成</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">校验</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">格式化</span><span class="ant-tag ant-tag-filled css-1pi45l5 css-var-_R_16_">导出门禁</span></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态 schema、证据和执行状态说明</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态事实 schema</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">结构化资源证据</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">动态执行状态</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生成记录、warning 和导出门禁怎么理解</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">草稿历史记录</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">每次后台生成都会写入全局项目目录 <span class="ant-typography css-1pi45l5 css-var-_R_16_"><code>~/.customize-agent/projects/<!-- -->{projectId}<!-- -->/generatedDocuments</code></span>。记录会保存标题、模板、状态、创建时间、完成时间、生成耗时、正文、结构化结果和资源引用。</div><ul class="list-disc pl-5 space-y-1"><li>completed:生成完成且无需要关注的问题。</li><li>warning:生成完成,但存在可复核问题。</li><li>failed:生成失败,需要查看错误原因。</li><li>generating:后台任务仍在执行,可轮询恢复。</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">warning 不是失败</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">warning 用于提醒用户“文档已经生成,但建议复核”。例如必需事实没有在最佳来源角色中抽到、部分来源需要人工确认、格式或内容有优化建议。warning 会显示在草稿历史和校验详情中,并保留导出能力。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_">如果是明确阻断问题,例如正文包含临时图片生成 URL、出现“资料未提供”占位、真实 blockingIssues 未解决,则导出门禁仍会阻断 DOCX/PDF。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-lg-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">导出门禁规则</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">门禁分为“真实阻断”和“复核建议”。系统不会因为普通 warning 简单禁止导出,但会在出现阻断级问题时保护交付质量。</div><ul class="list-disc pl-5 space-y-1"><li>Markdown/HTML 更适合快速预览和人工调整。</li><li>DOCX/PDF 会启用真实门禁检查。</li><li>草稿历史可保留多个版本,便于对比和再次导出。</li></ul></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生成资源和知识库的关系</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生成资源默认不入库</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">模型生成的图片、封面或后处理资源会保存在 generatedDocuments/assets 下,并登记到生成资源管理页。它们默认不进入知识库索引,避免临时产物污染原始资料。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_">如果某个生成资源已经被人工确认可以复用,再到资源管理页手动加入知识库索引。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">资源预览和坏图处理</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">资源预览会从全局 generatedDocuments 目录解析文件,不依赖当前页面临时路径。图片下载会识别“image is generating”等占位响应,并校验 PNG/JPEG/WebP 字节,避免把占位文本当成图片保存。</div><div class="ant-typography css-1pi45l5 css-var-_R_16_">如果预览失败,优先查看资源管理页中的文件路径、资源状态和原始生成记录。</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">文件角色处理类型大白话说明</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">规则文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">项目事实文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">表格数据</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">图纸文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">规范文件</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。</div></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">参考资料</div></div></div><div class="ant-card-body"><div class="ant-typography css-1pi45l5 css-var-_R_16_">只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。</div></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">推荐资料清单</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">必备资料</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>项目事实文件</li><li>招标或编制规则</li><li>章节生成提示词</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">强烈建议</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>表格数据</li><li>图纸说明</li><li>规范或企业标准</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-8 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">导出前确认</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5"><li>无 error 校验</li><li>事实有来源</li><li>导出门禁通过</li></ul></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">生产级生成前检查清单</div></div></div><div class="ant-card-body"><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-8px;row-gap:16px"><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">资料完整性</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5 space-y-1"><li>事实源、规则源、表格源、图片/图纸源分开绑定。</li><li>关键事实在知识库检索中可以搜索到。</li><li>表格有清晰表头,图片和图纸有说明文字。</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">角色配置</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5 space-y-1"><li>文件角色处理类型选对。</li><li>提示词角色执行类型选对。</li><li>项目角色配置排序符合生成流程。</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">规范包</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5 space-y-1"><li>required fact 不要过度配置。</li><li>sourceRoleIds 只绑定真正应该提供该事实的角色。</li><li>gateRules 区分 error 和 warning。</li></ul></div></div></div><div style="padding-inline:8px" class="ant-col ant-col-xs-24 ant-col-md-12 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">交付检查</div></div></div><div class="ant-card-body"><ul class="list-disc pl-5 space-y-1"><li>草稿历史记录状态合理。</li><li>warning 原因已经阅读。</li><li>导出文件打开正常,图片和表格可读。</li></ul></div></div></div></div></div></div><div class="ant-card ant-card-bordered css-1pi45l5 css-var-_R_16_"><div class="ant-card-head"><div class="ant-card-head-wrapper"><div class="ant-card-head-title">常见问题和处理建议</div></div></div><div class="ant-card-body"><div class="ant-collapse ant-collapse-icon-placement-start css-1pi45l5 css-var-_R_16_"><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">为什么生成完成后显示 warning,但仍然可以导出?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">为什么提示必需事实缺失?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">草稿历史里的耗时怎么计算?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">生成资源为什么不自动进入知识库?</span></div></div></div></div></div><div class="ant-collapse ant-collapse-icon-placement-start css-1pi45l5 css-var-_R_16_"><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">准备资料时要注意什么?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">角色应该怎么命名?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">模板应该怎么创建?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">生成过程中怎么看进度?</span></div></div><div class="ant-collapse-item"><div class="ant-collapse-header" role="button" aria-expanded="false" aria-disabled="false" tabindex="0"><div class="ant-collapse-expand-icon"><span role="img" aria-label="collapsed" class="anticon anticon-right ant-collapse-arrow"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path></svg></span></div><span class="ant-collapse-title">怎样判断能否正式导出?</span></div></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/guide","query":{},"buildId":"customize-agent-dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1,58 +1,58 @@
1
1
  {
2
2
  "/_app": "pages/_app.js",
3
3
  "/api/assets/generated": "pages/api/assets/generated.js",
4
+ "/api/assets/generated/preview": "pages/api/assets/generated/preview.js",
4
5
  "/api/config/models": "pages/api/config/models.js",
5
- "/api/config/embedding/healthCheck": "pages/api/config/embedding/healthCheck.js",
6
6
  "/api/context": "pages/api/context.js",
7
- "/api/documents/generate": "pages/api/documents/generate.js",
7
+ "/api/config/embedding/healthCheck": "pages/api/config/embedding/healthCheck.js",
8
8
  "/api/documents/chapter/regenerate": "pages/api/documents/chapter/regenerate.js",
9
- "/api/documents/export": "pages/api/documents/export.js",
10
9
  "/api/documents/drafts": "pages/api/documents/drafts.js",
11
- "/api/documents/templates": "pages/api/documents/templates.js",
12
- "/api/documents/generated/[id]": "pages/api/documents/generated/[id].js",
13
- "/api/documents/roles": "pages/api/documents/roles.js",
10
+ "/api/documents/export": "pages/api/documents/export.js",
14
11
  "/api/documents/generated": "pages/api/documents/generated.js",
12
+ "/api/documents/roles": "pages/api/documents/roles.js",
13
+ "/api/documents/generated/[id]": "pages/api/documents/generated/[id].js",
14
+ "/api/documents/generate": "pages/api/documents/generate.js",
15
15
  "/api/documents/specs": "pages/api/documents/specs.js",
16
16
  "/api/health": "pages/api/health.js",
17
- "/api/kb/duplicates": "pages/api/kb/duplicates.js",
18
- "/api/kb/features": "pages/api/kb/features.js",
19
- "/api/kb/files/detail": "pages/api/kb/files/detail.js",
20
17
  "/api/kb/categories": "pages/api/kb/categories.js",
21
- "/api/assets/generated/preview": "pages/api/assets/generated/preview.js",
18
+ "/api/documents/templates": "pages/api/documents/templates.js",
19
+ "/api/kb/features": "pages/api/kb/features.js",
20
+ "/api/kb/duplicates": "pages/api/kb/duplicates.js",
22
21
  "/api/kb/files/open": "pages/api/kb/files/open.js",
22
+ "/api/kb/files/detail": "pages/api/kb/files/detail.js",
23
+ "/api/kb/files": "pages/api/kb/files.js",
23
24
  "/api/kb/files/reindex": "pages/api/kb/files/reindex.js",
24
25
  "/api/kb/ignore": "pages/api/kb/ignore.js",
25
26
  "/api/kb/operations": "pages/api/kb/operations.js",
26
27
  "/api/kb/reindex": "pages/api/kb/reindex.js",
27
28
  "/api/kb/search": "pages/api/kb/search.js",
28
- "/api/kb/tags": "pages/api/kb/tags.js",
29
- "/api/prompt": "pages/api/prompt.js",
30
29
  "/api/kb/stats": "pages/api/kb/stats.js",
31
30
  "/api/kb/upload/progress": "pages/api/kb/upload/progress.js",
32
- "/api/system/stats": "pages/api/system/stats.js",
33
- "/document-roles": "pages/document-roles.html",
31
+ "/api/prompt": "pages/api/prompt.js",
32
+ "/api/kb/tags": "pages/api/kb/tags.js",
34
33
  "/asset-library": "pages/asset-library.html",
35
34
  "/context/long-term": "pages/context/long-term.html",
35
+ "/api/system/stats": "pages/api/system/stats.js",
36
36
  "/context/short-term": "pages/context/short-term.html",
37
- "/api/kb/files": "pages/api/kb/files.js",
38
- "/documents": "pages/documents.html",
37
+ "/document-roles": "pages/document-roles.html",
39
38
  "/document-specs": "pages/document-specs.html",
40
- "/_error": "pages/_error.js",
39
+ "/documents": "pages/documents.html",
41
40
  "/guide": "pages/guide.html",
42
- "/": "pages/index.html",
43
41
  "/knowledge/file-detail": "pages/knowledge/file-detail.html",
42
+ "/": "pages/index.html",
43
+ "/knowledge": "pages/knowledge.html",
44
44
  "/knowledge/files": "pages/knowledge/files.html",
45
- "/models": "pages/models.html",
46
45
  "/knowledge/search": "pages/knowledge/search.html",
47
- "/knowledge": "pages/knowledge.html",
46
+ "/knowledge/manage": "pages/knowledge/manage.html",
47
+ "/models": "pages/models.html",
48
48
  "/overview": "pages/overview.html",
49
49
  "/prompt": "pages/prompt.html",
50
- "/knowledge/manage": "pages/knowledge/manage.html",
51
50
  "/settings": "pages/settings.html",
51
+ "/_error": "pages/_error.js",
52
52
  "/api/config/providers/[provider]": "pages/api/config/providers/[provider].js",
53
53
  "/api/config/embedding": "pages/api/config/embedding.js",
54
- "/api/config/providers": "pages/api/config/providers.js",
55
54
  "/api/config/healthCheck": "pages/api/config/healthCheck.js",
55
+ "/api/config/providers": "pages/api/config/providers.js",
56
56
  "/api/kb/files/preview-pdf-page": "pages/api/kb/files/preview-pdf-page.js",
57
57
  "/api/kb/upload": "pages/api/kb/upload.js",
58
58
  "/_document": "pages/_document.js",
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[920],{2548:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>b});var i=l(65321),c=l(35292),r=l(68787),n=l(2256),d=l(38770),t=l(11702),x=l(9730),h=l(13399),a=l(55122),j=l(15622),o=l(71330),g=l(8579),m=l(66926),p=l(7851),A=l(84742),u=l(13014);let{Paragraph:k,Title:N,Text:w}=c.A,D=[{icon:(0,i.jsx)(o.A,{}),title:"准备阶段",color:"blue",items:["配置模型","上传知识库资料","创建提示词"]},{icon:(0,i.jsx)(g.A,{}),title:"编排阶段",color:"purple",items:["创建文件角色","创建提示词角色","创建项目角色配置并排序"]},{icon:(0,i.jsx)(m.A,{}),title:"生成阶段",color:"geekblue",items:["创建模板","后台生成轮询","动态执行状态"]},{icon:(0,i.jsx)(p.A,{}),title:"交付阶段",color:"green",items:["审查事实和来源","检查导出门禁","导出正式文件"]}],y=[{title:"第一步:配置模型",goal:"让系统具备 LLM JSON 事实抽取、章节生成和校验能力。",path:"左侧菜单 → 模型配置",steps:["点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。","填写 Base URL、API Key、供应商名称并保存。","添加模型名称,建议至少准备一个用于生成和推理的模型。","把模型设置为当前启用模型。","执行健康检查,确认模型可调用。"],checks:["模型健康检查通过","至少有一个启用模型","API Key 和 Base URL 正确"],tips:"如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。"},{title:"第二步:上传知识库资料",goal:"把项目资料放入系统,让后续文件角色可以绑定。",path:"左侧菜单 → 知识库 → 文件管理 / 管理",steps:["上传招标文件、工程概况、合同条件、技术要求等项目事实资料。","上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。","上传图纸目录、图纸说明、设计说明等图纸类资料。","上传规范、规程、企业标准、评分办法、编制要求等规则类资料。","等待索引完成,并在知识库文件列表中确认文件可见。"],checks:["文件上传成功","索引完成","文件能在文件角色绑定下拉框中看到"],tips:"表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。"},{title:"第三步:创建提示词",goal:"定义每个执行阶段的模型行为。",path:"左侧菜单 → 提示词管理",steps:["创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。","创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。","创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。","创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。","保存后确认提示词能在提示词角色绑定下拉框中看到。"],checks:["事实抽取提示词已创建","章节生成提示词已创建","校验或格式化提示词已创建"],tips:"提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。"},{title:"第四步:创建文件角色",goal:"告诉系统每个文件在生成流程中的用途。",path:"左侧菜单 → 角色配置 → 新建文件角色",steps:["填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。","选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。","绑定对应知识库文件。","保存角色。","按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。"],checks:["文件角色有名称","已选择处理类型","已绑定知识库文件"],tips:"处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。"},{title:"第五步:创建提示词角色",goal:"告诉系统每条提示词在哪个执行阶段使用。",path:"左侧菜单 → 角色配置 → 新建提示词角色",steps:["填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。","选择执行类型:事实抽取、章节生成、校验、格式化或参考。","绑定对应提示词。","保存角色。","一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。"],checks:["提示词角色有名称","已选择执行类型","已绑定提示词"],tips:"角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。"},{title:"第六步:创建项目角色配置并排序",goal:"把文件角色和提示词角色组合成一个可复用的项目生成方案。",path:"左侧菜单 → 角色配置 → 新建项目配置",steps:["填写配置名称,例如“某项目施工组织设计配置”。","添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。","添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。","保存项目角色配置。","后续模板只绑定项目角色配置,不再重复绑定文件和提示词。"],checks:["至少包含一个文件角色","至少包含一个提示词角色","顺序符合业务流程"],tips:"排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。"},{title:"第七步:创建模板并绑定项目配置",goal:"定义要生成哪种文档,以及使用哪套项目角色配置。",path:"左侧菜单 → 生成编辑 → 新建模板",steps:["填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。","填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。","填写分类、输出标题和模板说明。","选择第六步创建的项目角色配置。","保存模板。"],checks:["模板名称清晰","输出标题正确","已绑定项目角色配置"],tips:"模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。"},{title:"第八步:执行生成并查看状态",goal:"让用户明确知道生成流程进行到哪一步。",path:"左侧菜单 → 生成编辑 → 选择模板 → 点击生成",steps:["点击生成按钮后,页面会出现“执行状态”卡片。","执行状态会根据当前模板、文档规范包、文件角色、提示词角色和章节自动生成,不是固定工程流程。","当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色或门禁规则。","生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。","生成完成后,系统会用后端真实 executionStages 回填最终状态。","如果导出门禁未通过,生成完成节点会提示需要检查校验结果。"],checks:["执行状态 Card 出现","当前节点有高亮","生成完成后有执行阶段结果"],tips:"如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。"},{title:"第九步:审查结果并导出",goal:"确保文档可追溯、可校验、可交付,同时能区分阻断问题和可复核 warning。",path:"生成编辑 → 编辑器下方 Tabs → 导出按钮 / 草稿历史",steps:["查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。","查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。","查看“缺失项”,补齐缺失资料或调整角色配置。","查看“校验”,优先处理 error;warning 表示可导出但建议复核。","查看“导出门禁”,真实 blockingIssues 会阻断 PDF/DOCX 导出,普通 warning 不阻断。","在草稿历史中确认生成状态、warning 原因、整体生成耗时,并可删除不需要的记录。","可以先导出 HTML 预览排版,再导出 DOCX/PDF。"],checks:["无真实阻断问题","关键事实有来源","章节有证据","warning 原因已复核","导出文件可打开"],tips:"导出不是简单放行:真实阻断仍会拦截;生成完成但存在可复核问题时显示 warning,用户可以继续导出并按原因优化资料。"}];function b(){let e=(0,u.Vr)();return(0,i.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,i.jsxs)(r.A,{className:"cardGlass",styles:{body:{padding:24}},children:[(0,i.jsx)(N,{level:2,className:"mb-2",children:e("guide.title")}),(0,i.jsx)(k,{className:"pageDesc mb-0",children:e("guide.description")})]}),(0,i.jsx)(n.A,{gutter:[16,16],children:D.map(e=>(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{className:"h-full",title:(0,i.jsxs)("span",{className:"flex items-center gap-2",children:[e.icon,e.title]}),children:(0,i.jsx)("div",{className:"space-y-2",children:e.items.map(s=>(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{color:e.color,children:s})},s))})})},e.title))}),(0,i.jsx)(r.A,{title:e("guide.fullFlow"),children:(0,i.jsx)(x.A,{direction:"vertical",items:y.map(e=>({title:e.title,description:"".concat(e.goal,"(入口:").concat(e.path,")")}))})}),(0,i.jsx)(r.A,{title:"详细步骤说明:照着做即可跑通",children:(0,i.jsx)(h.A,{mode:"left",items:y.map(e=>({dot:(0,i.jsx)(A.A,{}),children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)(N,{level:4,className:"mb-0",children:e.title}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"目标:"}),e.goal]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"入口:"}),e.path]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(w,{strong:!0,children:"操作步骤:"}),(0,i.jsx)("ol",{className:"list-decimal pl-6 mt-2 space-y-1",children:e.steps.map(e=>(0,i.jsx)("li",{children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(w,{strong:!0,children:"完成检查:"}),(0,i.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:e.checks.map(e=>(0,i.jsx)(t.A,{color:"success",children:e},e))})]}),(0,i.jsxs)(k,{children:[(0,i.jsx)(w,{strong:!0,children:"提示:"}),e.tips]}),(0,i.jsx)(a.A,{})]})}))})}),(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(r.A,{title:e("guide.roleDesign"),children:[(0,i.jsx)(k,{children:e("guide.roleDesignDesc")}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"blue",children:"file"}),(0,i.jsx)(w,{strong:!0,children:e("guide.fileRole")}),(0,i.jsx)(k,{children:e("guide.fileRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"purple",children:"prompt"}),(0,i.jsx)(w,{strong:!0,children:e("guide.promptRole")}),(0,i.jsx)(k,{children:e("guide.promptRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(t.A,{color:"geekblue",children:"config"}),(0,i.jsx)(w,{strong:!0,children:e("guide.projectConfig")}),(0,i.jsx)(k,{children:e("guide.projectConfigDesc")})]})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(r.A,{title:e("guide.generationEngine"),children:[(0,i.jsx)(k,{children:e("guide.generationEngineDesc")}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(t.A,{children:e("roles.factExtraction")}),(0,i.jsx)(t.A,{children:e("roles.chapterGeneration")}),(0,i.jsx)(t.A,{children:e("roles.validation")}),(0,i.jsx)(t.A,{children:e("roles.formatting")}),(0,i.jsx)(t.A,{children:e("documents.exportGate")})]})]})})]}),(0,i.jsx)(r.A,{title:"动态 schema、证据和执行状态说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"动态事实 schema",children:(0,i.jsx)(k,{children:"系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"结构化资源证据",children:(0,i.jsx)(k,{children:"文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"动态执行状态",children:(0,i.jsx)(k,{children:"生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。"})})})]})}),(0,i.jsx)(r.A,{title:"生成记录、warning 和导出门禁怎么理解",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"草稿历史记录",children:[(0,i.jsxs)(k,{children:["每次后台生成都会写入全局项目目录 ",(0,i.jsxs)(w,{code:!0,children:["~/.customize-agent/projects/","{projectId}","/generatedDocuments"]}),"。记录会保存标题、模板、状态、创建时间、完成时间、生成耗时、正文、结构化结果和资源引用。"]}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"completed:生成完成且无需要关注的问题。"}),(0,i.jsx)("li",{children:"warning:生成完成,但存在可复核问题。"}),(0,i.jsx)("li",{children:"failed:生成失败,需要查看错误原因。"}),(0,i.jsx)("li",{children:"generating:后台任务仍在执行,可轮询恢复。"})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"warning 不是失败",children:[(0,i.jsx)(k,{children:"warning 用于提醒用户“文档已经生成,但建议复核”。例如必需事实没有在最佳来源角色中抽到、部分来源需要人工确认、格式或内容有优化建议。warning 会显示在草稿历史和校验详情中,并保留导出能力。"}),(0,i.jsx)(k,{children:"如果是明确阻断问题,例如正文包含临时图片生成 URL、出现“资料未提供”占位、真实 blockingIssues 未解决,则导出门禁仍会阻断 DOCX/PDF。"})]})}),(0,i.jsx)(d.A,{xs:24,lg:8,children:(0,i.jsxs)(r.A,{size:"small",title:"导出门禁规则",children:[(0,i.jsx)(k,{children:"门禁分为“真实阻断”和“复核建议”。系统不会因为普通 warning 简单禁止导出,但会在出现阻断级问题时保护交付质量。"}),(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"Markdown/HTML 更适合快速预览和人工调整。"}),(0,i.jsx)("li",{children:"DOCX/PDF 会启用真实门禁检查。"}),(0,i.jsx)("li",{children:"草稿历史可保留多个版本,便于对比和再次导出。"})]})]})})]})}),(0,i.jsx)(r.A,{title:"生成资源和知识库的关系",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(r.A,{size:"small",title:"生成资源默认不入库",children:[(0,i.jsx)(k,{children:"模型生成的图片、封面或后处理资源会保存在 generatedDocuments/assets 下,并登记到生成资源管理页。它们默认不进入知识库索引,避免临时产物污染原始资料。"}),(0,i.jsx)(k,{children:"如果某个生成资源已经被人工确认可以复用,再到资源管理页手动加入知识库索引。"})]})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsxs)(r.A,{size:"small",title:"资源预览和坏图处理",children:[(0,i.jsx)(k,{children:"资源预览会从全局 generatedDocuments 目录解析文件,不依赖当前页面临时路径。图片下载会识别“image is generating”等占位响应,并校验 PNG/JPEG/WebP 字节,避免把占位文本当成图片保存。"}),(0,i.jsx)(k,{children:"如果预览失败,优先查看资源管理页中的文件路径、资源状态和原始生成记录。"})]})})]})}),(0,i.jsx)(r.A,{title:"文件角色处理类型大白话说明",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"规则文件",children:(0,i.jsx)(k,{children:"用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"项目事实文件",children:(0,i.jsx)(k,{children:"用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"表格数据",children:(0,i.jsx)(k,{children:"用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"图纸文件",children:(0,i.jsx)(k,{children:"用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"规范文件",children:(0,i.jsx)(k,{children:"用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(r.A,{size:"small",title:"参考资料",children:(0,i.jsx)(k,{children:"只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。"})})})]})}),(0,i.jsx)(r.A,{title:"推荐资料清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"必备资料",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"项目事实文件"}),(0,i.jsx)("li",{children:"招标或编制规则"}),(0,i.jsx)("li",{children:"章节生成提示词"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"强烈建议",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"表格数据"}),(0,i.jsx)("li",{children:"图纸说明"}),(0,i.jsx)("li",{children:"规范或企业标准"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(r.A,{size:"small",title:"导出前确认",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"无 error 校验"}),(0,i.jsx)("li",{children:"事实有来源"}),(0,i.jsx)("li",{children:"导出门禁通过"})]})})})]})}),(0,i.jsx)(r.A,{title:"生产级生成前检查清单",children:(0,i.jsxs)(n.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"资料完整性",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"事实源、规则源、表格源、图片/图纸源分开绑定。"}),(0,i.jsx)("li",{children:"关键事实在知识库检索中可以搜索到。"}),(0,i.jsx)("li",{children:"表格有清晰表头,图片和图纸有说明文字。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"角色配置",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"文件角色处理类型选对。"}),(0,i.jsx)("li",{children:"提示词角色执行类型选对。"}),(0,i.jsx)("li",{children:"项目角色配置排序符合生成流程。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"规范包",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"required fact 不要过度配置。"}),(0,i.jsx)("li",{children:"sourceRoleIds 只绑定真正应该提供该事实的角色。"}),(0,i.jsx)("li",{children:"gateRules 区分 error 和 warning。"})]})})}),(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(r.A,{size:"small",title:"交付检查",children:(0,i.jsxs)("ul",{className:"list-disc pl-5 space-y-1",children:[(0,i.jsx)("li",{children:"草稿历史记录状态合理。"}),(0,i.jsx)("li",{children:"warning 原因已经阅读。"}),(0,i.jsx)("li",{children:"导出文件打开正常,图片和表格可读。"})]})})})]})}),(0,i.jsx)(r.A,{title:"常见问题和处理建议",children:(0,i.jsx)(j.A,{items:[{key:"warning-export",label:"为什么生成完成后显示 warning,但仍然可以导出?",children:(0,i.jsx)(k,{children:"warning 表示文档已生成,但存在建议复核的问题,例如来源角色不完全匹配、某些事实需要人工确认或格式可优化。它不是失败,也不是导出阻断。只有真实 blockingIssues 或 error 级门禁问题才会阻断 DOCX/PDF 导出。"})},{key:"missing-facts",label:"为什么提示必需事实缺失?",children:(0,i.jsx)(k,{children:"优先检查文档规范包中的 factFields、sourceRoleIds、模板章节 requiredFacts 和文件角色绑定。很多情况下不是模型失败,而是资料没有被绑定到正确角色,或字段要求比资料实际内容更严格。"})},{key:"draft-duration",label:"草稿历史里的耗时怎么计算?",children:(0,i.jsx)(k,{children:"耗时使用生成记录的 createdAt 到 completedAt 计算;旧记录或未完成记录会使用 updatedAt 兜底。它用于判断本次生成链路整体成本,包括知识库检索、事实抽取、章节生成、资源处理、校验和格式化。"})},{key:"asset-index",label:"生成资源为什么不自动进入知识库?",children:(0,i.jsx)(k,{children:"生成资源属于输出产物,不是原始知识来源。默认不入库可以避免模型下一次把临时封面、草稿图片或错误资源当成事实来源。确认可复用后,再在生成资源管理页手动加入知识库索引。"})}]})}),(0,i.jsx)(j.A,{items:[{key:"prepare",label:e("guide.prepareTitle"),children:(0,i.jsx)(k,{children:e("guide.prepareContent")})},{key:"roles",label:e("guide.rolesTitle"),children:(0,i.jsx)(k,{children:e("guide.rolesContent")})},{key:"template",label:e("guide.templateTitle"),children:(0,i.jsx)(k,{children:e("guide.templateContent")})},{key:"generate",label:e("guide.generateTitle"),children:(0,i.jsx)(k,{children:e("guide.generateContent")})},{key:"qa",label:e("guide.qaTitle"),children:(0,i.jsx)(k,{children:e("guide.qaContent")})}]})]})}},34899:(e,s,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/guide",function(){return l(2548)}])}},e=>{e.O(0,[260,167,382,292,858,969,636,593,792],()=>e(e.s=34899)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST=function(s,e,t,c,a,n,d,i,u,o,b,r,f,k,h,g,l,j,m,p,_,w,x,I,v){return{__rewrites:{afterFiles:[],beforeFiles:[{has:j,source:"/_next/static/:buildId/_buildManifest.js",destination:"/_next/static/customize-agent-dashboard/_buildManifest.js"},{has:j,source:"/_next/static/:buildId/_ssgManifest.js",destination:"/_next/static/customize-agent-dashboard/_ssgManifest.js"}],fallback:[]},__routerFilterStatic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:p,bitArray:[]},__routerFilterDynamic:{numItems:k,errorRate:1e-4,numBits:k,numHashes:p,bitArray:[]},"/":["static/chunks/pages/index-c5e0758e6b31deee.js"],"/_error":["static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":[s,e,t,c,a,n,i,u,r,h,"static/chunks/881-a1eb917222b66f09.js","static/chunks/pages/asset-library-82606363f9142bad.js"],"/context/long-term":[s,e,t,c,a,d,n,i,u,o,b,f,_,"static/chunks/pages/context/long-term-f2a550bc848ec1a3.js"],"/context/short-term":[s,e,t,c,a,d,n,i,u,o,b,f,_,"static/chunks/pages/context/short-term-1de28da82d2b6276.js"],"/document-roles":[s,e,t,c,a,d,n,i,u,b,h,"static/chunks/pages/document-roles-54a1cc04116e8c18.js"],"/document-specs":[s,e,t,c,a,d,n,i,u,b,h,g,"static/chunks/pages/document-specs-723dee6883949a17.js"],"/documents":[s,e,t,c,a,d,n,i,u,b,r,h,w,"static/chunks/617-68a9e848c380f9c3.js","static/chunks/pages/documents-47516fed70f892dc.js"],"/guide":[s,e,t,r,w,"static/chunks/969-5d5ff5a3ed74f52b.js","static/chunks/pages/guide-acf32d66a6df6e5a.js"],"/knowledge":["static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":[s,e,t,c,a,d,n,i,o,f,r,x,"static/chunks/80-96429163e5c103a8.js",l,"static/chunks/pages/knowledge/file-detail-7a1a3d4352ecfa0a.js"],"/knowledge/files":[s,e,t,c,a,d,n,i,o,f,I,l,"static/chunks/pages/knowledge/files-f0e05583bf7c57d9.js"],"/knowledge/manage":[s,e,t,c,a,n,i,o,f,v,"static/chunks/935-daa0026982d7fa8d.js","static/chunks/pages/knowledge/manage-8acff53019eb6cc1.js"],"/knowledge/search":[s,e,t,c,d,n,r,g,x,l,"static/chunks/pages/knowledge/search-1f3bd8fcb7af3e4d.js"],"/models":[s,e,t,c,a,d,u,o,b,g,"static/css/0e153583d22cc52e.css","static/chunks/pages/models-11533caad3723009.js"],"/overview":[s,e,I,v,"static/chunks/224-9a7074031493793b.js","static/chunks/pages/overview-f80672c242d9aa32.js"],"/prompt":[s,e,t,c,d,u,o,"static/chunks/pages/prompt-c9bc7884a44d3767.js"],"/settings":[s,"static/css/82b6ddff0ef364fe.css","static/chunks/pages/settings-68f0d05bf95d12da.js"],sortedPages:["/","/_app","/_error","/asset-library","/context/long-term","/context/short-term","/document-roles","/document-specs","/documents","/guide","/knowledge","/knowledge/file-detail","/knowledge/files","/knowledge/manage","/knowledge/search","/models","/overview","/prompt","/settings"]}}("static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/400-1fa1899b7c3f0bb4.js",0,"static/chunks/951-8ecf8af33ab36369.js","static/chunks/20-8968ee2d4013a5b8.js","static/css/d284a7454d6f6b06.css",void 0,1e-4,NaN,"static/chunks/257-e4ebae17a8ee8412.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/350-8c5e13c0577a38c3.js","static/chunks/15-4683808cb8db7005.js","static/chunks/577-5b2691f0c8f17187.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
1
+ self.__BUILD_MANIFEST=function(s,e,t,c,a,n,d,i,u,o,b,r,k,f,h,g,l,j,m,p,_,w,x,I,v){return{__rewrites:{afterFiles:[],beforeFiles:[{has:j,source:"/_next/static/:buildId/_buildManifest.js",destination:"/_next/static/customize-agent-dashboard/_buildManifest.js"},{has:j,source:"/_next/static/:buildId/_ssgManifest.js",destination:"/_next/static/customize-agent-dashboard/_ssgManifest.js"}],fallback:[]},__routerFilterStatic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:p,bitArray:[]},__routerFilterDynamic:{numItems:f,errorRate:1e-4,numBits:f,numHashes:p,bitArray:[]},"/":["static/chunks/pages/index-c5e0758e6b31deee.js"],"/_error":["static/chunks/pages/_error-282257fbdcc167b4.js"],"/asset-library":[s,e,t,c,a,n,i,u,r,h,"static/chunks/881-a1eb917222b66f09.js","static/chunks/pages/asset-library-82606363f9142bad.js"],"/context/long-term":[s,e,t,c,a,d,n,i,u,o,b,k,_,"static/chunks/pages/context/long-term-f2a550bc848ec1a3.js"],"/context/short-term":[s,e,t,c,a,d,n,i,u,o,b,k,_,"static/chunks/pages/context/short-term-1de28da82d2b6276.js"],"/document-roles":[s,e,t,c,a,d,n,i,u,b,h,"static/chunks/pages/document-roles-54a1cc04116e8c18.js"],"/document-specs":[s,e,t,c,a,d,n,i,u,b,h,g,"static/chunks/pages/document-specs-723dee6883949a17.js"],"/documents":[s,e,t,c,a,d,n,i,u,b,r,h,w,"static/chunks/617-68a9e848c380f9c3.js","static/chunks/pages/documents-47516fed70f892dc.js"],"/guide":[s,e,t,r,w,"static/chunks/969-5d5ff5a3ed74f52b.js","static/chunks/pages/guide-8b0f474da04fc9f1.js"],"/knowledge":["static/chunks/pages/knowledge-905248d8dcb15453.js"],"/knowledge/file-detail":[s,e,t,c,a,d,n,i,o,k,r,x,"static/chunks/80-96429163e5c103a8.js",l,"static/chunks/pages/knowledge/file-detail-7a1a3d4352ecfa0a.js"],"/knowledge/files":[s,e,t,c,a,d,n,i,o,k,I,l,"static/chunks/pages/knowledge/files-f0e05583bf7c57d9.js"],"/knowledge/manage":[s,e,t,c,a,n,i,o,k,v,"static/chunks/935-daa0026982d7fa8d.js","static/chunks/pages/knowledge/manage-8acff53019eb6cc1.js"],"/knowledge/search":[s,e,t,c,d,n,r,g,x,l,"static/chunks/pages/knowledge/search-1f3bd8fcb7af3e4d.js"],"/models":[s,e,t,c,a,d,u,o,b,g,"static/css/0e153583d22cc52e.css","static/chunks/pages/models-11533caad3723009.js"],"/overview":[s,e,I,v,"static/chunks/224-9a7074031493793b.js","static/chunks/pages/overview-f80672c242d9aa32.js"],"/prompt":[s,e,t,c,d,u,o,"static/chunks/pages/prompt-c9bc7884a44d3767.js"],"/settings":[s,"static/css/82b6ddff0ef364fe.css","static/chunks/pages/settings-68f0d05bf95d12da.js"],sortedPages:["/","/_app","/_error","/asset-library","/context/long-term","/context/short-term","/document-roles","/document-specs","/documents","/guide","/knowledge","/knowledge/file-detail","/knowledge/files","/knowledge/manage","/knowledge/search","/models","/overview","/prompt","/settings"]}}("static/chunks/260-cec84dc6c353e104.js","static/chunks/167-d4f384b289ecb70c.js","static/chunks/382-6ab5f41cd91edad0.js","static/chunks/628-27424ba8ca9ca8ce.js","static/chunks/271-39045be4cdbd6af1.js","static/chunks/700-5d29b0475311f590.js","static/chunks/576-fd55b302cb0c9a48.js","static/chunks/174-51b6d64f21e9b976.js","static/chunks/183-8da0232dd30cdc81.js","static/chunks/985-4b4a3ed36ada16eb.js","static/chunks/232-813af4932a145fdc.js","static/chunks/292-f0a2c92861c304e6.js","static/chunks/400-1fa1899b7c3f0bb4.js",0,"static/chunks/951-8ecf8af33ab36369.js","static/chunks/20-8968ee2d4013a5b8.js","static/css/d284a7454d6f6b06.css",void 0,1e-4,NaN,"static/chunks/257-e4ebae17a8ee8412.js","static/chunks/858-5e6982e2b239d4b7.js","static/chunks/350-8c5e13c0577a38c3.js","static/chunks/15-4683808cb8db7005.js","static/chunks/577-5b2691f0c8f17187.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/server",
3
- "version": "3.0.20",
3
+ "version": "3.0.22",
4
4
  "description": "Customize Agent Web 管理控制台",
5
5
  "exports": {
6
6
  "./package.json": "./package.json"
@@ -47,8 +47,8 @@
47
47
  "tesseract.js": "^7.0.0",
48
48
  "xlsx": "^0.18.5",
49
49
  "@customize-agent/knowledge": "^3.0.10",
50
- "@customize-agent/llm": "^3.0.3",
51
- "@customize-agent/runtime": "^3.0.5"
50
+ "@customize-agent/runtime": "^3.0.5",
51
+ "@customize-agent/llm": "^3.0.3"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@tailwindcss/postcss": "^4.3.2",
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[920],{2548:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>D});var i=l(65321),c=l(35292),t=l(68787),r=l(2256),d=l(38770),n=l(11702),h=l(9730),x=l(13399),a=l(55122),j=l(15622),o=l(71330),p=l(8579),m=l(66926),g=l(7851),A=l(84742),u=l(13014);let{Paragraph:N,Title:k,Text:f}=c.A,v=[{icon:(0,i.jsx)(o.A,{}),title:"准备阶段",color:"blue",items:["配置模型","上传知识库资料","创建提示词"]},{icon:(0,i.jsx)(p.A,{}),title:"编排阶段",color:"purple",items:["创建文件角色","创建提示词角色","创建项目角色配置并排序"]},{icon:(0,i.jsx)(m.A,{}),title:"生成阶段",color:"geekblue",items:["创建模板","后台生成轮询","动态执行状态"]},{icon:(0,i.jsx)(g.A,{}),title:"交付阶段",color:"green",items:["审查事实和来源","检查导出门禁","导出正式文件"]}],b=[{title:"第一步:配置模型",goal:"让系统具备 LLM JSON 事实抽取、章节生成和校验能力。",path:"左侧菜单 → 模型配置",steps:["点击新增供应商,选择 OpenAI、DeepSeek、OpenRouter、Ollama 或其他兼容 OpenAI 协议的服务。","填写 Base URL、API Key、供应商名称并保存。","添加模型名称,建议至少准备一个用于生成和推理的模型。","把模型设置为当前启用模型。","执行健康检查,确认模型可调用。"],checks:["模型健康检查通过","至少有一个启用模型","API Key 和 Base URL 正确"],tips:"如果模型不可用,系统会回退到本地确定性抽取,但事实抽取质量会下降。"},{title:"第二步:上传知识库资料",goal:"把项目资料放入系统,让后续文件角色可以绑定。",path:"左侧菜单 → 知识库 → 文件管理 / 管理",steps:["上传招标文件、工程概况、合同条件、技术要求等项目事实资料。","上传工程量清单、劳动力计划、机械设备计划、材料计划等表格资料。","上传图纸目录、图纸说明、设计说明等图纸类资料。","上传规范、规程、企业标准、评分办法、编制要求等规则类资料。","等待索引完成,并在知识库文件列表中确认文件可见。"],checks:["文件上传成功","索引完成","文件能在文件角色绑定下拉框中看到"],tips:"表格资料最好有清晰表头;图纸资料最好附带目录或文字说明。"},{title:"第三步:创建提示词",goal:"定义每个执行阶段的模型行为。",path:"左侧菜单 → 提示词管理",steps:["创建事实抽取提示词:要求只抽取资料中明确出现的事实,返回结构化 JSON,不允许编造。","创建章节生成提示词:定义文档类型、专业语气、章节风格、引用事实和禁止事项。","创建校验提示词:检查工程名称、工期、质量目标、数字、表格引用、章节完整性。","创建格式化提示词:定义封面、目录、编号、表格、分页和正式输出样式。","保存后确认提示词能在提示词角色绑定下拉框中看到。"],checks:["事实抽取提示词已创建","章节生成提示词已创建","校验或格式化提示词已创建"],tips:"提示词越明确,生成结果越稳定。建议明确写上“没有来源的数据不要写”。"},{title:"第四步:创建文件角色",goal:"告诉系统每个文件在生成流程中的用途。",path:"左侧菜单 → 角色配置 → 新建文件角色",steps:["填写角色名称,例如“招标文件事实源”“工程量清单表格”“图纸说明文件”。","选择处理类型:规则文件、项目事实文件、表格数据、图纸文件、规范文件或参考资料。","绑定对应知识库文件。","保存角色。","按文件用途创建多个文件角色,不建议把不同用途资料混在一个角色里。"],checks:["文件角色有名称","已选择处理类型","已绑定知识库文件"],tips:"处理类型很重要:系统会根据它决定是否进行表格解析、事实抽取、规则引用或来源追踪。"},{title:"第五步:创建提示词角色",goal:"告诉系统每条提示词在哪个执行阶段使用。",path:"左侧菜单 → 角色配置 → 新建提示词角色",steps:["填写角色名称,例如“施工组织设计事实抽取”“章节生成规则”“导出前校验规则”。","选择执行类型:事实抽取、章节生成、校验、格式化或参考。","绑定对应提示词。","保存角色。","一个执行阶段可以有多个提示词角色,后续在项目角色配置中排序。"],checks:["提示词角色有名称","已选择执行类型","已绑定提示词"],tips:"角色名称可以完全自定义,但执行类型必须选对。系统依赖执行类型驱动多阶段流程。"},{title:"第六步:创建项目角色配置并排序",goal:"把文件角色和提示词角色组合成一个可复用的项目生成方案。",path:"左侧菜单 → 角色配置 → 新建项目配置",steps:["填写配置名称,例如“某项目施工组织设计配置”。","添加文件角色,并设置顺序。推荐:规则文件 → 项目事实文件 → 表格数据 → 图纸文件 → 规范文件 → 参考资料。","添加提示词角色,并设置顺序。推荐:事实抽取 → 章节生成 → 校验 → 格式化 → 参考。","保存项目角色配置。","后续模板只绑定项目角色配置,不再重复绑定文件和提示词。"],checks:["至少包含一个文件角色","至少包含一个提示词角色","顺序符合业务流程"],tips:"排序决定系统读取资料和应用提示词的优先级,是生产级生成稳定性的关键。"},{title:"第七步:创建模板并绑定项目配置",goal:"定义要生成哪种文档,以及使用哪套项目角色配置。",path:"左侧菜单 → 生成编辑 → 新建模板",steps:["填写模板 ID。ID 由系统生成或保持唯一,不建议手动频繁修改。","填写模板名称,例如“施工组织设计”“技术标文件”“专项施工方案”。","填写分类、输出标题和模板说明。","选择第六步创建的项目角色配置。","保存模板。"],checks:["模板名称清晰","输出标题正确","已绑定项目角色配置"],tips:"模板负责文档入口;项目角色配置负责资料、提示词和顺序。两者分离后更容易复用。"},{title:"第八步:执行生成并查看状态",goal:"让用户明确知道生成流程进行到哪一步。",path:"左侧菜单 → 生成编辑 → 选择模板 → 点击生成",steps:["点击生成按钮后,页面会出现“执行状态”卡片。","执行状态会根据当前模板、文档规范包、文件角色、提示词角色和章节自动生成,不是固定工程流程。","当前执行节点会高亮显示,子状态会展示正在处理的章节、事实字段、文件角色或门禁规则。","生成任务在后台运行,页面通过 documentId 轮询;切换页面后回到生成编辑仍可恢复状态。","生成完成后,系统会用后端真实 executionStages 回填最终状态。","如果导出门禁未通过,生成完成节点会提示需要检查校验结果。"],checks:["执行状态 Card 出现","当前节点有高亮","生成完成后有执行阶段结果"],tips:"如果长时间停留在某一步,优先检查模型配置、知识库索引和文件角色绑定。"},{title:"第九步:审查结果并导出",goal:"确保文档可追溯、可校验、可交付。",path:"生成编辑 → 编辑器下方 Tabs → 导出按钮",steps:["查看“结构化事实”,确认事实字段是否按文档规范包动态 schema 抽取,并检查冲突提示。","查看“来源”,确认事实来自规范包要求的文件角色和绑定资料。","查看“缺失项”,补齐缺失资料或调整角色配置。","查看“严格校验”,处理 error 级问题。","查看“导出门禁”,全部通过后再导出 PDF。","可以先导出 HTML 预览排版,再导出 PDF。"],checks:["无阻断错误","关键事实有来源","章节有证据","导出门禁通过"],tips:"PDF 导出会强制门禁。门禁未通过时,系统会阻止导出,避免问题文档流出。"}];function D(){let e=(0,u.Vr)();return(0,i.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,i.jsxs)(t.A,{className:"cardGlass",styles:{body:{padding:24}},children:[(0,i.jsx)(k,{level:2,className:"mb-2",children:e("guide.title")}),(0,i.jsx)(N,{className:"pageDesc mb-0",children:e("guide.description")})]}),(0,i.jsx)(r.A,{gutter:[16,16],children:v.map(e=>(0,i.jsx)(d.A,{xs:24,md:12,xl:6,children:(0,i.jsx)(t.A,{className:"h-full",title:(0,i.jsxs)("span",{className:"flex items-center gap-2",children:[e.icon,e.title]}),children:(0,i.jsx)("div",{className:"space-y-2",children:e.items.map(s=>(0,i.jsx)("div",{children:(0,i.jsx)(n.A,{color:e.color,children:s})},s))})})},e.title))}),(0,i.jsx)(t.A,{title:e("guide.fullFlow"),children:(0,i.jsx)(h.A,{direction:"vertical",items:b.map(e=>({title:e.title,description:"".concat(e.goal,"(入口:").concat(e.path,")")}))})}),(0,i.jsx)(t.A,{title:"详细步骤说明:照着做即可跑通",children:(0,i.jsx)(x.A,{mode:"left",items:b.map(e=>({dot:(0,i.jsx)(A.A,{}),children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)(k,{level:4,className:"mb-0",children:e.title}),(0,i.jsxs)(N,{children:[(0,i.jsx)(f,{strong:!0,children:"目标:"}),e.goal]}),(0,i.jsxs)(N,{children:[(0,i.jsx)(f,{strong:!0,children:"入口:"}),e.path]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(f,{strong:!0,children:"操作步骤:"}),(0,i.jsx)("ol",{className:"list-decimal pl-6 mt-2 space-y-1",children:e.steps.map(e=>(0,i.jsx)("li",{children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(f,{strong:!0,children:"完成检查:"}),(0,i.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:e.checks.map(e=>(0,i.jsx)(n.A,{color:"success",children:e},e))})]}),(0,i.jsxs)(N,{children:[(0,i.jsx)(f,{strong:!0,children:"提示:"}),e.tips]}),(0,i.jsx)(a.A,{})]})}))})}),(0,i.jsxs)(r.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(t.A,{title:e("guide.roleDesign"),children:[(0,i.jsx)(N,{children:e("guide.roleDesignDesc")}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)(n.A,{color:"blue",children:"file"}),(0,i.jsx)(f,{strong:!0,children:e("guide.fileRole")}),(0,i.jsx)(N,{children:e("guide.fileRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(n.A,{color:"purple",children:"prompt"}),(0,i.jsx)(f,{strong:!0,children:e("guide.promptRole")}),(0,i.jsx)(N,{children:e("guide.promptRoleDesc")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)(n.A,{color:"geekblue",children:"config"}),(0,i.jsx)(f,{strong:!0,children:e("guide.projectConfig")}),(0,i.jsx)(N,{children:e("guide.projectConfigDesc")})]})]})]})}),(0,i.jsx)(d.A,{xs:24,lg:12,children:(0,i.jsxs)(t.A,{title:e("guide.generationEngine"),children:[(0,i.jsx)(N,{children:e("guide.generationEngineDesc")}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(n.A,{children:e("roles.factExtraction")}),(0,i.jsx)(n.A,{children:e("roles.chapterGeneration")}),(0,i.jsx)(n.A,{children:e("roles.validation")}),(0,i.jsx)(n.A,{children:e("roles.formatting")}),(0,i.jsx)(n.A,{children:e("documents.exportGate")})]})]})})]}),(0,i.jsx)(t.A,{title:"动态 schema、证据和执行状态说明",children:(0,i.jsxs)(r.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"动态事实 schema",children:(0,i.jsx)(N,{children:"系统不会写死工程字段。文档规范包的事实字段、模板章节 requiredFacts、字段 sourceRoleIds 和 extractionHint 会共同组成抽取 schema,并驱动事实抽取、冲突检测和导出门禁。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"结构化资源证据",children:(0,i.jsx)(N,{children:"文本、PDF/Word、Excel/CSV、图片、地图图纸和其他附件都会被整理成资源证据,包含文件角色、处理类型、正文用途、关联事实和证据片段,模型据此理解资料关系。"})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"动态执行状态",children:(0,i.jsx)(N,{children:"生成编辑页的执行节点会随模板、规范包、文件角色、提示词角色、章节和门禁规则变化;用户生成不同项目文件时看到的是对应项目的流程,而不是固定示例流程。"})})})]})}),(0,i.jsx)(t.A,{title:"文件角色处理类型大白话说明",children:(0,i.jsxs)(r.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"规则文件",children:(0,i.jsx)(N,{children:"用来告诉系统“必须怎么写、不能怎么写、按什么标准判断”。适合放评分办法、甲方编制要求、攻略写作要求、输出格式要求。生成时会优先作为约束使用。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"项目事实文件",children:(0,i.jsx)(N,{children:"用来告诉系统“真实情况是什么”。适合放项目概况、合同摘要、招标文件关键信息、游戏角色资料、产品资料。事实字段通常从这里抽取。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"表格数据",children:(0,i.jsx)(N,{children:"用来解析结构化数据。适合放 Excel、CSV、清单、计划表、评分表、推荐指数表。系统会读取 Sheet、表头、行列和来源范围。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"图纸文件",children:(0,i.jsx)(N,{children:"用来表达空间关系、路线、结构、站位或设计说明。可以是图纸目录、设计说明、路线示意、阵型图说明。没有 CAD 时也可以用文字图纸说明。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"规范文件",children:(0,i.jsx)(N,{children:"用来作为专业依据。适合放国家规范、行业标准、企业标准、攻略结构规范、质量标准。校验和生成时会把它当成依据。"})})}),(0,i.jsx)(d.A,{xs:24,md:12,children:(0,i.jsx)(t.A,{size:"small",title:"参考资料",children:(0,i.jsx)(N,{children:"只作为辅助阅读材料,不建议放关键事实。适合放图片来源、公开网页链接、背景资料、案例资料。系统可以参考,但不应把它当成强事实。"})})})]})}),(0,i.jsx)(t.A,{title:"推荐资料清单",children:(0,i.jsxs)(r.A,{gutter:[16,16],children:[(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"必备资料",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"项目事实文件"}),(0,i.jsx)("li",{children:"招标或编制规则"}),(0,i.jsx)("li",{children:"章节生成提示词"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"强烈建议",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"表格数据"}),(0,i.jsx)("li",{children:"图纸说明"}),(0,i.jsx)("li",{children:"规范或企业标准"})]})})}),(0,i.jsx)(d.A,{xs:24,md:8,children:(0,i.jsx)(t.A,{size:"small",title:"导出前确认",children:(0,i.jsxs)("ul",{className:"list-disc pl-5",children:[(0,i.jsx)("li",{children:"无 error 校验"}),(0,i.jsx)("li",{children:"事实有来源"}),(0,i.jsx)("li",{children:"导出门禁通过"})]})})})]})}),(0,i.jsx)(j.A,{items:[{key:"prepare",label:e("guide.prepareTitle"),children:(0,i.jsx)(N,{children:e("guide.prepareContent")})},{key:"roles",label:e("guide.rolesTitle"),children:(0,i.jsx)(N,{children:e("guide.rolesContent")})},{key:"template",label:e("guide.templateTitle"),children:(0,i.jsx)(N,{children:e("guide.templateContent")})},{key:"generate",label:e("guide.generateTitle"),children:(0,i.jsx)(N,{children:e("guide.generateContent")})},{key:"qa",label:e("guide.qaTitle"),children:(0,i.jsx)(N,{children:e("guide.qaContent")})}]})]})}},34899:(e,s,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/guide",function(){return l(2548)}])}},e=>{e.O(0,[260,167,382,292,858,969,636,593,792],()=>e(e.s=34899)),_N_E=e.O()}]);