mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-06 14:05:20 +02:00
Add API v1 chat endpoints
- Add chats#index and chats#show endpoints to list and view AI conversations - Add messages#create endpoint to send messages to AI chats - Include API documentation for chat endpoints - Add controller tests for new endpoints 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4d3c710291
commit
94202b2a6b
11 changed files with 698 additions and 0 deletions
7
app/views/api/v1/chats/_chat.json.jbuilder
Normal file
7
app/views/api/v1/chats/_chat.json.jbuilder
Normal file
|
@ -0,0 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
json.id chat.id
|
||||
json.title chat.title
|
||||
json.error chat.error.present? ? chat.error : nil
|
||||
json.created_at chat.created_at.iso8601
|
||||
json.updated_at chat.updated_at.iso8601
|
18
app/views/api/v1/chats/index.json.jbuilder
Normal file
18
app/views/api/v1/chats/index.json.jbuilder
Normal file
|
@ -0,0 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
json.chats @chats do |chat|
|
||||
json.id chat.id
|
||||
json.title chat.title
|
||||
json.last_message_at chat.messages.ordered.first&.created_at&.iso8601
|
||||
json.message_count chat.messages.count
|
||||
json.error chat.error.present? ? chat.error : nil
|
||||
json.created_at chat.created_at.iso8601
|
||||
json.updated_at chat.updated_at.iso8601
|
||||
end
|
||||
|
||||
json.pagination do
|
||||
json.page @pagy.page
|
||||
json.per_page @pagy.vars[:items]
|
||||
json.total_count @pagy.count
|
||||
json.total_pages @pagy.pages
|
||||
end
|
33
app/views/api/v1/chats/show.json.jbuilder
Normal file
33
app/views/api/v1/chats/show.json.jbuilder
Normal file
|
@ -0,0 +1,33 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
json.partial! "chat", chat: @chat
|
||||
|
||||
json.messages @messages do |message|
|
||||
json.id message.id
|
||||
json.type message.type.underscore
|
||||
json.role message.role
|
||||
json.content message.content
|
||||
json.model message.ai_model if message.type == "AssistantMessage"
|
||||
json.created_at message.created_at.iso8601
|
||||
json.updated_at message.updated_at.iso8601
|
||||
|
||||
# Include tool calls for assistant messages
|
||||
if message.type == "AssistantMessage" && message.tool_calls.any?
|
||||
json.tool_calls message.tool_calls do |tool_call|
|
||||
json.id tool_call.id
|
||||
json.function_name tool_call.function_name
|
||||
json.function_arguments tool_call.function_arguments
|
||||
json.function_result tool_call.function_result
|
||||
json.created_at tool_call.created_at.iso8601
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if @pagy
|
||||
json.pagination do
|
||||
json.page @pagy.page
|
||||
json.per_page @pagy.vars[:items]
|
||||
json.total_count @pagy.count
|
||||
json.total_pages @pagy.pages
|
||||
end
|
||||
end
|
16
app/views/api/v1/messages/show.json.jbuilder
Normal file
16
app/views/api/v1/messages/show.json.jbuilder
Normal file
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
json.id @message.id
|
||||
json.chat_id @message.chat_id
|
||||
json.type @message.type.underscore
|
||||
json.role @message.role
|
||||
json.content @message.content
|
||||
json.model @message.ai_model if @message.type == "AssistantMessage"
|
||||
json.created_at @message.created_at.iso8601
|
||||
json.updated_at @message.updated_at.iso8601
|
||||
|
||||
# Note: AI response will be processed asynchronously
|
||||
if @message.type == "UserMessage"
|
||||
json.ai_response_status "pending"
|
||||
json.ai_response_message "AI response is being generated"
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue