mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 20:14:08 +00: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:
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
|
||||
Reference in New Issue
Block a user