Commit Graph

  • 4d18a0e755 docs(plan): ④ 移除未用 chatChannel(避免 noUnusedLocals,WA 时再加) 浅念 2026-08-08 16:17:53 +08:00
  • 18919f3401 docs(plan): CallList ④ 微信语音 单元格可点 实现计划 浅念 2026-08-08 16:15:50 +08:00
  • 3a30a41ca1 docs(spec): ④ 收窄至微信语音(WA 未核实云客+列结构不同→后续,遵循浏览器优先) 浅念 2026-08-08 16:14:51 +08:00
  • f4f0855439 docs(spec): CallList 列内可点(④)设计(微信/WA语音单元格→聊天/详情,电话不动) 浅念 2026-08-08 16:12:07 +08:00
  • 239f07e7a1 feat(chat): 页内日期选择器(跨会话持久)+ 关键词搜索(已加载页过滤) 浅念 2026-08-08 15:29:19 +08:00
  • 8f166a9c18 feat(chat): ChatTimeline 双栏化(左会话列表)+ 路由可选参 + badge 账号级入口 浅念 2026-08-08 15:22:20 +08:00
  • 394bfa8a7c feat(chat): getSessions + ChatSidebar 会话列表组件 浅念 2026-08-08 15:13:30 +08:00
  • a418830a90 feat(api): /api/sessions 账号会话列表(好友+群,今日消息数+最近联系时间,全本地聚合) 浅念 2026-08-08 14:58:23 +08:00
  • 4cb6cf50c4 docs(plan): step5 plan 评审修复(删 getMessages import + Task4 显式替换说明) 浅念 2026-08-08 14:53:39 +08:00
  • c6dbda3bec docs(plan): ChatTimeline 会话列表 step5 实现计划(后端 /api/sessions + 双栏 + 选择器) 浅念 2026-08-08 14:47:49 +08:00
  • 73fd9d0975 docs(spec): 修正 today_count 时区(钉死 UTC+8) + 日期选择器持久 ref 澄清 浅念 2026-08-08 14:44:58 +08:00
  • 9311607bda docs(spec): ChatTimeline 会话列表对齐云客(step 5)设计 浅念 2026-08-08 14:37:11 +08:00
  • cdbfe3e5da fix(chat): 日期窗 start/end 成对透传(避免单边过滤) 浅念 2026-08-08 13:56:14 +08:00
  • 765f80dd02 feat(chat): ChatTimeline 支持 start/end query 日期窗过滤(从 stat modal 带窗跳入) 浅念 2026-08-08 13:53:02 +08:00
  • 7405ac5fc9 feat(staff): stat modal 列对齐云客(序号/员工信息/员工微信) + 客户微信可点带窗跳聊天 浅念 2026-08-08 13:46:59 +08:00
  • abe86489b9 docs(plan): stat modal Phase B 实现计划(列对齐 + 客户微信带窗跳聊天) 浅念 2026-08-08 13:41:53 +08:00
  • 2a33f944ec docs(spec): 微信员工 stat modal Phase B 设计(列对齐云客 + 客户微信→带窗聊天) 浅念 2026-08-08 13:12:13 +08:00
  • 5fd9878c38 fix(staff): on-demand modal 拉取仅在日期窗未变时回写缓存 浅念 2026-08-07 18:58:30 +08:00
  • f51623d652 feat(staff): 微信 5 数字 modal 换本地数据源(metric 过滤 + 合成分页) 浅念 2026-08-07 18:52:07 +08:00
  • cab8ab95dc fix(staff): loadWechatStats 加载竞态守卫(token)+ 重查时清空旧窗数字 浅念 2026-08-07 18:50:02 +08:00
  • 876767cd68 feat(staff): StaffList 微信 5 数字改读本地 summary + 日期选择器(Phase A 接线) 浅念 2026-08-07 18:42:19 +08:00
  • 628659b849 refactor(api): staff-chat-stats 确定性排序 + last_is_send=None 分支测试 + 类型标注 浅念 2026-08-07 18:37:26 +08:00
  • d2b2c0f5b3 feat(api): staff-chat-stats 聚合端点(微信员工 5 数字 + 客户明细,全本地 message) 浅念 2026-08-07 18:26:25 +08:00
  • f6c45e983a docs(plan): 微信员工 5 数字 modal Phase A 实现计划(全本地 message 聚合) 浅念 2026-08-07 18:20:42 +08:00
  • c73d845874 docs(spec): 5 数字 modal spec——§8 索引表述与无 Alembic 对齐 浅念 2026-08-07 17:40:56 +08:00
  • faed2f586d docs(spec): 5 数字 modal spec 修订——room_id 私聊过滤 + 分页适配 + handler 换源 + 无需 Alembic 浅念 2026-08-07 17:39:37 +08:00
  • 78eea7f08f docs(spec): 微信员工 5 数字 modal (Phase A) 设计——全本地消息聚合 浅念 2026-08-07 17:36:05 +08:00
  • 05cc1dfcc4 feat(calls): 前端录音播放本地优先(/api/media/{hash}) + OSS 回退 + drawer 浅念 2026-08-07 16:55:49 +08:00
  • 1578db3467 feat(api): PhoneCallOut 暴露 record_media_hash 浅念 2026-08-07 16:52:41 +08:00
  • b59e3cd9fe chore(sync): Task 3 review fixes——删未用 import + module docstring 诚实化 + repr(exc) 一致 + 批处理 guard 浅念 2026-08-07 16:51:10 +08:00
  • 38071e40ba feat(sync): sync_call_recordings + ENTITY_FUNCS['call_recordings'] 独立下载 pass 浅念 2026-08-07 16:40:06 +08:00
  • 1e399ff8c0 feat(scraper): download_call_recordings 下载通话录音到本地 Media + 回写 record_media_hash 浅念 2026-08-07 16:30:29 +08:00
  • 8f70ac5220 feat(db): phone_call.record_media_hash 列 + 迁移(录音本地化 FK→Media) 浅念 2026-08-07 16:20:18 +08:00
  • 90e614e2d7 docs(plan): 录音本地化 plan 修订——修复下载死循环 + 测试 session + WA v-if 浅念 2026-08-07 16:06:56 +08:00
  • a2f6b023fa docs(plan): 录音批量本地化实现计划(6 task,TDD,复用 media 管道) 浅念 2026-08-07 15:59:46 +08:00
  • d3fd0a5425 docs(spec): 录音本地化 spec——drawer 播放也切本地 + media URL 约定 + sync 前提 浅念 2026-08-07 15:55:12 +08:00
  • f8a6acd009 docs(spec): 录音本地化 spec 修订——media_type='audio' 新label + store/session 接缝澄清 浅念 2026-08-07 15:22:08 +08:00
  • cd4ac5feb3 docs(spec): 录音批量本地化设计——复用现有 media 管道接线 浅念 2026-08-07 15:13:34 +08:00
  • 334adcb712 docs(spec): 4c 设计修订——补 user_real_name API 参数 + 员工姓名筛选语义/播放/scaper 文件定稿 浅念 2026-08-07 14:36:50 +08:00
  • fd33e82d62 docs(spec): Plan 4c 设计——长语音列表(voice_clip)本地化 + 只读展示 浅念 2026-08-07 14:32:23 +08:00
  • 81f5a31864 fix(calls): drawer callStatusLabel channel-aware + isRoom 按 是/否 渲染 浅念 2026-08-07 12:02:14 +08:00
  • 7a5bb9927e feat(calls): callStatusLabel channel-aware + callTypeLabel WA + 补 WA/微信语音字段 label 浅念 2026-08-07 11:54:38 +08:00
  • 28d8448f62 feat(calls): 电话 tab 保留通用 8 列(按 channel 分离列集) 浅念 2026-08-07 11:09:47 +08:00
  • f8705cb741 feat(calls): WA 语音 tab 对齐云客列(状态/客户/员工/通话时间和录音) 浅念 2026-08-07 11:03:22 +08:00
  • f4dc115129 feat(calls): 微信语音 tab 对齐云客列(通话信息/客户/员工微信/员工信息/录音/时长) 浅念 2026-08-07 10:57:17 +08:00
  • ca3a2a2d3d feat(calls): CallList 改 el-tabs(微信语音/WA 语音/电话)+ CallChannel 加 wa_voice_call 浅念 2026-08-07 10:50:38 +08:00
  • 21c555a7e4 test: orchestrator voice sync skip/passthrough 路径覆盖 浅念 2026-08-07 09:57:34 +08:00
  • 79b89bc919 fix(scraper): voice body 加 departmentId/isRoom/时间窗 + sync 解析 root department_id 浅念 2026-08-07 09:49:31 +08:00
  • 18620870c6 feat(sync): sync_wa_voice_calls + scheduler ENTITY_FUNCS wa_voice_calls 浅念 2026-08-07 09:36:14 +08:00
  • 169a64ee29 feat(scraper): WA 语音通话抓取 scrape_wa_voice_calls(callSource=4) 浅念 2026-08-07 09:26:16 +08:00
  • a66c3be00a chore: final Minor polish — export filename/test断言, downloadBlob 类型/清理, plan docs 浅念 2026-08-06 18:06:17 +08:00
  • 6dfed36c05 feat(groups): 微信群操作列加「导出HTML聊天记录」(补 Plan3 漏的操作) 浅念 2026-08-06 17:57:58 +08:00
  • d1475e8f42 feat(customers): 微信客户操作列加「导出HTML聊天记录」+ 时间选择 浅念 2026-08-06 17:52:15 +08:00
  • b63b71bf68 feat(staff): 微信员工明细 modal 内客户微信 → 聊天记录(二级操作) 浅念 2026-08-06 17:47:02 +08:00
  • 6a30bef21b feat(staff): 微信员工 主badge→聊天 + 员工姓名→drawer(纠正手机号误判) 浅念 2026-08-06 17:43:45 +08:00
  • b9055b5714 feat(staff): 微信员工及时回复 2 数字 → 明细 modal(回复率不可点) 浅念 2026-08-06 17:40:24 +08:00
  • c00522fc07 feat(staff): 微信员工沟通数 3 数字 → 明细 modal(补 Plan1 误判漏做的操作) 浅念 2026-08-06 17:37:08 +08:00
  • 1368e3a471 feat(modal): YkStaffDetailModal Col 支持可选 onClick(单元格可点) 浅念 2026-08-06 17:32:05 +08:00
  • ebac26822b feat(api): add downloadBlob helper for blob attachment download 浅念 2026-08-06 17:27:16 +08:00
  • d85bf64dde feat(api): GET /api/export/chat-html — 导出 1:1/群聊天为 HTML 浅念 2026-08-06 17:19:46 +08:00
  • bfdb5852bb feat(groups): align GroupList to 云客 — per-channel tabs, view-chat action 浅念 2026-08-06 11:14:00 +08:00
  • de08bd09c7 docs: Plan 3 — GroupList 对齐云客(采集 + TDD plan) 浅念 2026-08-06 11:11:37 +08:00
  • 5d4a0c5901 feat(customers): align CustomerList to 云客 — per-channel tabs, 7 cols each, view-chat action 浅念 2026-08-06 10:19:14 +08:00
  • 3507de55fa feat(customerFields): add fromTypeLabel helper 浅念 2026-08-06 10:13:40 +08:00
  • c31d79f1e2 docs: Plan 2 — CustomerList 对齐云客(采集 + TDD plan) 浅念 2026-08-06 10:12:36 +08:00
  • 20b01ab849 fix(staff): review fixes — CSS ellipsis, owner_account_id scoping, viewChat guard 浅念 2026-08-05 19:25:24 +08:00
  • 5bf43fc67b feat(staff): wechat stat-number/nickname → navigation 浅念 2026-08-05 19:15:05 +08:00
  • 16149fd499 feat(staff): WhatsApp nickname → chat timeline 浅念 2026-08-05 19:09:24 +08:00
  • dfdd0595d2 feat(staff): action buttons → filtered customer/group list 浅念 2026-08-05 19:06:27 +08:00
  • 02a709ba93 fix(staff): format time columns in detail modal 浅念 2026-08-05 18:58:06 +08:00
  • 55578cf299 feat(staff): WhatsApp stat-number click → detail modal 浅念 2026-08-05 18:56:27 +08:00
  • 8e79f80925 feat(ui): YkStaffDetailModal shared detail-modal component 浅念 2026-08-05 18:51:35 +08:00
  • 635e1145b4 feat(api): customer query params user_id/add_time_since/last_chat_since 浅念 2026-08-05 18:50:14 +08:00
  • fef176bd90 feat(api): customer filters user_id / add_time_since / last_chat_since 浅念 2026-08-05 18:48:59 +08:00
  • 8d7774b9f5 feat(scripts): backfill Customer.add_time from raw_json 浅念 2026-08-05 18:45:55 +08:00
  • 8494d564ef feat(scraper): map customer add_time from raw_json 浅念 2026-08-05 18:44:04 +08:00
  • b5733f15d2 feat(db): add Customer.add_time column + migration 浅念 2026-08-05 18:39:17 +08:00
  • 9499110427 docs(plan): record wechat staff-list probe + adjust Task 8/9 浅念 2026-08-05 18:35:18 +08:00
  • 1d815d84b9 docs: UI alignment spec + StaffList interaction plan 浅念 2026-08-05 18:30:12 +08:00
  • 5336431025 feat(staff): align StaffList columns to 云客 backend 浅念 2026-08-05 18:30:12 +08:00
  • 62dc663294 feat: employee page with channel tabs (WeChat/WhatsApp account lists) 浅念 2026-08-05 14:13:21 +08:00
  • df29dd027a feat: scheduler + CLI + docker-compose + README 浅念 2026-08-05 12:11:29 +08:00
  • c8311bb496 fix: sanitize lone surrogate chars in stored data + backfill script 浅念 2026-08-05 11:57:12 +08:00
  • a92fa2927c feat: full-text search (messages + customers) 浅念 2026-08-05 11:46:21 +08:00
  • 8fde1d8597 fix: render chat media by URL (images/video/voice) instead of unknown-type placeholder 浅念 2026-08-05 10:23:01 +08:00
  • 0d466c4e4a feat: full-field display for group/call/sms (raw_json + drawers) 浅念 2026-08-05 10:12:49 +08:00
  • fd86adfb63 chore: seed chat messages for listed customers (seed_chats) 浅念 2026-08-05 09:54:40 +08:00
  • 4bfaed4693 fix: parse WhatsApp lastUpdate datetime string to ms epoch 浅念 2026-08-01 17:58:00 +08:00
  • a57ed57616 fix: whatsapp businessFriendList needs page+departmentId+type 浅念 2026-08-01 17:53:26 +08:00
  • 6ac47a1203 feat: full-field display for message/staff/accounts (raw_json + drawers) 浅念 2026-08-01 17:47:50 +08:00
  • e5af1a2bc2 feat: customer full-field display (raw_json + cloud-matching list + all-fields drawer) 浅念 2026-08-01 17:24:38 +08:00
  • 0df53c6b1a fix: wechat account scrape (form-data+dates) + frontend staff page 浅念 2026-08-01 17:11:17 +08:00
  • 4dcfc66741 fix: drop source header (breaks msg/chats) + context-aware talker_id 浅念 2026-08-01 16:52:48 +08:00
  • b822e87d4d feat: remaining frontend views (groups/calls/sms/sync) + messageout media fields 浅念 2026-08-01 16:38:47 +08:00
  • 6c4cd92ae6 feat: vue3 frontend scaffold + org tree + customer list + chat timeline 浅念 2026-08-01 16:27:22 +08:00
  • ff7e9cb1d9 feat: backend read api for all entities (messages/groups/calls/sms/org/sync) 浅念 2026-08-01 16:15:40 +08:00
  • 44d64dd237 feat: phone-call + sms scrapers 浅念 2026-08-01 15:59:25 +08:00
  • 8a22fd9ff8 feat: whatsapp account/friend/message scrapers 浅念 2026-08-01 15:48:03 +08:00
  • 2508b5aec1 fix: live-validation fixes (list-coercion, .env session loading, smoke summary) 浅念 2026-08-01 15:23:43 +08:00
  • 46e3880c0b feat: anti-risk-control stealth layer (browser headers, jittered throttle, backoff, volume cap) 浅念 2026-08-01 14:51:46 +08:00