浅念
|
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 |
|
浅念
|
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 |
|
浅念
|
a92fa2927c
|
feat: full-text search (messages + customers)
Backend (yunke-server):
- GET /api/search?q=&type=messages|customers|all&channel=&start=&end=&page=&page_size=
LIKE '%q%' scan over message.text + customer friend_nickname/real_name/
phone/wechat_phone. type=all returns both sections; each is its own Page[T].
- type=messages orders by timestamp desc; type=customers orders by
last_chat_time desc (nulls last).
- q required: missing/empty/whitespace -> HTTP 400.
- 14 new tests in tests/test_api_search.py (TDD red -> green).
Frontend (yunkes):
- New /search route + 搜索 nav item with Search icon.
- SearchView.vue: search bar, two stacked sections (消息结果 / 客户结果),
counts + independent pagination per section, keyword highlighting (escaped),
click message -> /chat/:channel/:ownerId/:talkerId,
click customer -> all-fields drawer (CustomerList pattern reuse).
- search() wrapper in src/api/index.ts with SearchQuery/SearchPayload types.
- Empty state: "输入关键词搜索消息和客户".
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-05 11:46:21 +08:00 |
|