34 KiB
GoChat vs Chatwoot 路由对比分析报告
生成日期: 2026-05-24 对比源: GoChat
internal/router/router.go+ Chatwootconfig/routes.rb(v3.x, 717行)
1. 总览
| 类别 | Chatwoot 路由数 | GoChat 路由数 | 差距 |
|---|---|---|---|
| Auth (含MFA/SAML/OAuth) | ~15 | 11 | -4 |
| Account | ~8 | 5 | -3 |
| Agent/AgentBots | ~8 | 0 | 完全缺失 |
| Inbox (含渠道特殊操作) | ~15 | 5 | -10 |
| Conversation (含消息/子资源) | ~20 | 9 | -11 |
| Contact (含子资源) | ~15 | 6 | -9 |
| Message | ~6 | 3 | -3 |
| Team | ~8 | 8 | 0 |
| Captain/Copilot | ~25 | 21 | -4 |
| Reporting/Analytics | ~18 | 8 | -10 |
| Dashboard Apps | 5 | 5 | 0 |
| Platform API | ~12 | 5 | -7 |
| Widget API | ~12 | 5 | -7(全是stub) |
| Webhook callbacks | ~10 | 1(stub) | -9 |
| 新增模块(完全缺失) | 多个 | 0 | 详见§2 |
2. GoChat完全缺失的API模块/路由
以下模块在Chatwoot routes.rb中有完整路由,但GoChat连路由都没注册:
2.1 🔴 Agent/AgentBot 模块(8+路由缺失)
Chatwoot:
POST /api/v1/accounts/:id/agents # 创建agent
GET /api/v1/accounts/:id/agents # 列出agents
PATCH /api/v1/accounts/:id/agents/:id # 更新agent
DELETE /api/v1/accounts/:id/agents/:id # 删除agent
POST /api/v1/accounts/:id/agents/bulk_create # 批量创建
GET /api/v1/accounts/:id/agent_bots # agent bot CRUD
POST /api/v1/accounts/:id/agent_bots
GET /api/v1/accounts/:id/agent_bots/:id
PATCH /api/v1/accounts/:id/agent_bots/:id
DELETE /api/v1/accounts/:id/agent_bots/:id
DELETE /api/v1/accounts/:id/agent_bots/:id/avatar # 删除bot头像
POST /api/v1/accounts/:id/agent_bots/:id/reset_access_token
POST /api/v1/accounts/:id/agent_bots/:id/reset_secret
GET /api/v1/accounts/:id/assignable_agents # 可分配agent列表
GoChat: 无任何路由
2.2 🔴 Canned Responses(快捷回复)(4路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/canned_responses
POST /api/v1/accounts/:id/canned_responses
PATCH /api/v1/accounts/:id/canned_responses/:id
DELETE /api/v1/accounts/:id/canned_responses/:id
GoChat: 无路由
2.3 🔴 Automation Rules(自动化规则)(6路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/automation_rules
POST /api/v1/accounts/:id/automation_rules
GET /api/v1/accounts/:id/automation_rules/:id
PATCH /api/v1/accounts/:id/automation_rules/:id
DELETE /api/v1/accounts/:id/automation_rules/:id
POST /api/v1/accounts/:id/automation_rules/:id/clone
GoChat: 无路由
2.4 🔴 Macros(宏操作)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/macros
POST /api/v1/accounts/:id/macros
GET /api/v1/accounts/:id/macros/:id
PATCH /api/v1/accounts/:id/macros/:id
DELETE /api/v1/accounts/:id/macros/:id
POST /api/v1/accounts/:id/macros/:id/execute
GoChat: 无路由
2.5 🔴 SLA Policies(服务等级协议)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/sla_policies
POST /api/v1/accounts/:id/sla_policies
GET /api/v1/accounts/:id/sla_policies/:id
PATCH /api/v1/accounts/:id/sla_policies/:id
DELETE /api/v1/accounts/:id/sla_policies/:id
GoChat: 无路由
2.6 🔴 Custom Roles(自定义角色)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/custom_roles
POST /api/v1/accounts/:id/custom_roles
GET /api/v1/accounts/:id/custom_roles/:id
PATCH /api/v1/accounts/:id/custom_roles/:id
DELETE /api/v1/accounts/:id/custom_roles/:id
GoChat: 无路由(虽然API_COVERAGE_REPORT.md声称100%,但路由文件中未注册)
2.7 🔴 Agent Capacity Policies(agent容量策略)(7+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/agent_capacity_policies
POST /api/v1/accounts/:id/agent_capacity_policies
GET /api/v1/accounts/:id/agent_capacity_policies/:id
PATCH /api/v1/accounts/:id/agent_capacity_policies/:id
DELETE /api/v1/accounts/:id/agent_capacity_policies/:id
GET /api/v1/accounts/:id/agent_capacity_policies/:id/users
POST /api/v1/accounts/:id/agent_capacity_policies/:id/users
DELETE /api/v1/accounts/:id/agent_capacity_policies/:id/users/:id
POST /api/v1/accounts/:id/agent_capacity_policies/:id/inbox_limits
PATCH /api/v1/accounts/:id/agent_capacity_policies/:id/inbox_limits/:id
DELETE /api/v1/accounts/:id/agent_capacity_policies/:id/inbox_limits/:id
GoChat: 无路由
2.8 🔴 Assignment Policies(分配策略V2)(5+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/assignment_policies
POST /api/v1/accounts/:id/assignment_policies
GET /api/v1/accounts/:id/assignment_policies/:id
PATCH /api/v1/accounts/:id/assignment_policies/:id
DELETE /api/v1/accounts/:id/assignment_policies/:id
GET /api/v1/accounts/:id/assignment_policies/:id/inboxes
POST /api/v1/accounts/:id/assignment_policies/:id/inboxes
DELETE /api/v1/accounts/:id/assignment_policies/:id/inboxes/:id
GET /api/v1/accounts/:id/inboxes/:id/assignment_policy
POST /api/v1/accounts/:id/inboxes/:id/assignment_policy
DELETE /api/v1/accounts/:id/inboxes/:id/assignment_policy
GoChat: 无路由
2.9 🔴 Campaigns(营销活动)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/campaigns
POST /api/v1/accounts/:id/campaigns
GET /api/v1/accounts/:id/campaigns/:id
PATCH /api/v1/accounts/:id/campaigns/:id
DELETE /api/v1/accounts/:id/campaigns/:id
GoChat: 无路由
2.10 🔴 Search(全文搜索)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/search
GET /api/v1/accounts/:id/search/conversations
GET /api/v1/accounts/:id/search/messages
GET /api/v1/accounts/:id/search/contacts
GET /api/v1/accounts/:id/search/articles
GoChat: 无路由(Contact.Search只覆盖contact搜索)
2.11 🔴 Companies(公司/企业客户)(10+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/companies
POST /api/v1/accounts/:id/companies
GET /api/v1/accounts/:id/companies/:id
PATCH /api/v1/accounts/:id/companies/:id
DELETE /api/v1/accounts/:id/companies/:id
GET /api/v1/accounts/:id/companies/search
POST /api/v1/accounts/:id/companies/:id/destroy_custom_attributes
DELETE /api/v1/accounts/:id/companies/:id/avatar
GET /api/v1/accounts/:id/companies/:id/contacts
GET /api/v1/accounts/:id/companies/:id/contacts/search
POST /api/v1/accounts/:id/companies/:id/contacts
DELETE /api/v1/accounts/:id/companies/:id/contacts/:id
GET /api/v1/accounts/:id/companies/:id/conversations
GET /api/v1/accounts/:id/companies/:id/notes
GoChat: 无路由
2.12 🔴 CSAT Survey Responses(满意度调查)(4+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/csat_survey_responses
GET /api/v1/accounts/:id/csat_survey_responses/metrics
GET /api/v1/accounts/:id/csat_survey_responses/download
PATCH /api/v1/accounts/:id/csat_survey_responses/:id (enterprise)
GoChat: 无路由
2.13 🔴 Applied SLAs(SLA应用追踪)(3路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/applied_slas
GET /api/v1/accounts/:id/applied_slas/metrics
GET /api/v1/accounts/:id/applied_slas/download
GoChat: 无路由
2.14 🔴 Custom Attribute Definitions(自定义属性定义)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/custom_attribute_definitions
POST /api/v1/accounts/:id/custom_attribute_definitions
GET /api/v1/accounts/:id/custom_attribute_definitions/:id
PATCH /api/v1/accounts/:id/custom_attribute_definitions/:id
DELETE /api/v1/accounts/:id/custom_attribute_definitions/:id
GoChat: 无路由
2.15 🔴 Custom Filters(自定义过滤器)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/custom_filters
POST /api/v1/accounts/:id/custom_filters
GET /api/v1/accounts/:id/custom_filters/:id
PATCH /api/v1/accounts/:id/custom_filters/:id
DELETE /api/v1/accounts/:id/custom_filters/:id
GoChat: 无路由
2.16 🔴 Labels(标签管理)(5路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/labels
POST /api/v1/accounts/:id/labels
GET /api/v1/accounts/:id/labels/:id
PATCH /api/v1/accounts/:id/labels/:id
DELETE /api/v1/accounts/:id/labels/:id
GoChat: 无独立路由(只在conversation下有UpdateLabels)
2.17 🔴 Webhooks(用户级webhook管理)(4路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/webhooks
POST /api/v1/accounts/:id/webhooks
PATCH /api/v1/accounts/:id/webhooks/:id
DELETE /api/v1/accounts/:id/webhooks/:id
GoChat: 无路由(只有webhook callback stub)
2.18 🔴 Integrations(集成应用)(15+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/integrations/apps
GET /api/v1/accounts/:id/integrations/apps/:id
GET /api/v1/accounts/:id/integrations/hooks/:id
POST /api/v1/accounts/:id/integrations/hooks
PATCH /api/v1/accounts/:id/integrations/hooks/:id
DELETE /api/v1/accounts/:id/integrations/hooks/:id
POST /api/v1/accounts/:id/integrations/hooks/:id/process_event
# Slack集成
POST /api/v1/accounts/:id/integrations/slack
PATCH /api/v1/accounts/:id/integrations/slack
DELETE /api/v1/accounts/:id/integrations/slack
GET /api/v1/accounts/:id/integrations/slack/list_all_channels
# Dyte视频会议集成
POST /api/v1/accounts/:id/integrations/dyte/create_a_meeting
POST /api/v1/accounts/:id/integrations/dyte/add_participant_to_meeting
# Shopify集成
DELETE /api/v1/accounts/:id/integrations/shopify
POST /api/v1/accounts/:id/integrations/shopify/auth
GET /api/v1/accounts/:id/integrations/shopify/orders
# Linear集成
DELETE /api/v1/accounts/:id/integrations/linear
GET /api/v1/accounts/:id/integrations/linear/teams
GET /api/v1/accounts/:id/integrations/linear/team_entities
POST /api/v1/accounts/:id/integrations/linear/create_issue
POST /api/v1/accounts/:id/integrations/linear/link_issue
POST /api/v1/accounts/:id/integrations/linear/unlink_issue
GET /api/v1/accounts/:id/integrations/linear/search_issue
GET /api/v1/accounts/:id/integrations/linear/linked_issues
# Notion集成
DELETE /api/v1/accounts/:id/integrations/notion
GoChat: 无路由
2.19 🔴 Help Center / Portals(知识库门户)(20+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/portals
POST /api/v1/accounts/:id/portals
GET /api/v1/accounts/:id/portals/:id
PATCH /api/v1/accounts/:id/portals/:id
DELETE /api/v1/accounts/:id/portals/:id
PATCH /api/v1/accounts/:id/portals/:id/archive
DELETE /api/v1/accounts/:id/portals/:id/logo
POST /api/v1/accounts/:id/portals/:id/send_instructions
GET /api/v1/accounts/:id/portals/:id/ssl_status
GET /api/v1/accounts/:id/portals/:id/categories
POST /api/v1/accounts/:id/portals/:id/categories
GET /api/v1/accounts/:id/portals/:id/categories/:id
PATCH /api/v1/accounts/:id/portals/:id/categories/:id
DELETE /api/v1/accounts/:id/portals/:id/categories/:id
POST /api/v1/accounts/:id/portals/:id/categories/reorder
GET /api/v1/accounts/:id/portals/:id/articles
POST /api/v1/accounts/:id/portals/:id/articles
GET /api/v1/accounts/:id/portals/:id/articles/:id
PATCH /api/v1/accounts/:id/portals/:id/articles/:id
DELETE /api/v1/accounts/:id/portals/:id/articles/:id
POST /api/v1/accounts/:id/portals/:id/articles/reorder
POST /api/v1/accounts/:id/portals/:id/articles/bulk_actions/translate
PATCH /api/v1/accounts/:id/portals/:id/articles/bulk_actions/update_status
DELETE /api/v1/accounts/:id/portals/:id/articles/bulk_actions/delete_articles
GoChat: 无路由
2.20 🔴 Bulk Actions(批量操作)(2路由缺失)
Chatwoot:
POST /api/v1/accounts/:id/actions/contact_merge # 合并联系人
POST /api/v1/accounts/:id/bulk_actions # 批量操作
GoChat: 无路由
2.21 🔴 Channel OAuth 授权路由(6路由缺失)
Chatwoot:
POST /api/v1/accounts/:id/twitter/authorization
POST /api/v1/accounts/:id/microsoft/authorization
POST /api/v1/accounts/:id/google/authorization
POST /api/v1/accounts/:id/instagram/authorization
POST /api/v1/accounts/:id/tiktok/authorization
POST /api/v1/accounts/:id/notion/authorization
POST /api/v1/accounts/:id/whatsapp/authorization
GoChat: 无路由
2.22 🔴 Inbox Members(收件箱成员管理)(4路由缺失)
Chatwoot:
POST /api/v1/accounts/:id/inbox_members
GET /api/v1/accounts/:id/inbox_members/:inbox_id
DELETE /api/v1/accounts/:id/inbox_members (collection)
PATCH /api/v1/accounts/:id/inbox_members (collection)
GoChat: 无路由
2.23 🔴 Upload / Direct Upload(文件上传)(2路由缺失)
Chatwoot:
POST /api/v1/accounts/:id/upload # account级文件上传
POST /api/v1/widget/direct_uploads # widget级文件上传
GoChat: 无路由
2.24 🔴 Notification Subscriptions(推送订阅)(2路由缺失)
Chatwoot:
POST /api/v1/notification_subscriptions # 创建推送订阅
DELETE /api/v1/notification_subscriptions # 删除推送订阅
GoChat: 无路由
2.25 🔴 Audit Logs(审计日志)(1路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/audit_logs
GoChat: 无路由
2.26 🔴 Reporting Events(事件报告,Enterprise)(1+路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/reporting_events (enterprise)
GET /api/v1/accounts/:id/conversations/:id/reporting_events (enterprise)
GoChat: 无路由
2.27 🔴 SAML Settings(SAML配置管理,企业版)(4路由缺失)
Chatwoot:
GET /api/v1/accounts/:id/saml_settings
POST /api/v1/accounts/:id/saml_settings
PATCH /api/v1/accounts/:id/saml_settings
DELETE /api/v1/accounts/:id/saml_settings
GoChat: 无路由(只有全局SAML认证端点,缺少account级配置管理)
2.28 🔴 API V2 Routes(新版API)(大量路由缺失)
Chatwoot有完整的API V2 namespace,包括更完善的报告和指标端点:
GET /api/v2/accounts/:id/summary_reports/agent
GET /api/v2/accounts/:id/summary_reports/team
GET /api/v2/accounts/:id/summary_reports/inbox
GET /api/v2/accounts/:id/summary_reports/label
GET /api/v2/accounts/:id/summary_reports/channel
GET /api/v2/accounts/:id/reports/summary
GET /api/v2/accounts/:id/reports/bot_summary
GET /api/v2/accounts/:id/reports/agents
GET /api/v2/accounts/:id/reports/inboxes
GET /api/v2/accounts/:id/reports/labels
GET /api/v2/accounts/:id/reports/teams
GET /api/v2/accounts/:id/reports/conversations
GET /api/v2/accounts/:id/reports/conversations_summary
GET /api/v2/accounts/:id/reports/conversation_traffic
GET /api/v2/accounts/:id/reports/bot_metrics
GET /api/v2/accounts/:id/reports/inbox_label_matrix
GET /api/v2/accounts/:id/reports/first_response_time_distribution
GET /api/v2/accounts/:id/reports/outgoing_messages_count
GET /api/v2/accounts/:id/year_in_review
GET /api/v2/accounts/:id/live_reports/conversation_metrics
GET /api/v2/accounts/:id/live_reports/grouped_conversation_metrics
GoChat: 无V2路由
2.29 🔴 Enterprise API(付费版专属路由)(6路由缺失)
Chatwoot:
POST /api/v1/enterprise/accounts/:id/checkout
POST /api/v1/enterprise/accounts/:id/subscription
GET /api/v1/enterprise/accounts/:id/limits
POST /api/v1/enterprise/accounts/:id/toggle_deletion
POST /api/v1/enterprise/accounts/:id/topup_checkout
POST /webhooks/stripe
POST /webhooks/firecrawl
GoChat: 无路由(如果定位自托管版可不实现)
2.30 🔴 Platform API扩展路由(7路由缺失)
Chatwoot Platform API:
GET /platform/api/v1/users
POST /platform/api/v1/users
GET /platform/api/v1/users/:id
PATCH /platform/api/v1/users/:id
DELETE /platform/api/v1/users/:id
GET /platform/api/v1/users/:id/login
POST /platform/api/v1/users/:id/token
GET /platform/api/v1/agent_bots
POST /platform/api/v1/agent_bots
GET /platform/api/v1/agent_bots/:id
PATCH /platform/api/v1/agent_bots/:id
DELETE /platform/api/v1/agent_bots/:id
DELETE /platform/api/v1/agent_bots/:id/avatar
GET /platform/api/v1/accounts
POST /platform/api/v1/accounts
GET /platform/api/v1/accounts/:id
PATCH /platform/api/v1/accounts/:id
DELETE /platform/api/v1/accounts/:id
GET /platform/api/v1/accounts/:id/account_users
POST /platform/api/v1/accounts/:id/account_users
DELETE /platform/api/v1/accounts/:id/account_users (collection)
POST /platform/api/v1/accounts/:id/email_channel_migrations
GoChat: 只有PlatformApp CRUD(5路由),缺失Users/AgentBots/AccountUsers/EmailChannelMigrations
2.31 🔴 Public API(联系人暴露API)(10+路由缺失)
Chatwoot:
GET /public/api/v1/inboxes
GET /public/api/v1/inboxes/:id/contacts
POST /public/api/v1/inboxes/:id/contacts
GET /public/api/v1/inboxes/:id/contacts/:id
PATCH /public/api/v1/inboxes/:id/contacts/:id
GET /public/api/v1/inboxes/:id/contacts/:id/conversations
POST /public/api/v1/inboxes/:id/contacts/:id/conversations
GET /public/api/v1/inboxes/:id/contacts/:id/conversations/:id
POST /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/toggle_status
POST /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/toggle_typing
POST /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/update_last_seen
GET /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/messages
POST /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/messages
PATCH /public/api/v1/inboxes/:id/contacts/:id/conversations/:id/messages/:id
GET /public/api/v1/csat_survey/:id
PATCH /public/api/v1/csat_survey/:id
GoChat: 无Public API namespace
3. GoChat有路由但Handler是Stub/Placeholder的
3.1 Account Handler(3个stub)
| 路由 | 状态 |
|---|---|
| GET /accounts/:id | ⚠️ placeholder响应 |
| POST /accounts | ⚠️ placeholder响应 |
| GET /accounts/ | ⚠️ placeholder响应 |
3.2 Contact Handler(5个stub)
| 路由 | 状态 |
|---|---|
| GET /contacts/:contact_id | ⚠️ placeholder |
| POST /contacts | ⚠️ placeholder |
| GET /contacts/search | ⚠️ 501 Not Implemented |
| PUT /contacts/:contact_id | ⚠️ 501 Not Implemented |
| DELETE /contacts/:contact_id | ⚠️ 501 Not Implemented |
3.3 Conversation Handler(6个stub)
| 路由 | 状态 |
|---|---|
| GET /conversations/:id | ⚠️ placeholder |
| POST /conversations | ⚠️ placeholder |
| PATCH /conversations/:id | ⚠️ 501 Not Implemented |
| POST /conversations/:id/assign | ⚠️ 501 Not Implemented |
| POST /conversations/:id/toggle_status | ⚠️ 501 Not Implemented |
| PATCH /conversations/:id/labels | ⚠️ 501 Not Implemented |
| GET /conversations/:conversation_id/messages | ⚠️ placeholder |
3.4 Inbox Handler(4个stub)
| 路由 | 状态 |
|---|---|
| GET /inboxes/:inbox_id | ⚠️ placeholder |
| POST /inboxes | ⚠️ placeholder |
| PUT /inboxes/:inbox_id | ⚠️ 501 Not Implemented |
| DELETE /inboxes/:inbox_id | ⚠️ 501 Not Implemented |
3.5 Message Handler(2个stub)
| 路由 | 状态 |
|---|---|
| POST /messages | ⚠️ placeholder |
| GET /messages/:id | ⚠️ 501 Not Implemented |
3.6 Platform Handler(1个stub)
| 路由 | 状态 |
|---|---|
| DELETE /platform/api/v1/apps/:id | ⚠️ stub |
3.7 Profile Handler(1个stub)
| 路由 | 状态 |
|---|---|
| GET /profile | ⚠️ placeholder("Should fetch from user_repo, but placeholder until integrated") |
3.8 Widget API(全部5个stub)
| 路由 | 状态 |
|---|---|
| POST /widget/init | ⚠️ placeholder (P9) |
| POST /widget/contact | ⚠️ placeholder (P9) |
| GET /widget/conversations | ⚠️ placeholder (P9) |
| POST /widget/messages | ⚠️ placeholder (P9) |
| GET /widget/cable_token | ⚠️ placeholder (P9) |
3.9 Webhook Callback(1个stub覆盖所有)
| 路由 | 状态 |
|---|---|
| /webhooks/:channel_type/:identifier (Any method) | ⚠️ placeholder (P7) |
4. Chatwoot有路由但GoChat已简化合并的(设计性差距)
这些不是"缺失",而是GoChat有意简化合并的设计决策:
4.1 Conversation子操作合并
Chatwoot把对话操作拆成多个独立POST动作,GoChat合并为PATCH更新:
Chatwoot:
POST /conversations/:id/mute → GoChat: PATCH /conversations/:id (body: {muted: true})
POST /conversations/:id/unmute → 同上
POST /conversations/:id/transcript → GoChat: 缺失(需邮件发送对话记录)
POST /conversations/:id/toggle_priority → GoChat: 缺失
POST /conversations/:id/toggle_typing_status → GoChat: 缺失
POST /conversations/:id/update_last_seen → GoChat: 缺失
POST /conversations/:id/unread → GoChat: 缺失
POST /conversations/:id/custom_attributes → GoChat: 缺失
GET /conversations/:id/attachments → GoChat: 缺失
4.2 Contact子资源缺失
Chatwoot:
GET /contacts/:id/contactable_inboxes → GoChat: 缺失
POST /contacts/:id/destroy_custom_attributes → GoChat: 缺失
DELETE /contacts/:id/avatar → GoChat: 缺失
GET /contacts/active → GoChat: 缺失(只有list和search)
POST /contacts/filter → GoChat: 缺失
POST /contacts/import → GoChat: 缺失
POST /contacts/export → GoChat: 缺失
GET /contacts/:id/conversations → GoChat: 缺失
POST /contacts/:id/contact_inboxes → GoChat: 缺失
GET /contacts/:id/labels → GoChat: 缺失
GET /contacts/:id/notes → GoChat: 缺失
GET /contacts/:id/attachments → GoChat: 缺失
4.3 Inbox扩展操作缺失
Chatwoot:
GET /inboxes/:id/assignable_agents → GoChat: 缺失
GET /inboxes/:id/campaigns → GoChat: 缺失
GET /inboxes/:id/agent_bot → GoChat: 缺失
POST /inboxes/:id/set_agent_bot → GoChat: 缺失
DELETE /inboxes/:id/avatar → GoChat: 缺失
POST /inboxes/:id/sync_templates → GoChat: 缺失
GET /inboxes/:id/health → GoChat: 缺失
POST /inboxes/:id/register_webhook → GoChat: 缺失
POST /inboxes/:id/reset_secret → GoChat: 缺失
4.4 Message扩展操作缺失
Chatwoot:
DELETE /messages/:id → GoChat: 缺失
PATCH /messages/:id → GoChat: 缺失(消息更新/编辑)
POST /messages/:id/translate → GoChat: 缺失
POST /messages/:id/retry → GoChat: 缺失
4.5 Profile扩展操作缺失
Chatwoot:
POST /profile/availability → GoChat: 有(UpdateAvailability)
POST /profile/auto_offline → GoChat: 缺失
PUT /profile/set_active_account → GoChat: 缺失
POST /profile/resend_confirmation → GoChat: 缺失
POST /profile/reset_access_token → GoChat: 缺失
4.6 Captain模块差异
Chatwoot有但GoChat缺失的Captain路由:
POST /captain/assistants/:id/playground → GoChat: 缺失
GET /captain/assistants/tools → GoChat: 缺失(assistant可用工具列表)
GET /captain/assistant_responses → GoChat: 缺失
POST /captain/bulk_actions → GoChat: 缺失
POST /captain/custom_tools/test → GoChat: 缺失
POST /captain/documents/:id/sync → GoChat: 缺失
Chatwoot Copilot任务路由(GoChat部分缺失):
POST /captain/tasks/rewrite → GoChat: 缺失(但有suggest_replies/summarize/translate)
POST /captain/tasks/label_suggestion → GoChat: 缺失
POST /captain/tasks/follow_up → GoChat: 缺失
4.7 Notification扩展缺失
Chatwoot:
POST /notifications/:id/snooze → GoChat: 缺失
POST /notifications/:id/unread → GoChat: 缺失
POST /notifications/destroy_all → GoChat: 缺失(批量删除)
5. 优先级建议(按影响程度排序)
P0 — 核心业务功能缺失(必须实现)
- Conversation扩展操作 — mute/unmute/transcript/toggle_priority/toggle_typing/update_last_seen/unread/attachments/custom_attributes 是对话管理核心
- Message CRUD完善 — 更新/删除/翻译/重试是消息操作基础
- Contact子资源 — contactable_inboxes/conversations/notes/labels/import/export 是CRM核心
- Inbox扩展操作 — assignable_agents/agent_bot/sync_templates/health 是收件箱管理基础
- Agent/AgentBot模块 — agent分配是客服系统核心功能
- Assignable Agents — 获取可分配agent列表是分配功能的前置
P1 — 重要业务功能缺失(应优先实现)
- Canned Responses — 快捷回复是客服效率关键
- Automation Rules — 自动化规则是运营效率核心
- Labels独立管理 — 标签CRUD是分类管理基础
- Search全文搜索 — 跨模块搜索是效率关键
- CSAT Survey — 满意度度量是客服质量核心
- Webhooks用户管理 — webhook CRUD是集成基础
- Inbox Members — 收件箱成员管理是团队协作基础
- Contact active/filter — 活跃联系人和高级过滤是列表管理关键
P2 — 增值功能缺失(可后续实现)
- Macros — 宏操作是高级效率工具
- SLA Policies — SLA是企业版核心
- Custom Roles — 自定义角色是权限管理关键
- Agent Capacity Policies — 容量策略是负载管理
- Assignment Policies V2 — 分配策略是高级路由
- Campaigns — 营销活动是增值功能
- Companies — 公司/企业客户是B2B功能
- Custom Attributes — 自定义属性是扩展能力
- Custom Filters — 自定义过滤器是UI过滤
- Audit Logs — 审计日志是企业合规
- Upload — 文件上传是基础功能
P3 — 长期功能(可规划实现)
- Help Center/Portals — 知识库是大型功能
- Integrations全套 — Slack/Dyte/Shopify/Linear/Notion等
- Channel OAuth — Twitter/Microsoft/Google/Instagram/TikTok/Notion/WhatsApp授权
- API V2 — 新版API
- Public API — 外部暴露API
- Platform API扩展 — Users/AgentBots/AccountUsers
- Enterprise API — 付费版特有
- Reporting Events — 企业版事件报告
6. Stub Handler完善优先级
需要从placeholder/stub升级为真正实现的handler(按业务优先级排序):
| Handler | Stub数 | 优先级 |
|---|---|---|
| Conversation | 6 | P0 |
| Contact | 5 | P0 |
| Inbox | 4 | P0 |
| Message | 2 | P0 |
| Account | 3 | P1 |
| Widget (全部) | 5 | P1 |
| Profile | 1 | P2 |
| Platform | 1 | P3 |
7. 完整GoChat路由清单(106个)
Auth Routes (11)
POST /api/v1/auth/login
POST /api/v1/auth/login/mfa
POST /api/v1/auth/register
POST /api/v1/auth/refresh
DELETE /api/v1/auth/logout
POST /api/v1/auth/switch_account
POST /api/v1/auth/reset_password
GET /api/v1/auth/confirm_email
GET /api/v1/auth/oauth/authorize
POST /api/v1/auth/oauth/callback
MFA Routes (4)
POST /api/v1/auth/mfa/enable
POST /api/v1/auth/mfa/verify
POST /api/v1/auth/mfa/disable
GET /api/v1/auth/mfa/status
SAML Routes (3)
GET /api/v1/saml/metadata
GET /api/v1/saml/login
POST /api/v1/saml/acs
Profile Routes (5)
GET /api/v1/profile
PUT /api/v1/profile
PUT /api/v1/profile/avatar
DELETE /api/v1/profile/avatar (注: 路由文件中无此路由, handler中有DeleteAvatar)
POST /api/v1/profile/availability (注: 路由文件中无此路由, handler中有UpdateAvailability)
⚠️ 路由文件缺少 DELETE /profile/avatar 和 POST /profile/availability 路由注册
Notification Routes (11)
GET /api/v1/notifications
GET /api/v1/notifications/unread_count
POST /api/v1/notifications/read_all
POST /api/v1/notifications/:id/read
PUT /api/v1/notifications/:id
DELETE /api/v1/notifications/:id
GET /api/v1/accounts/:id/notification_settings
PUT /api/v1/accounts/:id/notification_settings
Account Routes (7)
GET /api/v1/accounts/
POST /api/v1/accounts/
GET /api/v1/accounts/:id
PUT /api/v1/accounts/:id
DELETE /api/v1/accounts/:id
GET /api/v1/accounts/:id/platform_apps
POST /api/v1/accounts/:id/platform_apps
Inbox Routes (9)
GET /api/v1/accounts/:id/inboxes/
POST /api/v1/accounts/:id/inboxes/
GET /api/v1/accounts/:id/inboxes/:inbox_id
PUT /api/v1/accounts/:id/inboxes/:inbox_id
DELETE /api/v1/accounts/:id/inboxes/:inbox_id
POST /api/v1/accounts/:id/inboxes/web_widget
GET /api/v1/accounts/:id/inboxes/:inbox_id/web_widget_config
PUT /api/v1/accounts/:id/inboxes/:inbox_id/web_widget_config
DELETE /api/v1/accounts/:id/inboxes/:inbox_id/web_widget
Conversation Routes (9)
GET /api/v1/accounts/:id/conversations/
POST /api/v1/accounts/:id/conversations/
GET /api/v1/accounts/:id/conversations/:id
PATCH /api/v1/accounts/:id/conversations/:id
POST /api/v1/accounts/:id/conversations/:id/assign
POST /api/v1/accounts/:id/conversations/:id/toggle_status
PATCH /api/v1/accounts/:id/conversations/:id/labels
GET /api/v1/accounts/:id/conversations/:conversation_id/messages
POST /api/v1/accounts/:id/conversations/:conversation_id/messages
Contact Routes (6)
GET /api/v1/accounts/:id/contacts/
POST /api/v1/accounts/:id/contacts/
GET /api/v1/accounts/:id/contacts/search
GET /api/v1/accounts/:id/contacts/:contact_id
PUT /api/v1/accounts/:id/contacts/:contact_id
DELETE /api/v1/accounts/:id/contacts/:contact_id
Message Routes (1)
GET /api/v1/accounts/:id/conversations/:conversation_id/messages/:id
Team Routes (8)
GET /api/v1/accounts/:id/teams/
POST /api/v1/accounts/:id/teams/
GET /api/v1/accounts/:id/teams/:id
PUT /api/v1/accounts/:id/teams/:id
DELETE /api/v1/accounts/:id/teams/:id
POST /api/v1/accounts/:id/teams/:id/members
DELETE /api/v1/accounts/:id/teams/:id/members/:user_id
GET /api/v1/accounts/:id/teams/:id/members
Captain Routes (21)
# Assistants (6)
GET /api/v1/accounts/:id/captain/assistants/
POST /api/v1/accounts/:id/captain/assistants/
GET /api/v1/accounts/:id/captain/assistants/:id
PUT /api/v1/accounts/:id/captain/assistants/:id
DELETE /api/v1/accounts/:id/captain/assistants/:id
POST /api/v1/accounts/:id/captain/assistants/:id/inboxes
DELETE /api/v1/accounts/:id/captain/assistants/:id/inboxes/:inbox_id
# Documents (4)
GET /api/v1/accounts/:id/captain/assistants/:assistant_id/documents/
POST /api/v1/accounts/:id/captain/assistants/:assistant_id/documents/
GET /api/v1/accounts/:id/captain/assistants/:assistant_id/documents/:id
DELETE /api/v1/accounts/:id/captain/assistants/:assistant_id/documents/:id
# Scenarios (5)
GET /api/v1/accounts/:id/captain/assistants/:assistant_id/scenarios/
POST /api/v1/accounts/:id/captain/assistants/:assistant_id/scenarios/
GET /api/v1/accounts/:id/captain/assistants/:assistant_id/scenarios/:id
PUT /api/v1/accounts/:id/captain/assistants/:assistant_id/scenarios/:id
DELETE /api/v1/accounts/:id/captain/assistants/:assistant_id/scenarios/:id
# Custom Tools (5)
GET /api/v1/accounts/:id/captain/custom_tools/
POST /api/v1/accounts/:id/captain/custom_tools/
GET /api/v1/accounts/:id/captain/custom_tools/:id
PUT /api/v1/accounts/:id/captain/custom_tools/:id
DELETE /api/v1/accounts/:id/captain/custom_tools/:id
# Copilot Threads (5)
GET /api/v1/accounts/:id/captain/copilot_threads/
POST /api/v1/accounts/:id/captain/copilot_threads/
GET /api/v1/accounts/:id/captain/copilot_threads/:id
DELETE /api/v1/accounts/:id/captain/copilot_threads/:id
POST /api/v1/accounts/:id/captain/copilot_threads/:id/messages
# Copilot Actions (3)
POST /api/v1/accounts/:id/captain/copilot/suggest_replies
POST /api/v1/accounts/:id/captain/copilot/summarize
POST /api/v1/accounts/:id/captain/copilot/translate
Analytics/Reports Routes (8)
GET /api/v1/accounts/:id/reports/summary
GET /api/v1/accounts/:id/reports/agents
GET /api/v1/accounts/:id/reports/inboxes
GET /api/v1/accounts/:id/reports/labels
GET /api/v1/accounts/:id/reports/teams
GET /api/v1/accounts/:id/reports/conversations
GET /api/v1/accounts/:id/reports/conversation_traffic
GET /api/v1/accounts/:id/live_reports/conversation_metrics
Dashboard Apps Routes (5)
GET /api/v1/accounts/:id/dashboard_apps/
POST /api/v1/accounts/:id/dashboard_apps/
GET /api/v1/accounts/:id/dashboard_apps/:id
PUT /api/v1/accounts/:id/dashboard_apps/:id
DELETE /api/v1/accounts/:id/dashboard_apps/:id
Platform Routes (5)
GET /platform/api/v1/apps
POST /platform/api/v1/apps
GET /platform/api/v1/apps/:id
PUT /platform/api/v1/apps/:id
DELETE /platform/api/v1/apps/:id
Widget Routes (5, 全stub)
POST /widget/init
POST /widget/contact
GET /widget/conversations
POST /widget/messages
GET /widget/cable_token
Webhook Route (1, stub)
ANY /webhooks/:channel_type/:identifier
Health & WebSocket (3)
GET /health
GET /ws
GET /cable
总计: ~106个路由注册
8. 关键发现摘要
-
GoChat有106个路由注册,Chatwoot有327+路由 — 覆盖率约32%(按原始路由数计),但考虑到GoChat的简化合并设计,功能覆盖率约为45-50%
-
15个完整模块完全缺失 — Agent/AgentBot, Canned Responses, Automation Rules, Macros, SLA, Custom Roles, Agent Capacity, Assignment Policies, Campaigns, Search, Companies, CSAT, Custom Attributes, Custom Filters, Labels独立管理, Integrations, Help Center/Portals, Bulk Actions, Channel OAuth, Inbox Members, Upload, Notification Subscriptions, Audit Logs, Public API, SAML Settings
-
已有路由中25+个handler是stub/placeholder — 核心业务模块(Conversation/Contact/Inbox/Message)的handler大部分是501 Not Implemented
-
Widget和Webhook完全未实现 — 5个widget路由和1个webhook路由全部是placeholder
-
路由文件与handler代码不一致 — Profile handler有DeleteAvatar和UpdateAvailability方法,但router.go中未注册对应路由
-
API V2完全缺失 — Chatwoot有完整的V2报告API,GoChat没有任何V2端点
-
Platform API严重不足 — 只有PlatformApp CRUD,缺失Users/AgentBots/AccountUsers等关键平台端点
本报告基于 GoChat commit (当前HEAD) 与 Chatwoot develop分支 routes.rb 的逐行对比分析