# GoChat vs Chatwoot 路由对比分析报告 > 生成日期: 2026-05-24 > 对比源: GoChat `internal/router/router.go` + Chatwoot `config/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 — 核心业务功能缺失(必须实现) 1. **Conversation扩展操作** — mute/unmute/transcript/toggle_priority/toggle_typing/update_last_seen/unread/attachments/custom_attributes 是对话管理核心 2. **Message CRUD完善** — 更新/删除/翻译/重试是消息操作基础 3. **Contact子资源** — contactable_inboxes/conversations/notes/labels/import/export 是CRM核心 4. **Inbox扩展操作** — assignable_agents/agent_bot/sync_templates/health 是收件箱管理基础 5. **Agent/AgentBot模块** — agent分配是客服系统核心功能 6. **Assignable Agents** — 获取可分配agent列表是分配功能的前置 ### P1 — 重要业务功能缺失(应优先实现) 7. **Canned Responses** — 快捷回复是客服效率关键 8. **Automation Rules** — 自动化规则是运营效率核心 9. **Labels独立管理** — 标签CRUD是分类管理基础 10. **Search全文搜索** — 跨模块搜索是效率关键 11. **CSAT Survey** — 满意度度量是客服质量核心 12. **Webhooks用户管理** — webhook CRUD是集成基础 13. **Inbox Members** — 收件箱成员管理是团队协作基础 14. **Contact active/filter** — 活跃联系人和高级过滤是列表管理关键 ### P2 — 增值功能缺失(可后续实现) 15. **Macros** — 宏操作是高级效率工具 16. **SLA Policies** — SLA是企业版核心 17. **Custom Roles** — 自定义角色是权限管理关键 18. **Agent Capacity Policies** — 容量策略是负载管理 19. **Assignment Policies V2** — 分配策略是高级路由 20. **Campaigns** — 营销活动是增值功能 21. **Companies** — 公司/企业客户是B2B功能 22. **Custom Attributes** — 自定义属性是扩展能力 23. **Custom Filters** — 自定义过滤器是UI过滤 24. **Audit Logs** — 审计日志是企业合规 25. **Upload** — 文件上传是基础功能 ### P3 — 长期功能(可规划实现) 26. **Help Center/Portals** — 知识库是大型功能 27. **Integrations全套** — Slack/Dyte/Shopify/Linear/Notion等 28. **Channel OAuth** — Twitter/Microsoft/Google/Instagram/TikTok/Notion/WhatsApp授权 29. **API V2** — 新版API 30. **Public API** — 外部暴露API 31. **Platform API扩展** — Users/AgentBots/AccountUsers 32. **Enterprise API** — 付费版特有 33. **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. 关键发现摘要 1. **GoChat有106个路由注册,Chatwoot有327+路由** — 覆盖率约32%(按原始路由数计),但考虑到GoChat的简化合并设计,功能覆盖率约为45-50% 2. **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 3. **已有路由中25+个handler是stub/placeholder** — 核心业务模块(Conversation/Contact/Inbox/Message)的handler大部分是501 Not Implemented 4. **Widget和Webhook完全未实现** — 5个widget路由和1个webhook路由全部是placeholder 5. **路由文件与handler代码不一致** — Profile handler有DeleteAvatar和UpdateAvailability方法,但router.go中未注册对应路由 6. **API V2完全缺失** — Chatwoot有完整的V2报告API,GoChat没有任何V2端点 7. **Platform API严重不足** — 只有PlatformApp CRUD,缺失Users/AgentBots/AccountUsers等关键平台端点 --- *本报告基于 GoChat commit (当前HEAD) 与 Chatwoot develop分支 routes.rb 的逐行对比分析*