浅念
91639b28d8
fix(chat): loadInitial/loadTalkerName 加请求序号防会话切换竞态(ChatMain+ChatTimeline同修)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 18:20:14 +08:00
浅念
3aaf4ec8fa
feat(staffchat): 消息右列(近14天默认窗+9类类型过滤+msgid定位+导出,复制改造自ChatTimeline)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 18:10:30 +08:00
浅念
026381f6e6
fix(staffchat): 搜索聚合取最新命中(ASC页1陷阱)+tab切换不清搜索结果+is_send守卫兜底名+截断提示+TAB_KEYS单源
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 17:42:43 +08:00
浅念
0f7dee9693
feat(staffchat): 会话中列(双模式搜索+已删除好友tab+置顶区+相对时间,样式沿用墨玉主题)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 17:28:45 +08:00
浅念
eb0388c8b0
feat(staffchat): 页面骨架+左侧资料卡/5导航/折叠(三栏布局对齐云客)
...
- StaffChat.vue: 路由驱动 tab(single/group/moments/contacts/stats)+折叠态,
三栏 flex(左栏240/中列280/右列flex:1,高calc(100vh-120px));资料卡走
getAccounts(channel=wechat) 按 account_id 匹配,失败退 ownerId 兜底
- StaffChatSide.vue: 员工资料卡(头像/昵称/真名·电话/微信号)+竖排5导航+
底部收起;墨玉主题沿用 ChatSidebar 手法(点阵底/玉绿渐变分隔线/药丸按钮)
- 5 占位组件(SessionPane/ChatMain/MomentsPane/ContactsPane/StatsPane),
defineProps/defineEmits 签名按 Task 10-14 锁定
- relativeChatTime 签名可空友好(ms?: number|null,null→''),spec+1例
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 17:03:19 +08:00
浅念
f2bcac0a4d
feat(staffchat): 路由+API client+类型+relativeChatTime(还原旧页WIP+占位StaffChat)
...
- 还原 ChatTimeline.vue/api/index.ts 未提交 WIP(新页自建,旧文件回 HEAD)
- /staff-chat/:ownerId/:tab?/:talkerId? 路由 + 占位 StaffChat.vue(Task 9 替换)
- types: MomentsPost/MomentsList/StaffStatsCounts/StaffStatsDetail +
ChatSession.pinned + Account.avatar
- api: getMoments/getStaffStatsCounts/getStaffStatsDetail + sessions
is_del + messages msg_type/q 过滤
- format: relativeChatTime(今天HH:mm/昨天/M月D日/YYYY年M月D日) + 4 例
vitest spec(全过,vitest 未入 devDependencies,npx 拉取运行)
- tsconfig.app.json exclude __tests__(vitest 未装,保持 vue-tsc 通过)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 16:45:30 +08:00
浅念
65ddcf988f
fix(staff): \u5f39\u6846\u8865\u56de\u5458\u5de5\u4fe1\u606f\u5217(\u8bef\u5220)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 10:57:47 +08:00
浅念
c96f638bab
fix(staff): 弹框富单元格TS修(Col加type字段+删unused staffInfo)+后端staff-chat-stats补head_image_url/real_name
2026-08-25 10:27:29 +08:00
浅念
b6eea3070a
feat(staff): 弹框客户微信/员工微信列改富单元格(头像+昵称+ID+真实姓名,对齐云客)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 10:24:07 +08:00
浅念
0d19289fba
feat(staff): 沟通数弹框加汇总说明(对齐云客:总X人次,重复Y,剩余Z条,玉绿左边框)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-25 10:08:44 +08:00
浅念
a7ef8632a0
feat(chat): 群聊隐藏左侧会话列表(对齐云客)+会话名WA去@s.whatsapp.net后缀显号码
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 18:29:27 +08:00
浅念
d86a70382d
feat(wa): 群列表列对齐云客7列(序号/员工信息/员工WhatsApp/群信息/添加时间/最后沟通时间/操作)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 18:19:53 +08:00
浅念
b66363e377
fix(wa): 直接以tab=groups进入时onMounted加载群数据(mount不触发route watch)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 18:18:32 +08:00
浅念
e84e89b029
fix(wa): 好友分页在群tab时隐藏(原两个分页同时显示)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 15:55:39 +08:00
浅念
8ee7399836
fix(wa): 子tab去掉v-if(只在groups时显示的bug→应始终显示)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 15:52:27 +08:00
浅念
b0923409fb
fix(wa): viewCustomers带channel query(原缺whatsapp致WA客户页默认微信tab)+tab query watch
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 15:42:20 +08:00
浅念
dcd1c2d178
feat(wa): WA客户列表加群列表子tab(好友/群两tab对齐云客)+员工列表群聊按钮跳子tab
...
- CustomerList whatsapp tab 加子tab切换(好友列表|群列表)
- 群列表内嵌 WA 群表格(序号/员工/群名/消息数/查看聊天)
- StaffList WA viewGroups 跳 /customers?tab=groups(不再跳 /groups)
- WA 群数据 317 个(wa-groups 重扫)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 15:28:39 +08:00
浅念
ed564e4885
fix(calls): 语音通话列布局对齐云客(头像/标签式/结束时间/时长格式)+修SFC构建3处阻断
...
- 客户信息/员工微信加头像+脱敏微信号+备注名
- 通话信息改多行标签式,员工信息改纯文本,通话时长显示endTime+MM'SS"
- 修SFC构建:模板字面量混合引号→字符串拼接;空三元表达式补全;onMounted误删
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 15:01:20 +08:00
浅念
d945a1e4ce
feat(calls): 语音通话列表列布局全面对齐云客(头像/多行标签/结束时间/时长格式)
...
- 客户信息/员工微信列:加头像+微信号用脱敏alias+客户加备注名
- 通话信息:改多行标签式(状态/微信语音/来源),去「xx:」前缀
- 员工信息:改纯文本(云客不可点)
- 通话录音:接通时显示时长+播放
- 通话时长列:显示endTime+MM'SS"格式
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 14:43:03 +08:00
浅念
847c4cdee4
feat(groups): 群主信息列带头像+realName(去微信号,对齐云客)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 11:43:51 +08:00
浅念
242243e880
fix(groups): 群列表3处字段修正对齐云客(群主ownerName+好友数friendCount+fromType=0→工作手机)
...
- 群主信息: userName→ownerName(群数据里群主昵称的正确字段)
- 群成员好友数量: contactCount(不存在)→friendCount(实测有值500)
- fromType=0 映射为「工作手机」(群列表的编码与客户的1000014不同)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 11:40:20 +08:00
浅念
68f535d637
fix(calls): 员工详情抽屉字段补全(修错key+加userId/微信号/微信手机号;去不存在的工号/部门)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 10:44:25 +08:00
浅念
f7e1f1d775
fix(calls): 员工详情抽屉接线补全(函数体+状态变量,上轮断言中断只写入了模板)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 10:34:09 +08:00
浅念
12d773ce91
feat(ui): 语音通话员工详情改抽屉(原跳独立页,与全站详情体验统一;含卡片化样式)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 10:24:55 +08:00
浅念
3699ec6d3b
fix(ui): 员工详情页接入卡片化美化(选择器扩展到独立页)+WA客户tab每页10条(微信保持5)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-24 10:17:18 +08:00
浅念
a8b8d9d81c
fix(export+calls): 同类owner错位问题全面修复(群导出不按owner过滤+群语音客户点击走群聊路由)
...
- /api/export/chat-html: room 查询忽略 owner(chat_group owner 错位同
ChatTimeline,群列表/聊天页的导出按钮原来会导出空文件)
- CallList viewCallCustomer: talker 以 @chatroom 结尾→group-chat 路由
(原走 1:1 路由按 talker_id 查@chatroom 恒空)
- TDD: 群消息在 ownerB 名下用 ownerA+room 导出仍能拿到;428 测试绿
- 实测:错位 owner 导出 43304 群返回 15002 个消息元素
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 17:00:43 +08:00
浅念
4f375c3d71
fix(chat): 群聊消息查询不带owner(chat_group按room去重owner被末位员工覆盖,与消息归属错位查空)
...
room 全局唯一且消息只在单一owner名下(多owner群=0),按room查即正确;
MessageQuery.owner_account_id 改可选。实测43304群6000条正常显示。
16个活跃群0条消息=增量未覆盖,4h调度自动补
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 16:50:56 +08:00
浅念
b9d250cdc1
fix(chat): 默认时间窗改全部时间(原近2周把老对话过滤成空——7-26的对话打开显示暂无聊天记录)
...
点「查看聊天记录」就该看到记录;需要过滤再手动选日期(已开clearable,
清除即回全部);stat-modal 带窗入口(?start&end)不受影响
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 16:16:01 +08:00
浅念
4056dfb49e
feat(ui): 客户列表默认每页5条(选项加5,用户偏好)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 16:02:07 +08:00
浅念
01842a0abf
feat(ui): 可点击元素统一玉绿示意(链接悬停下划线+行悬停首列染玉绿+会话侧栏玉绿激活;修StaffList灰色覆盖把link按钮染灰的bug)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 15:54:05 +08:00
浅念
a290e39523
feat(customers): 发送/接收列改今日口径(对齐云客;本地消息表Asia/Shanghai今日聚合)
...
- CustomerOut 加 send_today/receive_today(路由赋值,非ORM列)
- /api/customers 每页一次 GROUP BY(owner IN 走复合索引前缀)
- 前端列优先今日值,无消息数据回退原raw字段;列名对齐云客「发送条数/接收条数」
- TDD:今日3发2收+昨日不计入+无消息客户0
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-22 14:39:17 +08:00
浅念
ce5cada898
feat(chat): 归属账号显示昵称(账号表查询,昵称+ID并列,回退原始ID)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 15:34:17 +08:00
浅念
811f2bc849
fix(customers): 分页器Total也用云客口径declared(与页脚一致,微信8590/WA 11915)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 14:07:45 +08:00
浅念
edca9b4c77
fix(customers): WA客户破1万上限(逐员工uid过滤,8585→11931全量)+双渠道页脚云客口径+消息同步刷新最近沟通时间
...
- wa-friends 逐员工抓取:全局查询~1万行硬上限(云客11931只翻到10000),
uid=员工WA号过滤(真机验证 declared 1145→1149),total-aware翻页
- declared-total 分渠道:Σ wechat/whatsapp_account.contacts_num(8590/11915)
- 消息增量同步顺带刷新 customer.last_chat_time(云客列表按最近沟通实时
排序,快照每日一次导致顺序滞后;微信1:1+WA都加)
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 14:04:06 +08:00
浅念
fd3cf0003b
feat(customers): 微信客户页脚改云客口径(Σ员工好友数声明值8590,用户选B方案)
...
- GET /api/customers/declared-total: Σ wechat_account.contacts_num
- 页脚优先显示云客口径(回退真实total);列表内容保持去重真实行
- 云客列表声明值含其ES索引重复doc(连行id都相同无法物理区分),仅对齐计数
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 13:44:39 +08:00
浅念
4aeed003a4
feat(calls): 微信语音列表加今日统计卡片+通话时间范围筛选+客户跳转带通话时间定位(对齐云客)
...
- GET /api/calls/stats:今日(Asia/Shanghai)好友呼入/外呼量+群量+时长聚合(@chatroom判群)
- CallList:5张统计卡片(仅微信语音tab)+datetimerange筛选(服务端start/end)+viewCallCustomer带?start定位
- TDD新增stats聚合测试,全量绿
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 11:08:13 +08:00
浅念
6c9245a682
fix(groups): /api/groups加room_id精确直查(群聊页群名解析,修page_size=200超限422)
...
Co-Authored-By: Claude <noreply@anthropic.com >
2026-08-20 10:58:39 +08:00
浅念
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