feat: persist AI chat history, add search across it
Both chat panels (per-recipe and the general cooking assistant) previously kept messages in component state only — closing the sheet or reloading the page lost everything. Both POST routes now persist question+answer pairs to a new chat_messages table (recipeId null for the general assistant), and both panels load their own history back on open. New GET /api/v1/ai/chat-history (scoped by recipeId, or scope=general for the homepage assistant, or neither to search across everything) backs a new search control in both panels' header — debounced, shows matched messages with date and (when searching across everything) which recipe they belonged to. Verified locally: asked a real question, closed and reopened the panel and confirmed the conversation reloaded, then searched a keyword from that conversation and confirmed both the question and answer surfaced in the results dropdown.
This commit is contained in:
@@ -388,6 +388,13 @@
|
||||
"inputPlaceholder": "Ask a question…",
|
||||
"send": "Send message"
|
||||
},
|
||||
"chatHistory": {
|
||||
"searchAriaLabel": "Search chat history",
|
||||
"searchPlaceholder": "Search past questions…",
|
||||
"searching": "Searching…",
|
||||
"noResults": "No matching messages",
|
||||
"close": "Close"
|
||||
},
|
||||
"cookingChat": {
|
||||
"sorry": "Sorry, I couldn't answer that.",
|
||||
"error": "Something went wrong. Please try again.",
|
||||
@@ -1147,6 +1154,9 @@
|
||||
"lastUsedOn": "Last used {date}",
|
||||
"neverUsed": "Never used",
|
||||
"revoke": "Revoke",
|
||||
"apiKeyScopeFull": "Full access",
|
||||
"apiKeyScopeRead": "Read-only",
|
||||
"apiKeyScopeHelp": "Read-only keys can only make GET requests — they can't create, edit, or delete anything.",
|
||||
"webhookUrlPlaceholder": "https://example.com/webhook",
|
||||
"webhookAdding": "Adding…",
|
||||
"webhookAddButton": "Add webhook",
|
||||
|
||||
Reference in New Issue
Block a user