fix: harden live assistant interactions
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-15 07:05:55 +02:00
parent 06c86e91a0
commit 5be8f628ef
4 changed files with 19 additions and 2 deletions
+9 -2
View File
@@ -20,6 +20,13 @@ interface UseGeoAssistantOptions {
selectionBbox: VectorSelectionBBox | null
}
let assistantMessageSequence = 0
function nextAssistantMessageId(role: AssistantChatMessage['role']): string {
assistantMessageSequence += 1
return `${role}-${Date.now()}-${assistantMessageSequence}`
}
export function useGeoAssistant({ selectedProjectId, selectedAreaId, selectionBbox }: UseGeoAssistantOptions) {
const [status, setStatus] = useState<AssistantStatus | null>(null)
const [models, setModels] = useState<AssistantModelRead[]>([])
@@ -68,7 +75,7 @@ export function useGeoAssistant({ selectedProjectId, selectedAreaId, selectionBb
const ask = async (question: string): Promise<boolean> => {
const trimmed = question.trim()
if (!selectedProjectId || !trimmed || !selectedModel) return false
const userMessage: GeoAssistantMessage = { id: crypto.randomUUID(), role: 'user', content: trimmed }
const userMessage: GeoAssistantMessage = { id: nextAssistantMessageId('user'), role: 'user', content: trimmed }
setMessages((current) => [...current, userMessage])
setLoading(true)
setError(null)
@@ -83,7 +90,7 @@ export function useGeoAssistant({ selectedProjectId, selectedAreaId, selectionBb
})
setMessages((current) => [
...current,
{ id: crypto.randomUUID(), role: 'assistant', content: result.answer, response: result },
{ id: nextAssistantMessageId('assistant'), role: 'assistant', content: result.answer, response: result },
])
return true
} catch (requestError) {