← 返回首页系统设计方案使用说明状态与流程OAuth 对接计划未来功能计划

未来功能计划(第二阶段)

第一阶段已完成:工单全流程(建单/分派/接单/挂起/恢复/完成/驳回/关闭/取消/改派/转派)、SLA 与超时检查、工单类型可配置、权限节点管理与同步、飞书集成(单聊通知 + 卡片接单 + 链接免登)、H5 接单端(工作台 + 手机模拟)、WebSocket 实时通知。

一、待办需求(用户提出)

1. 操作审计日志

新增 operation_logs 表(统一审计,独立于 work_order_status_log):

字段 说明
operator_type / operator_id user / system / api
action 动作码(login、assign、complete、feishu_send…)
module 模块(auth / workorder / feishu / config / permission)
object_type / object_id 对象(work_order、user、type、feishu_setting…)
detail JSON 明细(改前/改后、原因、飞书 message_id)
ip / ua 来源
result ok / fail(含错误信息)
created_at 时间

覆盖范围:

后台页面:/console/logs(权限 admin:audit),按操作人/动作/对象/时间/结果筛选。

2. 飞书推送日志

新增 feishu_push_logs 表:

字段 说明
order_id / work_order_no 关联工单
user_id / receive_id 目标用户 / open_id
channel chat / group
card_type new / reassign / timeout / comment / test
status pending / success / fail / skipped
feishu_code / feishu_msg / message_id 飞书返回
retry_count / sent_at 重试与发送时间

后台:飞书集成页新增「推送日志」区块(或独立页),按工单/状态/时间筛选,失败可一键重发。


二、查漏补缺(按优先级)

P0 — 安全(建议最先做)

项 现状 风险
后端越权校验 review 只有「接单」校验了 assignee;完成/挂起/驳回/关闭/评论/附件等未逐一核对 有 workorder:process 权限的人可操作他人工单
登录防爆破 无失败计数 / 锁定 / 限流 弱密码可被撞库
免登与票据审计 票据消费无日志 出现安全问题无法追溯

P1 — 可靠性

项 现状 风险
飞书推送持久化队列 用 Timer 进程内异步,进程重启即丢 推送丢失、无补偿
健康检查 无 /healthz 无法被负载均衡 / 监控探活
定时任务心跳 SlaChecker 每分钟跑,无运行记录 挂了不知道
数据备份 无 SQLite 单文件 + MySQL 依赖,缺备份策略

P2 — 功能补全

项 现状
报表页 /admin/stats 接口存在,需核对页面是否完整
评论/附件触达 评论已通知处理人;附件上传是否需通知待定
事件/外部系统接入 /internal/v1/events、/open/v1 已实现,需补幂等与回归测试

P3 — 工程化

项 现状
自动化测试 目前靠手工 smoke + 浏览器脚本,无 CI 回归
部署 无 Docker / 部署脚本,环境变量文档分散
权限快照过期 长期不登录的用户,快照会过期(配合日志/告警)

三、实施阶段拆解

2.1 审计与日志    ← 用户两个需求
    operation_logs + feishu_push_logs + 后台查询页

2.2 安全加固
    后端越权校验补全 + 登录限流/锁定 + 免登/票据审计

2.3 可靠性
    飞书推送持久化队列(DB 表 + 定时重试)+ /healthz
    + 定时任务心跳 + 备份

2.4 功能与工程
    报表页核对、自动化测试、部署脚本

四、待拍板事项

  1. 审计粒度:是否记录 detail 里的「改前/改后」完整快照,还是只记关键字段?
  2. 推送队列:失败重试几次、间隔多久?(建议 3 次,指数退避)
  3. 登录限流:阈值定多少?(建议同 IP 连续 5 次失败锁 10 分钟)
  4. 报表:第二阶段是否要一并做报表页,还是先聚焦日志与安全?