Commit Graph

54 Commits

Author SHA1 Message Date
浅念 ad153aa2f7 fix(analytics): 环比同期对齐口径+趋势窗校验+异常新员工明细
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 17:34:14 +08:00
浅念 81af615738 docs(plan): 复核残留修订——exportListToCsv真实签名落地代码块/调度测试改相对日期
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 14:48:45 +08:00
浅念 0bc1250476 docs(plan): 评审修订——修5处seed/签名矛盾+起步词库补种+四页角标
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 14:42:56 +08:00
浅念 aecb556efd docs(plan): 数据分析板块 v1 实施计划——17 任务 TDD 全链(模型/指标/C1/调度/四页)
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 14:25:20 +08:00
浅念 33c5596543 docs(spec): 数据分析板块 spec 评审修订——min_msgs 参数/周一起始/alembic 取代上游过时说法
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 13:51:11 +08:00
浅念 d1b636abdc docs(spec): 数据分析板块 v1 设计存档——A1/A3/B2/C1 骑日汇总层+打底架构
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-04 13:45:13 +08:00
浅念 0a5eb49359 docs(deploy): DEPLOY.md 对齐 2026-09-03 实测落地(NAT 端口模式)
- 拓扑现实:服务器在路由器 NAT 后,公网 80 被其他设备占用
- 对外访问实测:1Panel 域名管理加 公网IP:32002 + 路由器转发,零配置直访
- 修媒体解压路径 bug:包内根是 media/,须 -C yunke-server
- HTTPS 改为将来项:域名 + 1Panel DNS 验证(绕开被占的 80)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-03 14:35:00 +08:00
浅念 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
浅念 ef7f6d8a23 fix(migrate): 类型迁移SQLite内联修复FTS触发器+多owner群room_id测试+DEPLOY补stamp依据与锁表提示
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 20:55:18 +08:00
浅念 35bfebd3e3 chore(backend): list_order迁移补齐+Task14类型修正落链+moments每页日志+MsgTypeParam派生+3处文档修正+Dockerfile打包migrations+DEPLOY补迁移步骤
- 9b0d0c133035: wechat_account.list_order 进迁移链(此前仅模型声明,
  干净库 /api/accounts 即 500);sa.inspect 幂等守卫兼容已手动加列的
  smoke.db
- fe63c6789e94(验证中发现的预存缺口,超出原清单): Task 14 的 5 列模型
  类型修正(4×URL String(1024)→Text, db_size Integer→BigInteger)从未落
  链——纯 alembic 新库会复活 >1KB 链接截断;对齐后干净库 alembic check
  全绿。SQLite message 表 batch 重建会掉 FTS 触发器+rowid 脱节(docstring
  记明 ensure_fts+rebuild_fts 修复,smoke.db 已修复验证)
- scrape_via_page: _iter_moments_pages 每页一行进度日志(镜像 _fetch_pages)
- messages: MsgTypeParam=Literal[tuple(_MSG_TYPE_FILTER)] 派生,杜绝
  双处罗列漂移(openapi enum 验证一致,492 绿含 422 行为)
- 文档: ChatGroup 复合PK docstring/groups room_id 多行表述/测试名去
  单行假设;Dockerfile 补 alembic.ini+migrations;DEPLOY 增「数据库
  迁移」节(新库/旧库stamp路径/回填脚本显式DB_URL)+运维表升级行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 20:32:25 +08:00
浅念 3f867718ff docs(analytics): 方案v1.1评审修订——价值图谱(8能力域/三层价值)+权限模型/性能承载横切章节+E0数据健康+B5 RFM+10处口径漏洞修复(首沟通口径/流失三分法/迟到回写/尾部判定/误报治理/zip导出/一人多号聚合/图表库选型)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 17:21:39 +08:00
浅念 c21758dfb2 docs(plan): 填写Task4判别记录(双编码发现+逐码证据+回填终态+前端兜底注意)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 15:32:07 +08:00
浅念 2f73d79a6d docs(plan): 吸收评审4条(groups路由实为model_validate免改/客户搜索需加q参数/moments调度+图片本地化补step/行号校正)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 12:35:41 +08:00
浅念 05a31022db docs(plan): 员工聊天窗口五视图实施计划(15任务:后端7+前端8,TDD+真机判别spike)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 12:31:53 +08:00
浅念 00180ef479 docs(spec): 二次审计修订8项(微信群表列真机结构/统计明细分tab列型/phone_call userId转换坑/类型归一化回填任务/通讯录批量操作/msgid定位/chat_group补列/左栏折叠)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 12:10:16 +08:00
浅念 2d93f31be7 docs(spec): 吸收评审建议(时间s→ms转换/msg_type映射推导注明/moments头部来源/统计全tab明细/WIP还原明确/空态描述)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 11:59:30 +08:00
浅念 614680a4eb docs(spec): 员工聊天窗口对齐设计(StaffChat五视图:单聊/群聊/朋友圈/通讯录/统计分析,基于2026-08-25云客真机抓包)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 11:57:29 +08:00
浅念 e5ebb918fc docs(analytics): 数据分析与增值功能全景方案(22项/5系列,基于2026-08-24实测数据审计,首批E1+A1+A3+B2+C1)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 18:28:52 +08:00
浅念 2175cb0169 feat(deploy): MySQL容器实测打通(3个方言bug修复)+部署文档
- repos: on_duplicate只更新实际插入列(fetched_at等Python-default列,
  SQLite excluded容忍/MySQL new.*直接报Unknown column)
- repos: _coerce_int增加日期字符串→ms epoch分支 + _INT_FIELDS补
  last_update/last_chat_time/timestamp/update_time(字符串直通BigInteger)
- models: wechat_account.db_size Integer→BigInteger(实测2.17GB超32位上限)
- compose: mysql不映射宿主机3306(本机已占;容器内服务名互联)
- docs/DEPLOY.md: 服务器部署全指南(架构/步骤/数据迁移/运维命令/注意事项)
- 容器实测:Playwright抓取55账号→MySQL upsert全通

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-22 10:40:04 +08:00
浅念 123c23242c chore: start_backend.sh启动脚本+plan4a/4b历史计划文档
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-19 16:48:22 +08:00
浅念 7330cd1766 docs(spec): 接 WA 自动同步(accounts+friends wiring)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 16:27:27 +08:00
浅念 239868531f docs(spec): 修复群抓取(friend_list/es+friendTypeYunke=2,替换 getChatroomList)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 13:57:41 +08:00
浅念 82f7505298 docs(spec+plan): 删除 AccountList 页(/accounts→/staff 重定向,总 spec 收尾)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 17:15:04 +08:00
浅念 e487556253 docs(plan): 导出会话HTML(③)实现计划(ChatTimeline 按钮 + downloadBlob 文件名修复)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 17:04:53 +08:00
浅念 e4f850672c docs(spec): ③ 纠正(仅 ChatTimeline 加导出按钮 + 修 downloadBlob 文件名;CustomerList/GroupList 已实现)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 17:03:51 +08:00
浅念 499a6ebd7b docs(spec): 导出会话聊天HTML(③,前端接线;后端 export.py 已就绪)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 17:00:49 +08:00
浅念 4d18a0e755 docs(plan): ④ 移除未用 chatChannel(避免 noUnusedLocals,WA 时再加)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 16:17:53 +08:00
浅念 18919f3401 docs(plan): CallList ④ 微信语音 单元格可点 实现计划
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 16:15:50 +08:00
浅念 3a30a41ca1 docs(spec): ④ 收窄至微信语音(WA 未核实云客+列结构不同→后续,遵循浏览器优先)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 16:14:51 +08:00
浅念 f4f0855439 docs(spec): CallList 列内可点(④)设计(微信/WA语音单元格→聊天/详情,电话不动)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 16:12:07 +08:00
浅念 4cb6cf50c4 docs(plan): step5 plan 评审修复(删 getMessages import + Task4 显式替换说明)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 14:53:39 +08:00
浅念 c6dbda3bec docs(plan): ChatTimeline 会话列表 step5 实现计划(后端 /api/sessions + 双栏 + 选择器)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 14:47:49 +08:00
浅念 73fd9d0975 docs(spec): 修正 today_count 时区(钉死 UTC+8) + 日期选择器持久 ref 澄清
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 14:44:58 +08:00
浅念 9311607bda docs(spec): ChatTimeline 会话列表对齐云客(step 5)设计
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 14:37:11 +08:00
浅念 abe86489b9 docs(plan): stat modal Phase B 实现计划(列对齐 + 客户微信带窗跳聊天)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 13:41:53 +08:00
浅念 2a33f944ec docs(spec): 微信员工 stat modal Phase B 设计(列对齐云客 + 客户微信→带窗聊天)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-08 13:12:13 +08:00
浅念 f6c45e983a docs(plan): 微信员工 5 数字 modal Phase A 实现计划(全本地 message 聚合)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 18:20:42 +08:00
浅念 c73d845874 docs(spec): 5 数字 modal spec——§8 索引表述与无 Alembic 对齐
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 17:40:56 +08:00
浅念 faed2f586d docs(spec): 5 数字 modal spec 修订——room_id 私聊过滤 + 分页适配 + handler 换源 + 无需 Alembic
spec review 反馈:群消息误算(加 room_id 过滤)、YkStaffDetailModal fetcher 分页适配
(合成分页)、5 handler 已存在(换数据源非接线)、索引已存在(不加 Alembic)、NULL 语义、
日期选择器放 StaffList、路径前缀。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 17:39:37 +08:00
浅念 78eea7f08f docs(spec): 微信员工 5 数字 modal (Phase A) 设计——全本地消息聚合
数据源真机核实(wxStatsByTypes/wxChatInfo);从 message 表聚合 5 数字+客户明细;
复用 YkStaffDetailModal;口径近似(跟进等)。姓名drawer/主badge = Phase B。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 17:36:05 +08:00
浅念 90e614e2d7 docs(plan): 录音本地化 plan 修订——修复下载死循环 + 测试 session + WA v-if
plan review 反馈:while 循环加 tried 集合排除已试 call_id(持续失败行不死循环);
_make_engine 只返回 engine 需自建 sessionmaker;WA 录音按钮 v-if 用 ossFileName。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 16:06:56 +08:00
浅念 a2f6b023fa docs(plan): 录音批量本地化实现计划(6 task,TDD,复用 media 管道)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 15:59:46 +08:00
浅念 d3fd0a5425 docs(spec): 录音本地化 spec——drawer 播放也切本地 + media URL 约定 + sync 前提
用户 review:把详情 drawer 录音播放纳入本地化范围(一致性+全本地);
补 media URL 前缀对齐现有渲染、sync pass 须实跑的运维前提。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 15:55:12 +08:00
浅念 f8a6acd009 docs(spec): 录音本地化 spec 修订——media_type='audio' 新label + store/session 接缝澄清
spec review(Approved)3 条 advisory:media_type 约定、ObjectStore 来源、
session 而非 engine。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 15:22:08 +08:00
浅念 cd4ac5feb3 docs(spec): 录音批量本地化设计——复用现有 media 管道接线
phone_call.record_media_hash + download_call_recordings + sync_call_recordings
独立 pass + PhoneCallOut 字段 + CallList 本地优先/OSS 回退。范围仅通话录音;
语音消息/voice_clip/转写后续。路线图第 1 个 plan(4c 长语音只读已搁置)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 15:13:34 +08:00
浅念 334adcb712 docs(spec): 4c 设计修订——补 user_real_name API 参数 + 员工姓名筛选语义/播放/scaper 文件定稿
spec review 反馈:API↔modal 员工姓名筛选对齐 + 打开语义澄清 +
channel 移出 body + scraper 文件/播放方式 pin。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 14:36:50 +08:00
浅念 fd33e82d62 docs(spec): Plan 4c 设计——长语音列表(voice_clip)本地化 + 只读展示
数据来源真机确认(POST /wechatweb/call/list 请求/响应);voice_clip 表 +
scraper/sync + /api/voice-clips + 只读 VoiceClipModal + CallList 接入。
匹配/转写/统计卡片等留 4d+。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 14:32:23 +08:00
浅念 a66c3be00a chore: final Minor polish — export filename/test断言, downloadBlob 类型/清理, plan docs
address review Minors: drop redundant filename replace, assert 暂无消息,
tighten downloadBlob return type + try/finally, fix plan group time-picker wording.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 18:06:17 +08:00
浅念 de08bd09c7 docs: Plan 3 — GroupList 对齐云客(采集 + TDD plan)
phase0 采集云客「沟通」板块群列表(微信 wechatdetail/2 + WA friendlist 群列表 tab),
写 Plan 3(分 channel tab 各自列 + viewChat),经 plan-reviewer 评审 Approved。
已知 gap:smoke.db 0 群(空表验证)+ WA 群抓取缺失(字段推断)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 11:11:37 +08:00
浅念 c31d79f1e2 docs: Plan 2 — CustomerList 对齐云客(采集 + TDD plan)
phase0 采集云客「沟通」板块客户列表(wechat wechatdetail/1 + waBusiness/friendlist),
dump raw_json 字段覆盖,产出列+交互+字段映射;写 Plan 2(分 channel tab 各 7 列 +
查看聊天记录→ChatTimeline),经 plan-reviewer 评审 Approved。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 10:12:36 +08:00