浅念
ab5a918a3b
fix(calls+scraper): 语音群scope服务端过滤+对话发现缺口补全+抓取韧性三连修
...
- /api/calls 加 scope=friend|group(@chatroom后缀判群,与isRoom实测等价120=120),CallList去掉「全部」tab改服务端查
- 对话发现:全部customer pair ∪ 语音pair(weChatId,talker),未扫过的排最前——修复纯语音关系客户聊天记录永远空(35%语音客户pair从未扫过)
- voice-calls改浏览器直发(isRoom=0/1双趟+WA callSource=4,拦截方式已两次失效)
- 断连恢复重试30×2min(云客约3h一次断连,已实战扛过多次)
- WA messages upsert改整列表直调(_upsert_all逐条传dict被迭代成key字符串→TypeError)
- 405测试绿含scope新增3个
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-19 16:48:22 +08:00
浅念
2cdbdf7283
fix(ui): 微信群scope换列(群信息)+WA语音加操作列(播放/长语音)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 16:01:56 +08:00
浅念
aa90d9d8f2
feat(ui): 列表页移除tab结构(每渠道独立页面,由侧栏菜单驱动)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 13:41:49 +08:00
浅念
9b21584e9a
feat(ui): 左侧菜单改分组式(微信管理/WhatsApp管理+下拉子菜单,对齐云客布局)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 12:09:55 +08:00
浅念
02f95af279
fix(ui): 所有列表页默认分页改为10条(原20条)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 11:32:33 +08:00
浅念
81f4e7168f
fix(ui): 员工微信号用owner_account_id+添加类型/好友类型加标签映射
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 11:22:20 +08:00
浅念
1d2cf965e2
fix(ui): 员工微信列改为头像+昵称+微信号+手机号(对齐云客复合单元格)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 11:14:10 +08:00
浅念
8a396131c0
feat(ui): 微信客户列表补全16列(手机/描述/地区/签名/标签/员工/时间/添加类型/来源/好友类型)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 11:08:58 +08:00
浅念
d28936cf94
fix(ui): 微信客户列表列布局对齐云客(头像+昵称+微信号复合单元格)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 10:59:27 +08:00
浅念
661ecfc8c9
feat(chat): 聊天标题显示昵称(客户→昵称,群→群名,替代原始ID)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 10:54:21 +08:00
浅念
edd6a27371
feat(ui): 所有列表页加CSV导出按钮(全量拉取+中文BOM兼容Excel)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-15 10:31:21 +08:00
浅念
9e4a5ee536
fix(ui): StaffDetail分页查找+SmsList日期筛选+SyncStatus自动刷新
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-12 14:09:43 +08:00
浅念
9a953553ec
fix(xss+perf): SearchView XSS消除(无v-html)+room_id索引+pool_recycle
...
- SearchView.vue: 用 highlightSegments() 返回 {text,hit} 数组替代 v-html+escapeHtml+regex,模板用 <template v-for> + <mark>/<span> 渲染,从结构上消除 XSS 风险(4 处 v-html 全部移除: 消息片段/客户昵称/realName/手机号)
- models.py: Message 新增 ix_message_channel_owner_room_time(channel,owner_account_id,room_id,timestamp),群聊查询过滤 room_id 而非 talker_id,原 talker 索引无法覆盖
- migrations/d8eee96cd017: 新增 room_id 索引的 upgrade/downgrade (offline SQL 已验证)
- base.py + scheduler.py + cli.py: 所有生产 create_async_engine 增加 pool_recycle=3600,在 MySQL wait_timeout(默认 8h)断连前主动回收
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-12 11:50:45 +08:00
浅念
20cf2c51f0
feat(staff): 员工详情独立页(StaffDetail.vue,替代 drawer 降级,对齐云客 userDetailNew)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-11 17:05:01 +08:00
浅念
17ee5a1a6c
feat(calls): 微信语音 好友/群 scope 筛选(对齐云客,client-side isRoom 过滤)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-11 15:25:42 +08:00
浅念
0cc9408371
feat(staff): WA员工 modal 列对齐云客(序号/员工信息/员工WhatsApp/客户WhatsApp/添加时间/最后沟通)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-11 14:58:38 +08:00
浅念
05d1e41d31
fix(staff): 默认统计窗改近30天(覆盖smoke.db数据范围,数字不再全0)
2026-08-11 13:53:55 +08:00
浅念
8b19c299bb
feat(calls): WA语音 单元格可点(客户→WA chat,员工→drawer)+ chatChannel helper
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-11 11:59:56 +08:00
浅念
f1b5861b35
feat(calls): VoiceClipModal 只读长语音列表+播放,接入 CallList(微信+WA语音)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-10 18:37:29 +08:00
浅念
4ee19cb9d9
chore(ui): 删除冗余 AccountList 页,/accounts 重定向 /staff(总 spec 收尾)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 17:16:26 +08:00
浅念
bb328ac59a
feat(chat): ChatTimeline 导出按钮 + 修复 downloadBlob 文件名丢失(Content-Disposition)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 17:07:58 +08:00
浅念
5bf5e25bad
feat(calls): CallList 微信语音 客户/员工/姓名 单元格可点(复用聊天导航,对齐云客)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 16:19:21 +08:00
浅念
239f07e7a1
feat(chat): 页内日期选择器(跨会话持久)+ 关键词搜索(已加载页过滤)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 15:29:19 +08:00
浅念
8f166a9c18
feat(chat): ChatTimeline 双栏化(左会话列表)+ 路由可选参 + badge 账号级入口
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 15:23:26 +08:00
浅念
cdbfe3e5da
fix(chat): 日期窗 start/end 成对透传(避免单边过滤)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 13:56:14 +08:00
浅念
765f80dd02
feat(chat): ChatTimeline 支持 start/end query 日期窗过滤(从 stat modal 带窗跳入)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 13:53:02 +08:00
浅念
7405ac5fc9
feat(staff): stat modal 列对齐云客(序号/员工信息/员工微信) + 客户微信可点带窗跳聊天
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-08 13:46:59 +08:00
浅念
5fd9878c38
fix(staff): on-demand modal 拉取仅在日期窗未变时回写缓存
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 18:58:30 +08:00
浅念
f51623d652
feat(staff): 微信 5 数字 modal 换本地数据源(metric 过滤 + 合成分页)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 18:52:07 +08:00
浅念
cab8ab95dc
fix(staff): loadWechatStats 加载竞态守卫(token)+ 重查时清空旧窗数字
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 18:50:02 +08:00
浅念
876767cd68
feat(staff): StaffList 微信 5 数字改读本地 summary + 日期选择器(Phase A 接线)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 18:42:19 +08:00
浅念
05cc1dfcc4
feat(calls): 前端录音播放本地优先(/api/media/{hash}) + OSS 回退 + drawer
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 16:55:49 +08:00
浅念
7a5bb9927e
feat(calls): callStatusLabel channel-aware + callTypeLabel WA + 补 WA/微信语音字段 label
...
call_status 极性随 channel 不同(phone 0未接/2接通;voice/WA 1接通/2未接通),
仅值 2 按 channel 分支。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 11:54:38 +08:00
浅念
28d8448f62
feat(calls): 电话 tab 保留通用 8 列(按 channel 分离列集)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 11:09:47 +08:00
浅念
f8705cb741
feat(calls): WA 语音 tab 对齐云客列(状态/客户/员工/通话时间和录音)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 11:03:22 +08:00
浅念
f4dc115129
feat(calls): 微信语音 tab 对齐云客列(通话信息/客户/员工微信/员工信息/录音/时长)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 10:57:17 +08:00
浅念
ca3a2a2d3d
feat(calls): CallList 改 el-tabs(微信语音/WA 语音/电话)+ CallChannel 加 wa_voice_call
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-07 10:50:38 +08:00
浅念
6dfed36c05
feat(groups): 微信群操作列加「导出HTML聊天记录」(补 Plan3 漏的操作)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:57:58 +08:00
浅念
d1475e8f42
feat(customers): 微信客户操作列加「导出HTML聊天记录」+ 时间选择
...
对齐云客:先弹「请选择时间」→ 确定后调 /api/export/chat-html 下载。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:55:10 +08:00
浅念
b63b71bf68
feat(staff): 微信员工明细 modal 内客户微信 → 聊天记录(二级操作)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:47:02 +08:00
浅念
6a30bef21b
feat(staff): 微信员工 主badge→聊天 + 员工姓名→drawer(纠正手机号误判)
...
云客跳详情页的是员工姓名(button+history),非手机号;手机号不可点。
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:43:45 +08:00
浅念
b9055b5714
feat(staff): 微信员工及时回复 2 数字 → 明细 modal(回复率不可点)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:40:24 +08:00
浅念
c00522fc07
feat(staff): 微信员工沟通数 3 数字 → 明细 modal(补 Plan1 误判漏做的操作)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 17:37:08 +08:00
浅念
bfdb5852bb
feat(groups): align GroupList to 云客 — per-channel tabs, view-chat action
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 11:14:00 +08:00
浅念
5d4a0c5901
feat(customers): align CustomerList to 云客 — per-channel tabs, 7 cols each, view-chat action
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-06 10:28:39 +08:00
浅念
20b01ab849
fix(staff): review fixes — CSS ellipsis, owner_account_id scoping, viewChat guard
...
1. .yk-staffinfo__nick display:block (ellipsis now applies to WA inline span). 2. openAdded/openTalked modal use owner_account_id (always present) instead of user_id! (null would leak whole customer table). 3. viewChat guards null talker+room + awaits router.push. 4. WA 添加人数 title → 客户列表 (honest: WA has no add_time, shows all).
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-05 19:25:24 +08:00
浅念
5bf43fc67b
feat(staff): wechat stat-number/nickname → navigation
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-05 19:15:05 +08:00
浅念
16149fd499
feat(staff): WhatsApp nickname → chat timeline
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-05 19:09:24 +08:00
浅念
dfdd0595d2
feat(staff): action buttons → filtered customer/group list
...
Adds groups.user_id filter; viewCustomers/viewGroups push owner_account_id query; CustomerList/GroupList read it.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-05 19:06:27 +08:00
浅念
02a709ba93
fix(staff): format time columns in detail modal
...
YkStaffDetailModal Col gains optional formatter; baseCustomerCols time cols render via formatTime instead of raw epoch.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-05 18:58:06 +08:00