(suggestedQuery: string)
| 360 | } |
| 361 | |
| 362 | const handleSuggestedQuery = (suggestedQuery: string) => { |
| 363 | try { |
| 364 | if (!suggestedQuery || typeof suggestedQuery !== "string") { |
| 365 | console.error("Invalid suggested query:", suggestedQuery) |
| 366 | return |
| 367 | } |
| 368 | |
| 369 | // 设置查询内容(用于显示在输入框中) |
| 370 | setQuery(suggestedQuery) |
| 371 | |
| 372 | // 重置文本框高度 |
| 373 | resetTextareaHeight() |
| 374 | |
| 375 | // 使用预设的查询内容直接提交,而不是依赖表单 |
| 376 | if (!isStreaming && !isExtractingInfo && !isUpdatingMap) { |
| 377 | // 添加用户消息 |
| 378 | const userMessageId = generateId() |
| 379 | const userMessage: Message = { |
| 380 | id: userMessageId, |
| 381 | role: "user", |
| 382 | content: suggestedQuery, |
| 383 | } |
| 384 | |
| 385 | // 创建助手的初始加载消息 |
| 386 | const assistantMessageId = generateId() |
| 387 | const assistantMessage: Message = { |
| 388 | id: assistantMessageId, |
| 389 | role: "assistant", |
| 390 | content: "", |
| 391 | isLoading: true, |
| 392 | } |
| 393 | |
| 394 | // 添加消息到对话中 |
| 395 | setMessages((prev) => [...prev, userMessage, assistantMessage]) |
| 396 | |
| 397 | // 清空输入 |
| 398 | setQuery("") |
| 399 | |
| 400 | // 滚动到底部 |
| 401 | setTimeout(scrollToBottom, 100) |
| 402 | |
| 403 | // 开始生成回复 |
| 404 | handleGenerateResponse(suggestedQuery, userMessageId, assistantMessageId) |
| 405 | } |
| 406 | } catch (error) { |
| 407 | console.error("Error in handleSuggestedQuery:", error) |
| 408 | toast({ |
| 409 | title: "错误", |
| 410 | description: "处理建议的查询时出错。", |
| 411 | variant: "destructive", |
| 412 | }) |
| 413 | } |
| 414 | } |
| 415 | |
| 416 | const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => { |
| 417 | // 如果按下Enter键且没有按住Shift键,则提交表单 |
nothing calls this directly
no test coverage detected