Rogee and rogee
55fac96700
H-148: close replaced logger file sinks ( #26 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-15 00:04:01 +08:00
Rogee and rogee
0cd2574154
H-139: align update last seen response tests ( #23 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 23:11:07 +08:00
Rogee and rogee
384cc56d97
H-142: eliminate worker race detector conflicts ( #25 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 22:58:22 +08:00
Rogee and rogee
13e948d4ab
H-141: harden worker shutdown persistence ( #24 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 22:43:01 +08:00
Rogee and rogee
97ca3bc472
H-137: fix computed article distance mapping ( #22 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 22:40:48 +08:00
Rogee and rogee
849304ac87
H-130: reject empty rollback migration path ( #21 )
...
* H-130: reject empty rollback migration path
* H-130: lock Captain inbox assistant uniqueness
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 21:50:02 +08:00
Rogee and rogee
6a3cb49781
H-105: ground Captain replies with inbox knowledge ( #18 )
...
* H-105: ground Captain replies with inbox knowledge
* H-105: harden Captain grounding
* H-126: exclude deleted article embeddings
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 19:41:45 +08:00
Rogee and rogee
5811260d83
H-127: align Captain inbox repository fixture ( #20 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 19:06:31 +08:00
Rogee and rogee
c922460649
H-97: fix Shangwutong conversation routing ( #16 )
...
* H-60: harden Captain migration rollback and concurrency
* chore(agent): baseline — uncommitted work from the local directory
* fix: route Shangwutong events by display id
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 14:35:12 +08:00
Rogee and rogee
376d0d9818
H-77: report missing Shangwutong source fields ( #15 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-14 01:18:36 +08:00
Rogee and rogee
e33e72877e
H-47: bound deferred contact metadata retries ( #14 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 20:22:23 +08:00
Rogee and rogee
de285b4f5d
H-47: retry CID until contact exists ( #13 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 19:57:05 +08:00
Rogee and rogee
d00ea39f6c
fix(shangwutong): map kind 24 contact cid ( #12 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 19:27:26 +08:00
Rogee and rogee
a5ceb0af93
H-47: unblock connector sandbox setup ( #11 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 18:25:19 +08:00
Rogee and rogee
fcfe5bd37c
H-60: harden Captain migration rollback and concurrency ( #10 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 17:13:17 +08:00
Rogee and rogee
0540ae3791
H-55: make Captain bindings atomic ( #9 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 16:24:39 +08:00
Rogee and rogee
74eb006985
H-43: fix WEB Captain takeover E2E flow ( #8 )
...
* test(shangwutong): cover CID rename reliability
* H-43: fix WEB Captain takeover flow
* H-48: preserve compatible provider model
* H-49: make Captain takeover atomic
* H-50: prevent duplicate widget initialization
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 14:49:04 +08:00
Rogee and rogee
fff3dce1bd
test(shangwutong): cover CID rename reliability ( #7 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 09:31:25 +08:00
Rogee and rogee
0555b296cc
fix(conversations): sync AI takeover exit in realtime ( #6 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 01:28:31 +08:00
Rogee and rogee
d0995798f4
H-28: harden Shangwutong CID sync ( #5 )
...
* fix(shangwutong): close contact sync review gaps
* fix(shangwutong): harden CID sync boundaries
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 01:26:56 +08:00
Rogee and rogee
0e9bf8dc14
fix(shangwutong): close contact sync review gaps ( #4 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-13 01:21:07 +08:00
Rogee and rogee
406e7a07fe
feat(shangwutong): sync customer names back to channel ( #3 )
...
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-12 22:58:46 +08:00
Rogee and rogee
83a8ab315a
H-16: align takeover with channel AI workflow ( #2 )
...
* feat(conversations): complete manual AI takeover
* fix(conversations): align AI takeover flow with channel AI
* fix(conversations): close takeover review gaps
---------
Co-authored-by: Rogee <rogee@ipao.vip >
2026-08-12 22:57:06 +08:00
rogee
4bf6ba6b20
feat(conversations): complete manual AI takeover
2026-08-12 21:16:49 +08:00
Rogee
4be52e05c7
fix: 收紧客服功能访问权限
2026-08-08 20:28:18 +08:00
Rogee
dcfd4b4b9d
fix: 修复系统消息长链接溢出
2026-08-08 19:54:06 +08:00
Rogee
518f9c5d6b
fix: 修复客服权限与收件箱配置问题
2026-08-08 19:52:18 +08:00
Rogee
dc2a6577bf
fix(shangwutong): 来源信息改为系统消息
2026-08-06 17:55:54 +08:00
Rogee
d2aeea5f44
fix(shangwutong): 展示会话来源信息
2026-08-06 16:54:57 +08:00
Rogee
5c47d1d5fe
fix(shangwutong): 完善访客资料同步
2026-08-06 15:14:32 +08:00
Rogee
3bceb2d0b2
fix(conversations): 优化列表时间显示
2026-08-06 11:31:14 +08:00
Rogee
8d002d1dbe
fix(conversations): 修复会话标识与解决后跳转
2026-08-06 11:19:39 +08:00
Rogee
b78f963472
chore: 提交剩余开发改动
...
包含商务通消息映射、会话时间与未读状态、前端消息展示、数据库修复迁移、测试覆盖备份及 Captain 设计文档。
2026-08-06 10:10:25 +08:00
Rogee
8f2cc12628
fix(conversations): 修复状态切换与历史会话路由
...
- 处理历史主键与 display_id 冲突,确保消息和状态操作命中同一会话
- 允许已软删除收件箱中的历史会话切换状态
- 解决会话后自动打开列表中的相邻会话
2026-08-06 10:08:05 +08:00
Rogee
cb50726620
fix: add shangwutong dev defaults
2026-08-05 10:30:39 +08:00
Rogee
3d7ff5a6b1
chore: complete Shangwutong connector integration
2026-08-04 18:00:10 +08:00
Rogee
4611c0201f
test: improve backend unit coverage
2026-08-04 12:26:25 +08:00
rogee
897b4e018f
feat(channels): add Shangwutong connector
2026-08-03 10:13:40 +08:00
Rogee
96f5c796a6
fix: widget SDK无法加载的三个问题
...
1. Vite proxy缺少/widget转发 — SDK调用/widget/init等API时被SPA fallback
拦截返回HTML。添加/widget proxy并bypass HTML页面请求到/widget.html。
2. ParseWebWidgetConfig类型不匹配 — seed数据中channel_config JSON的
"continuity_via_email":""是空字符串,但Go结构体字段是bool,
json.Unmarshal报UnmarshalTypeError导致整个config解析失败,
findInboxByWebsiteToken跳过该inbox。容忍类型不匹配错误,
只对JSON语法错误返回error。
3. dev模式SDK bundle不可用 — /sdk/js/sdk.js在Vite dev模式下无构建产物,
被SPA fallback返回HTML。构建SDK后放入public/供dev server静态提供。
2026-08-01 22:59:57 +08:00
Rogee
3a62f01942
fix(ui): 自定义工具表单 overflow-y-scroll→auto + 认证方式NONE翻译改为'无' + Captain文档爬虫/同步后端
2026-08-01 21:25:55 +08:00
Rogee
1446cfe701
feat(channels): 社交渠道 OAuth 改进 + 集成应用重命名 + AI 流程文档
...
- Facebook/Instagram/TikTok 渠道 OAuth 授权流程改进
- 新增 oauth/credentialstore 包
- 集成应用 OpenAI 重命名为 OpenAI 兼容 (migration 061)
- 消息生命周期与 AI 流程架构文档
- inbox 管理界面 i18n 更新
2026-08-01 19:38:27 +08:00
Rogee
63df5b8b91
fix(captain): 试验场不查 FAQ 知识库 + 添加常见问题报 400
...
三个问题修复:
1. 添加常见问题报 400 (assistant_id 类型不匹配)
- CreateResponseDialog.vue: route.params.assistantId 是字符串,
传给后端 uint 字段导致 JSON 反序列化失败
- 修复: Number(route.params.assistantId) 转为数字
- 同时修复 POST /assistant_responses 无尾部斜杠 307 重定向问题
2. 试验场 playground 不做 RAG 检索
- generatePlaygroundLLMResponse 只构建 system prompt + 对话历史,
从不查 FAQ 知识库
- 新增 retrieveFAQContext(): embed 用户问题 → pgvector 搜索 approved
FAQ → 注入 system prompt
- 受 feature_faq 配置开关控制
3. FAQ embedding 无法写入 (pgvector 序列化 + 维度问题)
- pgvector stub 无 driver.Valuer, GORM Save() 报 SQLSTATE 42804
- 新增 UpdateEmbedding() 用 ?::vector 原始 SQL 绕过
- SimilaritySearch 排除 embedding 列 + 手动格式化向量字面量
- embedding 列从 vector(1536) 改为 vector (跟随模型维度)
- FAQ 创建/更新时自动索引 embedding (SetRAGService 注入)
2026-08-01 19:37:19 +08:00
Rogee
31238476b1
fix(captain): 修复 playground 500 — GetConfig nil pointer panic + 清理重复 buildSystemPrompt
...
根因:captain_assistants.config 中 temperature 字段为字符串 "0.5",
json.Unmarshal 到 float64 字段失败,GetConfig() 返回 nil,
调用方吞掉错误后 BuildAssistantPrompt 解引用 nil cfg 导致 panic。
修复:
- GetConfig() unmarshal 失败时返回空 &cfg{} 而非 nil,防止 nil dereference
- 删除 captain_assistant_service.go 中重复的 buildSystemPrompt 函数,
统一使用 SystemPromptBuilder.BuildAssistantPrompt
- generatePlaygroundLLMResponse / GenerateResponse 增加
ErrProviderNotConfigured 检查,返回 fallback 消息而非 500
2026-08-01 17:21:01 +08:00
Rogee
bb4c4bb807
fix(captain): 护栏/回复指南编辑按钮不生效
...
根因:
1. guardrails/guidelines 页面直接导航时 store 无助手记录,getRecord
返回空对象导致列表为空、编辑无数据
2. storeFactoryHelper updateRecord 用 EDIT mutation(仅更新已有记录),
store 为空时 API 返回数据被丢弃
修复:
- storeFactoryHelper: updateRecord 改用 UPSERT,确保 API 返回记录始终写入 store
- guardrails/Index.vue & guidelines/Index.vue: onMounted 时若 store 无记录
则 dispatch captainAssistants/show 拉取单条助手数据
2026-08-01 16:24:09 +08:00
Rogee
cd82d079e3
fix(ws): 发送 WebSocket 协议级 Ping 控制帧防止 60s 后连接断开
...
writePump 只发 ActionCable 文本 JSON ping,从不发 websocket.PingMessage,
导致 readPump 的 PongHandler 永远不触发,ReadDeadline(60s) 到期后连接
被强制关闭。前端每 60 秒弹出"离线""重连"通知。
修复:在 ticker 中先发 PingMessage 控制帧(浏览器自动回 Pong 重置
ReadDeadline),再发 ActionCable 文本 ping(保活 ConnectionMonitor)。
同时包含此前会话中的其他变更:
- 移除安全设置(SAML)页面及路由
- 新增超级管理员控制台前端页面
- platform agent_bots 路由使用 Platform* handler
- 超级管理员入口改为 SPA 内路由跳转
2026-07-30 16:55:44 +08:00
Rogee
1fb95e4151
i18n: 翻译集成设置页面应用卡片描述
...
集成卡片名称和描述存储在 integration_apps 表中(来自 migration 030),
此前为英文。新增 migration 059 翻译为中文:
- Dashboard Apps → 仪表板应用
- OpenAI/Dialogflow/Google Translate/Dyte/LeadSquared/Slack/
Shopify/Linear/Notion/Webhook 的描述全部翻译
品牌名(OpenAI/Dialogflow/Dyte/Slack/Shopify/Linear/Notion/Webhook)保留英文。
2026-07-30 12:26:42 +08:00
Rogee
37e6d77a2d
fix: 帮助中心设置页报 Feature 'knowledge_base' is not available
...
三个问题:
1. router.go: portal 路由检查 FeatureKnowledgeBase("knowledge_base"),
但账户 feature_flags 中只有 help_center,没有 knowledge_base。
改为检查 FeatureHelpCenter("help_center")。
2. feature_flag.go: 中间件从 context 读取 feature_flags,但没有任何
上游中间件设置它,导致 exists=false 直接 403。GoChat 是自托管非 SaaS,
无 flags 时应放行(所有功能可用)。
3. feature_flag.go: Account.FeatureFlags 存储为 JSON 对象格式
({"help_center":true}),但旧代码只解析 JSON 数组格式。
新增 JSON 对象解析支持。
测试:新增 JSONObjectFormat / JSONObjectFormatDisabled 用例,
更新 NoFeatureFlags 用例为 200(自托管放行)。
2026-07-30 11:40:02 +08:00
Rogee
57c56c849d
fix: 帮助中心设置页报 No valid base URL found in configuration
...
根因:portalHelper.js getDefaultBaseURL() 在 hostURL 和 helpCenterURL
均为空时直接抛错,但 index.html 中两者默认都是空字符串(表示同源)。
当配置为空时应 fallback 到 window.location.origin 而非抛错。
修复:将空字符串 fallback 改为 window.location.origin,移除 throw。
2026-07-30 11:29:43 +08:00
Rogee
73065d6888
i18n: 翻译会话/帮助中心/集成模块剩余英文文案
...
- conversation.json: 会话标签计数、语音通话、引用回复、文件类型、
原生应用提示、邮件转录、Shopify 订单/支付/履行状态等 35 条
- helpCenter.json: 批量翻译/操作、草稿/发布语言、分类排序、
门户设置(自定义域名/DNS/CNAME)、PDF 上传、内容生成等 46 条
- integrations.json (INTEGRATION_SETTINGS): Shopify 连接/删除、
Webhook 密钥/搜索、OpenAI 语气/回复选项、Linear/Notion 集成等 40 条
2026-07-30 11:26:06 +08:00
Rogee
6001231cac
i18n: 批量翻译公司菜单及全局未翻译英文文案
...
覆盖 37 个 zh_CN locale JSON 文件,主要模块:
- companies: 公司 CRUD、详情页、联系人关联、属性、头像、删除等 50+ 条
- settings: 个人设置(消息签名/安全/MFA/SLA通知)、账单积分购买、
APP_GLOBAL/CREATE_ACCOUNT/SIDEBAR 等全局文案
- agentBots/agentMgmt/attributesMgmt: 搜索、机器人配置、属性类型
- automation: 创建/搜索/事件/动作/消息类型
- bulkActions: 批量分配/解决确认文案
- campaign: WhatsApp 营销活动全流程
- contact: 联系人批量操作、备注、新建会话搜索
- report: CSAT/团队/收件箱报告描述、审核备注、评分分布
- signup/resetPassword/login: 注册流程、密码重置、邮箱验证
- snooze: 自然语言时间解析器(分钟/小时/天/月/序数等)
- whatsappTemplates: 模板选择器、参数解析、OTP/优惠券
- yearInReview: 年度回顾全部文案
- onboarding/macros/labelsMgmt/cannedMgmt/teamsSettings 等
保留未翻译:品牌名(Captain/Copilot/WhatsApp 等)、
技术术语(API/URL/SLA/CSAT/SDK 等)、SAML SSO(已移除方向)
2026-07-30 11:23:08 +08:00