更新日志

# C5客服助手版本日志

## 版本规则

- 当前主线:3.7.x。
- 小功能迭代:从当前版本升一位小版本,例如 `3.0` -> `3.1`。
- 纯修复版本:在当前功能版本后加补丁号,例如 `3.1.1`。
- 大功能、多次更新后集中升级:升主版本,例如 `3.x` -> `4.0`。
- 每次生成部署包,包名必须带版本号,例如:
  - `sobot_qc_deploy_v3.1_20260625_review_manual_score.tar.gz`
  - `sobot_qc_deploy_v3.1.1_20260625_review_legacy_fix.tar.gz`
- 新开 4.0 或其他新版本对话前,必须先归档当前版本信息,并更新本文件和 `AI_HANDOFF.md`。

## 版本记录

### v3.7.5 - 2026-07-16

- 租赁交接通知:
  - 新工单继续实时发送 Markdown,但不再逐条 @ 值班人员或额外手机号。
  - 每天 09:00–17:00 整点检查待处理工单;仅当待处理大于 0 时发送数量提醒并 @ 当前值班人员。
  - 保留 17:55 下班前检查,待处理为 0 时不发送;18:00 不执行整点提醒。
  - 推送设置页同步展示新的整点提醒和清零不通知规则。
- 晚班提醒:
  - 晚班班次继续保持 15:00–24:00,仅将通知开始时间调整为 18:00。
  - 提醒间隔改为从 18:00 起计算,18:00 发送第一条,随后按配置间隔发送至 24:00 前。
- 部署包关闭 macOS CopyFile 扩展属性写入,减少 Linux 解压时的 `LIBARCHIVE.xattr` 提示。
- 页面版本标识升级为 `V3.7.5`。

### v3.7.4 - 2026-07-14

- 浏览器站点图标:
  - 使用用户确认的白底黑猫图片制作猫头特写图标,保留双耳和黄色眼睛,移除上方手部及大部分身体。
  - 全部共享页面统一声明 64×64 PNG favicon,并补充 180×180 Apple Touch Icon。
  - 页面生成器同步复制两套图标资源,确保生产部署后各页面均可加载。
- 页面版本标识升级为 `V3.7.4`。

### v3.7.3 - 2026-07-13

- 知识库维护分类统计修复:
  - 修复父分类左侧显示“自身 + 子分类”总数,但右侧只展示父分类直属知识,导致数量不一致的问题。
  - 点击父分类后,右侧列表现在会包含父分类自身及所有下级分类的知识。
  - 父分类数量改为递归汇总全部下级分类,后续增加三级或更深层分类时口径仍保持一致。
- 页面版本标识升级为 `V3.7.3`。

### v3.7.2 - 2026-07-13

- 企业微信 Markdown @ 人兼容修复:
  - 修复推送切换为 Markdown 后,配置的手机号不再触发 @ 人的问题。
  - 根因是企业微信 Markdown 请求不识别 `mentioned_mobile_list`;该字段只适用于文本消息,Markdown 的 @ 需要企业微信 userid。
  - 现统一先发送完整 Markdown;存在 @ 手机号时,再发送一条不含业务数据和人员名单的短文本,仅用于触发企业微信手机号 @。
  - 晚班、凌晨班正文继续不展示命中人员,避免与企业微信实际 @ 名单重复。
- 页面版本标识升级为 `V3.7.2`。

### v3.7.1 - 2026-07-10

- 企业微信推送统一为 Markdown:
  - 排队推送、每日质检完成/失败、手动质检重跑完成/失败、租赁交接新工单/汇总、晚班提醒和凌晨班提醒均使用 Markdown 格式。
  - 推送标题、关键指标和异常状态统一强化展示;高危会话、待处理工单和失败原因使用醒目警示色。
  - 推送设置页将排队推送格式固定显示为“Markdown(统一格式)”,历史普通文本配置自动兼容为 Markdown。
  - 晚班、凌晨班通知正文不再显示“命中人员”名单;机器人实际 @ 人继续按班表与额外手机号去重后发送,避免名单重复。
- 页面版本标识升级为 `V3.7.1`。

### v3.7.0 - 2026-07-10

- 版本归档:
  - 归档 3.6.x 迭代线,归档基线为 `v3.6.15`。
  - 新增 `docs/archive/customer-assistant-3.6.md`,集中记录 3.6.x 的客服运营日报、企业微信定时任务和质检统计修复。
- 版本启动:
  - 开启 C5客服助手 3.7.x 迭代线,后续新需求统一从 `v3.7.0` 开始记录。
  - 本次仅切换开发版本和交接文档,不改变现有业务逻辑,不生成生产部署包。
- 页面版本标识升级为 `V3.7.0`。

### v3.6.15 - 2026-07-10

- 客服运营日报 / 定时拉取:
  - `customer_operations_daily.py` 新增 `--catch-up-days`,自动任务每天会补拉最近 3 天,避免部署晚于定时点、接口临时失败或 cron 漏跑造成日报断档。
  - 多日补拉时只推送最新一天,历史日期只补归档数据,避免企业微信群重复刷屏。
  - 业务通知 cron 改为 `--day yesterday --catch-up-days 3 --send`。
- 页面版本标识升级为 `V3.6.15`。

### v3.6.14 - 2026-07-09

- 企业微信推送 / 定时任务:
  - 重启脚本同步业务通知 cron 时,新增每日 09:10 自动执行 `customer_operations_daily.py --day yesterday --send`,客服运营日报不再依赖手工添加 cron。
  - 业务通知 cron 清理范围补充客服运营日报,避免重复安装旧任务。
  - 重启脚本文案同步为“租赁交接 / 班次提醒 / 客服运营日报”三类业务通知。
- 页面版本标识升级为 `V3.6.14`。

### v3.6.13 - 2026-07-09

- 历史质检 / 月度质检分:
  - 修复月度统计只读取前 200 条会话人工质检记录的问题;当月会话数超过 200 后,后续会话的人工低分也会被计入每日和月度低分。
  - 补充超过 200 条日报数据时,人工分仍覆盖系统分的回归测试。
- 页面版本标识升级为 `V3.6.13`。

### v3.6.12 - 2026-07-09

- 智能质检:
  - 修复“已质检 + 全部客服 + 低于 60”筛选仍按原始系统分过滤的问题;现在会优先使用人工分,避免不指定客服时人工低分会话筛不出来。
- 历史质检 / 月度质检分:
  - 补充回归验证:每日 CSV 中原始 100 分、人工改为低分的会话,会计入对应客服当日和月度低分会话数。
- 页面版本标识升级为 `V3.6.12`。

### v3.6.11 - 2026-07-08

- 历史质检 / 月度质检分:
  - 修复人工标注低分后,若该会话未被每日 CSV 汇总底表包含,月度质检分和每日质检分明细不显示的问题。
  - 月度分现在会合并 `qc_reviews` 中本月已保存的人工质检记录;同一会话已在 CSV 中时不重复计算。
- 企业微信推送配置:
  - 示例/历史配置中的 `replace-with...webhook` 占位值会按未配置处理,避免页面误判为已配置。
- 页面版本标识升级为 `V3.6.11`。

### v3.6.10 - 2026-07-08

- 企业微信推送:
  - 新增 `shift_reminder_alert.py` 后台执行器,晚班提醒和凌晨班提醒会按班表命中人员、额外手机号、独立业务 Webhook 发送。
  - 晚班提醒严格限制在 15:00-24:00,凌晨班提醒严格限制在 00:00-09:00,并按页面配置的准点间隔触发。
  - 租赁交接定时汇总、晚班提醒、凌晨班提醒统一由 `install_rental_handoff_alert_cron.sh` 安装 cron。
  - 标准重启脚本 `restart_portal_with_env.sh` 会自动同步租赁交接/班次提醒定时任务,避免部署后漏装 cron 导致不生效。
- 页面版本标识升级为 `V3.6.10`。

### v3.6.9 - 2026-07-08

- 企业微信推送设置:
  - 将“客服运营日报”加入统一推送配置页面,可在后台管理开关、Webhook 和 @ 手机号。
  - 客服运营日报推送优先读取统一推送设置中的 `customer_operations_*` 字段,兼容旧的 `customer_operations_alert` 配置。
- 页面版本标识升级为 `V3.6.9`。

### v3.6.8 - 2026-07-08

- 客服运营日报:
  - 完成企业微信 Markdown 日报推送,支持用加粗和颜色区分总会话、排队接通、满意度和异常人员栏目。
  - 新增 `customer_operations_alert.webhook_url` 配置;未配置时回退复用现有 `queue_alert.webhook_url`。
  - `customer_operations_daily.py --send` 会在归档成功后发送日报,`--no-send` 仍只归档不推送。
- 页面版本标识升级为 `V3.6.8`。

### v3.6.7 - 2026-07-07

- 客服运营日报:
  - 每次归档日报入库前都会按数据库里目标日期前 7 天重新计算“较前 7 日”,修复区间补拉后总会话对比显示 0.00% 的问题。
  - 迷你指标卡和圆盘百分比改为紧凑显示,避免 `100.00%` 在卡片内拆行溢出。
- 页面版本标识升级为 `V3.6.7`。

### v3.6.6 - 2026-07-07

- 客服运营日报:
  - 将页面中的排队数量、排队比例口径改为“平均排队接通时长”,并展示智齿 `human_session` 返回的 `avg_queue_accept_duration`。
  - 删除按 `human_consult - human_valid` 推断排队量的逻辑,避免把无效人工会话误当作排队会话。
  - 同步保存 `queue_accept_zb` 排队接通率和 `session_leave_in_queue` 排队离开会话,作为留档字段。
- 页面版本标识升级为 `V3.6.6`。

### v3.6.5 - 2026-07-07

- 客服运营日报:
  - 修复历史排队会话一直为 0 的问题;智齿工作统计未提供专用排队字段时,按 `human_consult - human_valid` 汇总为排队/未进入实际人工会话数。
  - 重新补拉 7 月 1-6 日后,排队会话会写入日报汇总和 7 日趋势。
- 页面版本标识升级为 `V3.6.5`。

### v3.6.4 - 2026-07-07

- 客服运营日报:
  - 日报抓取名单改为按 `staff_id_name_map` 客服 ID 白名单过滤,避免本地消息库中的非客服账号被带入智齿统计。
  - 重新归档同一天数据时,会删除本次结果中不存在的旧客服行,补拉后可自动清掉历史脏数据。
- 页面版本标识升级为 `V3.6.4`。

### v3.6.3 - 2026-07-07

- 客服运营日报:
  - 修复满意度圆盘 `100.00%` 在圆心内被拆成两行的问题。
  - 在线时长达标线从 7.5 小时调整为 7 小时,页面标准文案改为跟随后端 `online_standard_seconds` 动态展示。
  - `customer_operations_daily.py` 新增 `--start-date/--end-date`,支持一次性补拉 7 月前几日等历史区间数据。
- 页面版本标识升级为 `V3.6.3`。

### v3.6.2 - 2026-07-07

- 客服运营日报:
  - 新增 `staff_id_name_map`,日报抓取优先按智齿客服 ID 映射真实姓名,避免“鸣神666”“齐天大圣”等智齿昵称进入排行和明细。
  - 智齿工作统计合并逻辑兼容 `staff_id`、`staffId`、`serviceid` 等多种 ID 字段,并保留配置覆盖能力。
- 页面版本标识升级为 `V3.6.2`。

### v3.6.1 - 2026-07-07

- 客服运营日报:
  - 修复页面在较窄浏览器宽度下排行、圆盘卡片和明细表文字溢出的问题。
  - 客服姓名改为使用项目统一 `staff_name_map`,日报归档展示真实姓名,不再直接展示智齿客服代号。
  - 明细表客服列增加固定宽度、姓名省略和悬浮标题,避免首列被挤空。
- 页面版本标识升级为 `V3.6.1`。

### v3.6.0 - 2026-07-07

- 客服运营日报:
  - 新增“客服运营日报”独立模块,进入数据中心导航,支持按日查看客服运营数据。
  - 新增圆盘指标、7 日趋势图、客服排行、异常摘要和客服明细表,页面优先展示运营健康度而非大表格。
  - 新增 `/api/qc/customer-operations/daily` 和 `/api/qc/customer-operations/monthly` 接口,支持按日和按月读取归档数据。
  - 新增 `data/customer_operations.sqlite3` 归档库,保存每日团队汇总和客服明细,部署包继续排除 `data/`。
  - 新增 `sobot_qc/customer_operations_daily.py`,可调用智齿 V6 工作统计和旧版在线时长接口归档日报数据。
  - 在线时长口径确定为智齿 `online_duration`,达标线为 7.5 小时。
- 页面版本标识升级为 `V3.6.0`。

### v3.5.4 - 2026-07-02

- 智能质检:
  - 完整会话弹窗内的“工单判断 / 人工分 / 备注”区域改为吸顶显示,向下阅读长会话时仍可直接保存标注。
- 页面版本标识升级为 `V3.5.4`。

### v3.5.3 - 2026-07-02

- 租赁交接:
  - 工单池列表增加完整行边框、左侧蓝色标识线、交替底色和悬停高亮,避免多条工单在视觉上混在一起。
- 智能质检:
  - 未质检筛选下保存人工标注后,当前会话会立即从列表移除,下一条自动顶上来,减少反复下拉和翻页。
  - 新增“开始连续质检”入口,进入流水线式质检;保存一条后自动打开下一条,直到本轮待质检完成。
  - 人工分输入框加宽,修复输入/步进到 100 时视觉上只显示两位数的问题。
- 页面版本标识升级为 `V3.5.3`。

### v3.5.2 - 2026-07-02

- 班表系统测试版:
  - 新增班表管理入口,支持上传并读取 7 月班表、展示今日值班客服,并将红警客服从今日上班和通知命中中自动排除。
  - 班表上传入口保留在页头右侧,移除班表查看卡片标题区的重复上传按钮。
  - 班次展示改为白班、晚班、凌晨班等直观名称,不直接暴露班表代号。
  - 支持临时修改当日班次,便于请假、换班等场景先在测试版验证。
  - 账号管理新增手机号字段,为后续企微 @ 和手机号登录打基础。
- 企业微信推送:
  - 推送设置改为“选择项目 + 二级弹窗”,租赁交接、晚班提醒、凌晨班提醒等配置可单独保存。
  - 新增“租赁/班表通知 Webhook”,租赁交接、晚班提醒、凌晨班提醒与排队/质检完成通知分开配置推送地址。
  - 租赁交接新工单通知支持发送订单号、用户 ID、问题描述和创建人;每日待处理提醒仍只统计待处理数量。
  - 租赁交接新工单通知全天发送;严格按班次时间判断是否 @ 人,18:00 后只发通知不 @。
  - 租赁交接新工单通知中的创建人优先展示账号姓名,不再直接展示登录账号名。
  - 班次时间规则统一为:白班/正常班 09:00-18:00,中班 12:00-20:30,晚班 15:00-24:00,凌晨班 00:00-09:00。
  - 晚班、凌晨班提醒改为按准点间隔推送,间隔使用和排队设置一致的分钟输入。
  - 提醒设置弹窗增加班表命中预览,显示来源、日期、班次、班次时间、命中人员,并提示红警客服自动排除。
- 租赁交接:
  - 工单池新增分页,支持上一页、下一页、页码、跳转页和每页条数选择。
  - 工单池搜索改为先选择搜索类型,再输入关键词;支持按工单 ID、用户 ID、订单号、内容、处理结果和处理人搜索。
  - 工单列表标题不再拼接订单号,用户 ID 和订单号保留在独立字段并支持复制。
- 智能质检:
  - 质检列表分页补齐页码、跳转页和每页条数选择,不再只有上一页/下一页。
  - `quality.html` 改为后端按当前代码动态生成,部署包继续不覆盖历史质检静态页也能生效新版分页。
  - 部署重启脚本新增当前质检页刷新步骤,避免线上静态 `quality.html` 残留旧分页。
- 页面版本标识升级为 `V3.5.2`。

### v3.5.1 - 2026-07-01

- 租赁交接:
  - 内部流转工单保留完整用户 ID 和订单号,不再在登记后写入脱敏星号。
  - 登记交接弹窗中订单号改为非必填,表单提示精简,仅保留用户 ID 必填和附件上传说明。
  - 工单池改为列表式展示,提升问题、用户、状态、创建时间和处理入口的扫描效率。
  - 工单池和详情页新增用户 ID、订单号一键复制按钮。
  - “登记交接”移动到工单池标题栏旁边;保存交接后返回工单池,不再自动进入详情页。
  - 详情页“返回工单池”移动到详情卡片标题区域;完成并回复后自动返回工单池。
- 页面视觉:
  - 移除系统管理页面的服务之星和公告展示,避免主管后台被运营信息挤占。
  - 全局按钮样式恢复为更克制的常规按钮,减少大号渐变按钮造成的错位和拥挤。
- 页面版本标识升级为 `V3.5.1`。

### v3.5.0 - 2026-06-30

- 全站页头统一:
  - 使用三段式页头布局,页面标题在左侧,服务之星居中,页面操作按钮保持靠右。
  - 修复服务之星插入页头后挤占页面按钮位置的问题。
- 首页入口:
  - 所有权限用户点击左上角 Logo、版本号和“C5客服助手”品牌区,都可返回首页/仪表盘。
  - 共用模块侧边栏和首页侧边栏品牌区行为保持一致。
- 智能质检:
  - “质检会话”列表由“加载更多”改为分页制,筛选变化后自动回到第 1 页。
  - 会话 ID 旁新增一键复制按钮。
  - “查看完整会话”弹窗标题区新增完整会话 ID 复制按钮。
- 我的质检:
  - 员工侧问题质检列表新增会话 ID 一键复制按钮。
  - 员工侧完整会话弹窗新增完整会话 ID 复制按钮。
- 页面版本标识升级为 `V3.5.0`。

### v3.4.3 - 2026-06-30

- 租赁交接紧急修复:
  - 修复租赁交接工单创建时用户 ID、订单号被通用隐私脱敏逻辑写成星号的问题。
  - 租赁交接属于内部流转数据,新登记工单会保留完整用户 ID 和订单号,便于租赁客服处理。
  - 保留字段长度限制、去首尾空格和附件类型限制,不扩大外部模型或公开页面的数据暴露范围。
  - 已经入库为星号的历史工单无法从数据库自动还原,需要从原始登记信息或沟通记录中重新补齐。
- 页面版本标识升级为 `V3.4.3`。

### v3.4.2 - 2026-06-29

- 操作记录:
  - 新增“操作记录”模块,主管/组长默认可见。
  - 操作日志写入 `data/operation_log.sqlite3`,查询时自动保留最近 15 天。
  - 记录登录/退出、质检设置、手动质检、申诉处理、企业微信推送设置、公告管理、服务之星、充值开关新增记录等关键动作。
- 人工质检统计:
  - “操作记录”模块新增“质检统计”页签,可按日期查询谁每天人工质检/复审了多少条。
  - 统计口径只包含人工质检历史和人工申诉处理,不把系统自动质检或未质检会话算作人工工作量。
- 更新日志:
  - 新增“更新日志”独立模块,主管/组长默认可见,展示 `VERSION_LOG.md`。
- 首页运营展示:
  - 首页顶部新增本月服务之星展示,最多 3 人,姓名红色展示并带奖杯图标。
  - 首页新增普通公告展示和重要横幅轮播。
- 公告管理:
  - 新增“公告管理”模块,主管/组长默认可见。
  - 支持发布普通公告、首页横幅、全站弹窗公告。
  - 全站弹窗公告在用户登录后展示,用户点击确认后消失;后台可查看已确认和未确认名单。
  - 公告与服务之星写入 `data/announcements.sqlite3`,部署包不覆盖线上数据。
- 3.4.2 UI 修正:
  - 服务之星改为全站顶部统一展示,不再只放在首页内容区。
  - 普通公告改为全站模块页标题区内轻量展示,普通客服即使没有“数据仪表盘”权限,也能在自己的模块页看到公告。
  - 公告管理页改为“发布新公告 / 维护服务之星”按钮 + 弹窗表单,避免大表单常驻挤占页面。
  - 公告管理新增“展示中 / 已下架 / 已删除”三种状态筛选;展示中可下架,已下架可上架,已删除可恢复。
  - 删除公告改为软删除,删除前通过二级弹窗确认;已删除公告不再出现在首页、全站页头和历史公告中。
  - 公告发布/编辑支持字体颜色设置,首页普通公告、横幅、弹窗和全站页头公告按配置颜色展示。
  - 首页普通公告最多展示 1 条,标题和正文放大;内容超出可点“更多”弹窗查看完整内容。
  - 首页新增“历史公告”入口,可查看展示中和已下架普通公告;用户有未读历史公告时显示红点数字,点开历史公告后红点消失。
  - 修复普通公告在其他模块页顶部展示过长正文的问题;全站页头公告改为一行标题摘要,完整内容点“查看”弹窗打开。
  - 修正全站页头公告过度收缩的问题;模块页公告改为占满标题区宽度的一行摘要栏,标题、摘要和查看按钮横向排布。
  - 修复历史公告列表被全局按钮样式覆盖为蓝色大块、文字对比度过低的问题;历史公告改为白底卡片,正文统一深色展示。
  - 修复公告发布弹窗“字体颜色”预设色块被全局按钮渐变样式覆盖的问题;预设色块现在按黑、红、蓝、橙、绿真实颜色显示。
  - 修复公告管理输入框在窄卡片中溢出的问题。
  - 修复“维护服务之星”保存时旧页面/旧接口路径可能返回 `not found` 的问题;服务端兼容 `/api/qc/service-stars`、`/api/service-stars`、`/api/qc/service-star`、`/api/service-star`,前端错误提示会显示接口路径和 HTTP 状态码。
- 3.4.2 公告功能重做收口:
  - 公告管理列表页只保留状态筛选、发布新公告和维护服务之星入口;新建、编辑、删除、服务之星维护均通过二级弹窗完成。
  - 公告管理接口异常改为页面内红色状态提示,不再使用浏览器原生弹窗打断操作。
  - 全站页头公告统一为“最多 1 条当前公告 + 查看 + 历史公告”结构;历史公告支持未读红点,点击历史公告后自动标记已读。
  - 全站公告详情和历史公告复用统一弹窗格式,长内容保持关闭按钮可见。
  - 移除前端 `maxy.games` 强制跳转 `www.maxy.games` 的兜底脚本,避免接口 404 被前端跳转掩盖。
- 3.4.2 充值开关误填删除:
  - 充值开关历史记录中,允许当前登录用户删除自己刚创建的最新一条记录,用于误填后的即时撤回。
  - 后端限制只能删除该用户记录列表中的最新一条,且操作人必须是当前登录用户;删除后重新计算开关次数和操作建议,并写入操作日志。
- 页面版本标识升级为 `V3.4.2`。

### v3.4.1 - 2026-06-29

- 历史质检月度分修复:
  - 修复部署包中的 `history.html` 使用本地空报表生成后,线上历史质检下拉框为空、月度分无法加载的问题;页面改为启动时从服务器 `reports/` 动态读取历史日期。
  - 修复客服代号和真实姓名同时出现在月度分表格中的问题;月度统计聚合前统一按客服姓名映射转换。
- 质检评分标准:
  - 系统质检分统一按 5 分档输出,普通问题扣 5 分,严重问题扣 10 分。
  - LLM 返回的非 5 分档分数会自动归整到最近的 5 分档。
  - 人工分保存时也按 5 分档归整,质检标注和复审弹窗的人工分输入框改为每次加减 5 分。
- 游乐场充值开关:
  - “新增记录”不再常驻显示在左侧,需先查询用户。
  - 查询后在右侧结果卡片显示“新增记录”按钮,点击后通过弹窗填写记录类型、原因备注和证据/会话ID。

### v3.4.0 - 2026-06-29

- 质检企业微信推送设置:
  - “企业微信推送设置”新增“质检完成通知”,可独立配置质检完成后 @ 多个手机号。
  - 每日自动质检完成/失败、质检设置手动重跑完成/失败都读取同一套质检完成 @ 配置。
  - 排队预警 @ 手机号和质检完成 @ 手机号分开保存,互不覆盖。
- 历史质检月度分:
  - 历史质检页面不再展示每日归档卡片,保留按年份、月份、日期打开当天完整质检详情。
  - 空出的主区域改为客服月度质检分,展示全员平均分、客服人数、质检会话数、低于 80 分客服数。
  - 支持点击客服行查看该客服当月每天平均分、会话数和低分会话数。
  - 月度平均分按会话平均;人工分优先,没有人工分时使用系统分。
- 本地 demo:
  - 新增 `.demo/qc_3_4_0` 本地预览沙盒,使用独立测试报表和人工分数据库,不污染正式 `reports/`、`data/`。
- 页面版本标识升级为 `V3.4.0`。

### v3.2.8 - 2026-06-26

- 质检完成推送修复:
  - 保留每日定时任务 `daily_qc.py` 原有的完成/失败企业微信推送。
  - 修复“质检设置”页面手动重跑完成后不推送的问题,手动重跑成功会发送质检日期、有效会话、需复核会话、60 分以下高危会话、平均分、模型成功/失败、缓存和重试统计。
  - 手动重跑失败也会推送失败原因和日志路径,避免后台任务静默失败。
  - 新增回归测试,锁定手动重跑完成通知必须调用企业微信 Webhook。
- 页面版本标识升级为 `V3.2.8`。

### v3.2.7 - 2026-06-26

- 质检加速:
  - `qa_report.py` 支持 DeepSeek/LLM 并发质检,默认并发数为 8,后台可配置 1-16。
  - “质检设置”新增“模型并发数”,建议 8-12;如果出现 429、超时或失败增多,可调低。
  - 并发执行时对模型调用统计和 LLM 缓存写入加锁,避免进度统计错乱或缓存文件写坏。
  - 手动重跑和每日自动质检都会读取同一套并发配置。
- 页面版本标识升级为 `V3.2.7`。

### v3.2.6 - 2026-06-26

- 生产热修:
  - 修复“质检设置”里自动质检时间只保存到 `config.json`、没有同步服务器 `crontab` 的问题。
  - 保存自动质检时间后,会替换当前用户 crontab 中旧的 `sobot_qc/daily_qc.py` 定时行,并保留排队提醒等其他定时任务。
  - 生产目录 `/home/ubuntu/qc` 会自动同步;本地预览默认不改本机 crontab。
  - 保存页面在定时任务同步失败时会明确提示,避免显示保存成功但实际仍按旧时间运行。
- 页面版本标识升级为 `V3.2.6`。

### v3.2.5 - 2026-06-26

- 生产热修:
  - 修复质检设置“开始重跑”进度解析误报缺 Key 的问题。
  - 当日志统计字段为 `missing_api_key=0` 时,不再被误判为“缺 Key 1”。
  - 只有真实出现 `missing API key env:` 错误时,才标记为缺少 API Key。
- 页面版本标识升级为 `V3.2.5`。

### v3.2.4 - 2026-06-26

- 生产热修:
  - 质检设置、模型测试、重跑任务和 `qa_report.py` 均新增 `/home/ubuntu/.sobot_qc_env` 兜底读取。
  - 即使后台曾被裸启动、进程环境变量没有 `DEEPSEEK_API_KEY`,重跑任务也会主动从持久环境文件读取 Key。
  - 修复部署包过度排除 `dashboard/index.html`、`dashboard/history.html` 导致服务器仍停留在旧版本页面的问题。
  - 没有任何真实 `reports/` 报表时,仍可生成新版首页和历史质检空状态页,不再生成误导性的 `qc_dashboard_latest.html`。
- 页面版本标识升级为 `V3.2.4`。

### v3.2.3 - 2026-06-26

- 部署与持久化事故修复:
  - 历史质检列表改为以 `reports/sobot_qc_YYYY-MM-DD.csv` 为准,不再依赖 `dashboard/qc_dashboard_*.html` 残留静态页。
  - 每次生成看板时,会根据 `reports/` 中保留的报告重新生成历史质检静态页,避免更新代码后历史质检丢失。
  - 部署包规则明确排除 `config.json`、`data/`、`reports/`、`downloads/` 和历史质检静态页,避免覆盖服务器持久数据。
  - 新增 `SECURITY_PERSISTENCE.md`,明确密码、API Key、账号库、质检报告的服务器持久化规范。
  - 新增 `scripts/server_runtime_audit.sh`,用于检查服务器 Key、账号密码文件、报告目录和后台进程环境。
  - 新增 `scripts/restart_portal_with_env.sh`,统一后台重启方式,避免裸启动导致 `DEEPSEEK_API_KEY` 丢失。
  - 默认账号密码文件路径统一为 `data/.qc_pass`,不再建议使用 `/etc/nginx/.qc_pass`。
- 页面版本标识升级为 `V3.2.3`。

### v3.2.2 - 2026-06-26

- 知识库维护标签修正:
  - “分类”和“辅助标签”视觉上明确区分,分类使用绿色分类标识,辅助标签使用蓝色虚线标识,避免看起来像同一种字段。
  - 已保存知识编辑时支持修改辅助标签。
  - 新增知识、资料拆分草稿默认不再自动把分类或关键词塞入标签。
  - 新增知识时辅助标签改为可选项,可从已有标签中选择,也可以手动填写。
- 页面版本标识升级为 `V3.2.2`。

### v3.2.1 - 2026-06-26

- 登录态失效修复:
  - 当每天 0 点清除登录态后,用户从浏览器收藏/历史记录直接打开“知识库维护”“智能质检”等内部页面时,不再停留在异常半加载状态。
  - 公共页面壳统一识别 `/api/qc/me` 的 401 或“请先登录”响应,并自动跳转到登录页。
  - 跳转登录时保留原页面地址,登录成功后自动返回原先打开的页面。
- 页面版本标识升级为 `V3.2.1`。

### v3.2.0 - 2026-06-26

- 知识库维护升级:
  - 已保存知识支持编辑内容、类目、问法和联想问题。
  - 默认隐藏新增知识面板,改为点击“添加知识”后弹窗操作。
  - 新增“默认上传”和“资料上传”两种入口,默认上传支持一次创建多条知识。
  - 支持只填写答案/知识内容,不强制填写问题;答案、问法和联想问题都会参与搜索匹配。
  - 资料上传支持先生成草稿,确认前可修改分类和内容。
- 客服知识库升级:
  - 搜索没有准确答案时明确提示“暂无准确答案”,并展示可能相关的知识。
  - 客服可在知识库页面提交“反馈知识”,不跳转维护页。
- 主管维护升级:
  - 知识库维护新增“客服反馈”审核入口,主管可修改分类和内容后通过入库。
- 安全更新:
  - 登录态最长保留到次日 0 点,每天需要重新登录。
- 页面版本标识升级为 `V3.2.0`。

### v3.1.4 - 2026-06-25

- 全站人员展示修复:
  - 接口统一补充账号对应的姓名展示字段,原账号字段仍保留给权限判断使用。
  - 租赁交接创建人、处理人、操作日志,游乐场充值开关操作人,会议记录上传人,质检标注人统一优先展示账号列表中的“姓名”。
- 页面版本标识升级为 `V3.1.4`。

### v3.1.3 - 2026-06-25

- 充值风控模块调整:
  - 左侧业务栏“充值风控”改名为“游乐场充值开关”。
  - 查询用户时立即显示“查询中”和操作建议占位,增加超时提示与重复点击保护,避免页面长时间空白。
- 租赁交接工单池优化:
  - 提高工单卡片中的用户ID、创建人、时间和问题描述可读性。
  - 默认提示文字加粗加深,避免在浅色/渐变背景上看不清。
  - 修复全局按钮视觉增强误作用到工单卡片,导致蓝底深字看不清的问题。
- 游乐场充值开关修复:
  - 优化近期用户查询,避免逐用户重复查询导致数据量大时加载慢。
  - 后端接口增加查询耗时日志,便于线上定位是否为数据库或接口路径问题。
- 智齿质检展示页优化:
  - 已质检会话归档,默认展示未质检会话。
  - 顶部新增未质检、已质检、全部会话筛选。
  - 删除“复核口径”和“离线数据文件”模块。
  - 将“重点问题类型”移动到右侧重点展示。
- 页面版本标识升级为 `V3.1.3`。

### v3.1.2 - 2026-06-25

- “我的质检”页面继续优化:
  - 默认展示所有待查看问题质检,不再默认按日期筛选。
  - 问题质检改为紧凑行式列表,待查看高亮,已查看/申诉完成置灰。
  - 质检分数后展示大模型判断、问题标签和问题片段。
  - 主管备注与申诉状态加大加粗,作为页面重点信息。
  - 申诉改为弹窗填写后提交。
  - 员工查看会话后自动标记为已查看。
  - 申诉限制为收到质检结果后 72 小时内,超时不可申诉。
  - 左侧“我的质检”增加红色待查看数字提醒。
- “质检复审”页面参考“我的质检”继续优化:
  - 默认展示待复核申诉,新增待复核/已复核分类。
  - 支持质检日期筛选,并增加明确的“质检日期”提示。
  - 原质检备注和员工申诉加粗放大,作为复核重点信息。
  - 保留查看完整会话入口。
  - 复审处理改为弹窗操作,可选择改为无问题、提高分数或维持原判。
  - 左侧“质检复审”增加红色待复核数字提醒。
- 页面版本标识升级为 `V3.1.2`。

### v3.1.1 - 2026-06-25

- 修复“我的质检”收不到主管判定问题会话的问题:
  - 当质检保存请求缺少客服姓名时,后端会从智齿会话明细中自动识别客服姓名并写入质检记录。
  - 员工打开“我的质检”时,会自动补齐历史问题质检中缺失的客服姓名,避免已判定“确有问题”但员工侧显示 0 条。
- 页面版本标识升级为 `V3.1.1`。

### v3.1 - 2026-06-25

- 质检流转新增员工侧“我的质检”:
  - 主管标记“确实有问题”时,保存客服姓名、分类、问题标签、系统分、人工分和备注。
  - 员工账号的“姓名”与质检客服姓名精确匹配,员工只看到自己的问题质检会话。
  - 员工可查看主管备注、分数、完整会话,并提交申诉备注。
- 主管/组长侧新增“质检复审”:
  - 可查看员工申诉。
  - 可选择改为无问题、提高分数或维持原判,并填写复审说明。
  - 复审结果同步回员工“我的质检”。
- 质检规则补充:
  - 主管选择“无实际问题”时,该会话自动保存为人工满分 `100`。
- 后台账号与权限优化:
  - 账号“名称”改为“姓名”。
  - 角色按管理员、组长、客服统一分配模块。
  - 后台账号列表只展示账号、姓名、权限标签、状态和操作,不再展示每个人的可见模块。
  - 后台管理拆分为“新增账号”和“权限管理”,权限管理可按管理员、组长、客服统一调整模块权限。
  - 客服默认仅保留租赁交接登记、租赁交接处理、我的质检、充值记录开关。
  - 组长默认拥有除推送设置和账号管理外的业务/质检/知识维护权限。
- 知识库维护新增批量删除:
  - 支持勾选当前列表知识并批量删除。
- 页面版本标识升级为 `V3.1`。

### v3.0 - 2026-06-25

- 开启 C5客服助手 3.0 迭代线。
- 归档客服助手 2.0:`docs/archive/customer-assistant-2.0.md`。
- 正式环境切换到大陆服务器:`101.33.35.36`,项目目录 `/home/ubuntu/qc`。
- 页面版本标识升级为 `V3.0`。
- 网站底部悬挂备案号:`浙ICP备2026046498号-1`。
- 质检弹窗优化:
  - 去掉“未质检 / 已质检”重复选择。
  - 判断“无实际问题 / 确实有问题”后自动视为已质检。
  - 兼容旧数据中“未质检 + 无实际问题”的矛盾状态。
  - 工单判断改为两个简单单选项。
  - 新增人工分数 `manual_score`,可覆盖系统生成分数展示。
- 部署包脚本已排除本地质检数据页,避免本地旧报表覆盖服务器当前质检页面。

## 待确认版本归属

- 如果后续继续在 3.0 基线上增加小功能,应从 `v3.1` 开始记录。
- 如果只是修复 `v3.0` 中的问题,应使用 `v3.0.1`、`v3.0.2` 等补丁版本。