agent 模式补充文件功能已经实现
This commit is contained in:
+29
-37
@@ -9,6 +9,29 @@ import { ensureSession } from './utils.js';
|
||||
|
||||
export async function handleFiles(input) {
|
||||
const files = Array.from(input.files);
|
||||
const result = await _processFiles(files);
|
||||
|
||||
if (result.hasNewFiles && App.processState === 'done') {
|
||||
App.processState = 'idle';
|
||||
App.newFilenames = result.newFilenames;
|
||||
}
|
||||
if (result.hasNewFiles && App.processState === 'awaiting_supplement') {
|
||||
hideAgentRequest();
|
||||
await _uploadNewFiles(result.newFilenames);
|
||||
App.newFilenames = result.newFilenames;
|
||||
App.processState = 'idle';
|
||||
checkAutoStart();
|
||||
return;
|
||||
}
|
||||
|
||||
promptMissingConfig();
|
||||
input.value = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一文件处理逻辑(handleFiles 和拖拽共享)
|
||||
*/
|
||||
async function _processFiles(files) {
|
||||
const validExts = /\.(pdf|png|jpe?g|bmp|webp)$/i;
|
||||
let hasNewFiles = false;
|
||||
const newFilenames = [];
|
||||
@@ -28,21 +51,7 @@ export async function handleFiles(input) {
|
||||
}
|
||||
}
|
||||
|
||||
if (hasNewFiles && App.processState === 'done') {
|
||||
App.processState = 'idle';
|
||||
App.newFilenames = newFilenames;
|
||||
}
|
||||
if (hasNewFiles && App.processState === 'awaiting_supplement') {
|
||||
hideAgentRequest();
|
||||
await _uploadNewFiles(newFilenames);
|
||||
App.newFilenames = newFilenames;
|
||||
App.processState = 'idle';
|
||||
checkAutoStart();
|
||||
return;
|
||||
}
|
||||
|
||||
promptMissingConfig();
|
||||
input.value = '';
|
||||
return { hasNewFiles, newFilenames };
|
||||
}
|
||||
|
||||
async function _uploadNewFiles(filenames) {
|
||||
@@ -90,35 +99,18 @@ export function initDragDrop() {
|
||||
zone.addEventListener('drop', async e => {
|
||||
e.preventDefault();
|
||||
zone.classList.remove('dragover');
|
||||
const validExts = /\.(pdf|png|jpe?g|bmp|webp)$/i;
|
||||
const droppedFiles = Array.from(e.dataTransfer.files);
|
||||
let hasNewFiles = false;
|
||||
const newFilenames = [];
|
||||
const result = await _processFiles(droppedFiles);
|
||||
|
||||
for (const f of droppedFiles) {
|
||||
if (/\.json$/i.test(f.name)) {
|
||||
await parseConfigFile(f);
|
||||
continue;
|
||||
}
|
||||
if (validExts.test(f.name) && !App.allFiles.find(x => x.name === f.name)) {
|
||||
f.__source = 'local';
|
||||
App.allFiles.push(f);
|
||||
zone.classList.add('active');
|
||||
addFileMessage(f.name);
|
||||
hasNewFiles = true;
|
||||
newFilenames.push(f.name);
|
||||
}
|
||||
}
|
||||
|
||||
if (hasNewFiles && App.processState === 'done') {
|
||||
if (result.hasNewFiles && App.processState === 'done') {
|
||||
App.processState = 'idle';
|
||||
}
|
||||
|
||||
// 在 awaiting_supplement 状态下,只上传新文件并走 supplement 流程
|
||||
if (hasNewFiles && App.processState === 'awaiting_supplement') {
|
||||
if (result.hasNewFiles && App.processState === 'awaiting_supplement') {
|
||||
hideAgentRequest();
|
||||
await _uploadNewFiles(newFilenames);
|
||||
App.newFilenames = newFilenames;
|
||||
await _uploadNewFiles(result.newFilenames);
|
||||
App.newFilenames = result.newFilenames;
|
||||
App.processState = 'idle';
|
||||
checkAutoStart();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user