浅念
|
974929e091
|
feat(deploy): 阿里云ECS+1Panel 服务器部署方案落地
- docker-compose.server.yml:生产编排(复用 1Panel MySQL、去 mysql/redis、
端口仅绑 127.0.0.1、TZ=Asia/Shanghai、MYSQL_HOST 必填守卫)
- 两份 Dockerfile 内置国内构建源:apt/pip→阿里云,npm/playwright→npmmirror
(ECS 上直连官方源慢/超时;对本地构建同样可用)
- DEPLOY.md 重写为 v2 runbook:单站点反代架构、mysqldump+media 搬迁管道
(ngram 索引导入重建 ~12min)、验收清单、运维表、本地停 scheduler 收尾
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-01 16:38:05 +08:00 |
|
浅念
|
9ba8063ca8
|
feat(chat): 跳转入口全部改为全时段进入(用户定调:聊天记录不做时间限制)
排查全部聊天展示路径后清掉最后的两处带窗跳转:CallList 通话行的「通话
当天」定位窗(当日早些时候为对齐云客 ?start= 加的)与 StaffList 统计弹窗
的统计时段窗;WA 分支的 ?start= 本就被 ChatTimeline 的 start+end 成对
校验忽略,属死代码一并移除。现状:所有聊天视图默认全部时间(会话列表/
消息接口本就无时间下限),日期过滤只保留聊天窗内的手动日期选择器。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 16:30:52 +08:00 |
|
浅念
|
6de1662131
|
feat(staffchat): CallList/SearchView 微信行切新员工聊天窗口(入口改造收尾)
与 StaffList/CustomerList 同口径:微信行→staff-chat 新窗(单聊=single tab,
群语音/@chatroom 消息=group tab),WA 行保留旧 ChatTimeline(ChatTimeline
保留给 WA)。通话行跳转带「通话当天」整天下窗——语音通话本身是消息流里的
voice_call 行,当天窗必含该通通话,等价实现旧页 ?start= 滚动定位(新窗
rangeFromQuery 需 start+end 成对)。SearchView 客户抽屉同 CustomerList。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 16:07:54 +08:00 |
|
浅念
|
2c5cea1565
|
fix(staffchat): 聊天窗默认时段改全部时间+空态分语(用户报很多聊天记录空的)
defaultRange() 默认近 14 天窗,实测 78% 群(766/979)/89% 单聊(9374/10497)
的最新消息在任意 14 天窗外——这些会话打开即全空(典型:张士蓓「11台长安X5」
1016 条消息全在 7-27 前,默认窗滤成 0 条,云客后台却看得到)。云客默认直接
展示最近消息不限窗,对齐改为默认全部时间;首屏本就跳最后一页看最新+上翻
加载更旧,全量窗下首屏仍只拉一页。空态分语:有窗=「所选时间范围内无消息,
清空日期窗可查看全部」,无窗=「该会话无聊天记录」(真没聊过)。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-27 15:15:41 +08:00 |
|
浅念
|
7e8624674e
|
fix(staffchat): SessionPane 补请求序号防竞态(对齐全 pane 惯例)+置顶卡不显今日红点(spec §5)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 21:03:36 +08:00 |
|
浅念
|
e602822dfb
|
fix(staffchat): useStaffProfile 在途Promise去重(防重复请求+缓存投毒)+load(force)真重载
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 20:13:46 +08:00 |
|
浅念
|
50635d0df8
|
feat(staffchat): 入口改造(StaffList/CustomerList微信行切新页)+useStaffProfile缓存+StatsPane固定列/金额格式+vitest依赖化
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 19:56:22 +08:00 |
|
浅念
|
4c3bc3ee93
|
feat(staffchat): 统计分析7tab(分型明细列+计数徽标+近7天窗+msgid定位,对齐云客)
- StatsPane 占位替换: 7 tab(label 带 (N) 计数)+daterange 默认近7天(清空后端兜底)
- 明细列配置驱动(KIND_COLS);link 列跳 single/group 聊天;红包/转账行带 ?msgid 定位
- 语音通话列对齐 CallList(通话人/类型/呼入呼出/接通状态/时长/录音播放 dialog/时间/操作)
- 敏感词 tab 空态卡(词库未配置,待 C1 接入,零请求)
- 员工微信列用资料卡信息(明细行无 staff 字段,数据本属该员工)
- counts 与明细解耦;双 seq 竞态守卫(兄弟组件惯例)
- api: getStaffStatsDetail kind 收紧为 StaffStatsKind 联合(后端 Literal 6 值)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 19:32:14 +08:00 |
|
浅念
|
8dba4a6104
|
fix(staffchat): ContactsPane 加请求序号防 ownerId/翻页切换竞态(对齐 ChatMain/MomentsPane 惯例)+修正跨tab关键词注释
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 19:06:55 +08:00 |
|
浅念
|
0371484dad
|
feat(staffchat): 通讯录(客户表+群表列对齐云客+批量勾选导出+分页)+朋友圈翻页失败内联重试
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 18:56:02 +08:00 |
|
浅念
|
328aec80bc
|
feat(staffchat): 朋友圈feed(作者卡+九宫格预览+点赞列表+滚动翻页,对齐云客)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 18:30:45 +08:00 |
|
浅念
|
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 |
|
浅念
|
98fb4b8248
|
fix(staffchat): 回list模式重载会话列表(修复search期间切tab后列表与高亮标签矛盾的残留边缘)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 17:45:55 +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 |
|
浅念
|
d4deb769e5
|
feat(chat): 会话侧栏全面美化(墨玉主题:药丸tab+圆角会话卡+今日红点+玉绿高亮)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-25 09:43:56 +08:00 |
|
浅念
|
85057e65dc
|
feat(chat): 侧栏筛选改tab按钮式(好友列表|群列表带计数,对齐云客聊天窗口)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-24 18:34:16 +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 |
|
浅念
|
0202dbc336
|
feat(ui): 详情抽屉全面美化(卡片式信息档案风格,覆盖8个页面的全字段抽屉)
- 头像区:渐变名片卡+玉绿头像框+身份绿点
- KV网格:双列卡片+行悬停高亮+分区玉绿竖条标题
- 顶栏:毛玻璃悬浮;图片:圆角阴影+悬停放大;背景:点阵纹理
- 零组件改动(纯CSS全局层,!important覆盖各页scoped样式)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-24 10:05:13 +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 |
|
浅念
|
d08255696c
|
fix(ui): 进场动画改纯opacity(transform残留值把fixed抽屉裁成半截)
transform:translateY(0)结束后仍是非none transform→创建containing block
→position:fixed的抽屉相对列表卡片定位被裁剪;opacity动画无此副作用
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-22 16:21:12 +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 |
|
浅念
|
12097df9f1
|
feat(ui): 墨玉控制台主题(深墨侧栏+玉绿主色+暖纸内容区,组件零改动)
- 侧栏:深墨渐变底+品牌玉点+玉绿激活竖条(微光)+右缘渐隐线
- 主色:Element 全系覆写为玉绿(#0d9f6e,微信血统精炼)
- 内容区:暖纸底+极淡点阵纹理;页面进场微上浮动画
- 卡片:10px圆角+双层阴影+jade hover;表格:精致表头+玉绿行hover+tabular数字
- 聊天流:纸面质感底;细滚动条;输入/按钮圆角统一
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-22 15:38:03 +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 |
|
浅念
|
00ae13b5c2
|
feat(deploy): 完成数据迁移与MySQL全链路(14表698k消息100%一致+5方言补丁+bind mount)
- migrate_sqlite_to_mysql.py: 逐表清空重导(幂等),复用repos强转,JSON列
解析,67万消息按msg_id键集分批,467s跑完14表全一致
- 修4个MySQL实测bug: NULLS LAST语法(compat.py编译补丁)、message.text
TEXT→MEDIUMTEXT(64KB字节上限,实测20.8万字符车源清单)、URL列
String(1024)→Text(分享链接超1KB)、垃圾超长member_id源头清理
- compose: media改bind mount(不占C盘Docker虚拟磁盘,实测2.5GB卷把
C盘撑爆引擎500);mysql不映射宿主机3306
- 前端Dockerfile: npm ci→install(本地/容器npm版本锁漂移)
- 五服务实测:nginx→backend→MySQL全链路返回真实数据(客户6859/A**杰25条
/搜索56条),媒体49536文件bind mount直读
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-22 12:40:44 +08:00 |
|
浅念
|
ce5cada898
|
feat(chat): 归属账号显示昵称(账号表查询,昵称+ID并列,回退原始ID)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-20 15:34:17 +08:00 |
|