# RainWeb 工单系统后续完善计划 ## 当前定位 RainWeb 当前已具备登录用户提交和跟踪、管理员队列处理、状态/优先级/负责人、公开回复、内部备注、基础事件时间线、筛选搜索和分页,定位为可用 MVP。 本计划只覆盖审查后确认的后续增强,不影响当前 Bug 修复批次。 ## 阶段一:运营上线前(P0) 目标:控制滥用风险,保护工单隐私,保证管理员团队可以稳定协作。 | 项目 | 主要内容 | 复杂度 | 依赖 | | --- | --- | --- | --- | | 工单反滥用 | 按 IP/用户限流、未关闭工单配额、重复提交幂等键、必要时验证码 | 中 | 现有 tickets、captcha | | 私有附件 | 工单附件关联表、引用对象校验、私有下载鉴权、配额、孤儿清理、下载审计 | 中高 | upload、权限模型 | | 通知闭环 | 创建确认、公开回复、状态/负责人变化通知;投递记录、失败重试和管理员告警 | 中 | email、异步任务 | | 最小权限模型 | 客服、主管、只读审计角色;按队列/分类限制访问范围 | 中高 | 用户角色、工单分类 | | 自动化测试 | 越权访问、内部备注隔离、状态流转、并发更新、限流、附件访问、迁移兼容 | 中 | 以上后端能力 | ## 阶段二:处理效率(P1) 目标:让工单处理可衡量、可搜索、可协作。 - SLA 策略:按优先级/分类设置首次响应和解决目标。 - SLA 计时:支持工作时间、节假日,并在“等待用户”时暂停。 - 超时处理:临界提醒、违约标记、自动升级和主管队列。 - 全文搜索:搜索回复、用户、负责人、来源和日期;数据量增长后接入 SQLite FTS5。 - 工单协作:快捷回复模板、标签、合并/关联工单、重复反馈识别。 - 用户体验:通知偏好、未读数、满意度评价、前台完整分页。 - 完整审计:操作者、IP、请求 ID、前后值、后台查询和导出。 ## 阶段三:规模化与治理(P2) 目标:支持长期运营、外部渠道和故障恢复。 - 邮件入站转工单、退信处理和邮件线程关联。 - 附件真实 MIME/魔数检查、病毒扫描、图片重编码,必要时迁移对象存储。 - 运营报表:积压、响应时长、解决时长、重开率、SLA 达成率和客服负载。 - 健康检查、就绪检查、结构化日志、指标、告警和磁盘容量保护。 - 数据保留、删除/匿名化、用户数据导出、备份加密、轮换、异地保存和恢复演练。 ## 推荐实施顺序 1. 先完成阶段一的权限和附件边界,再接入通知,避免通知泄漏内部数据。 2. 在限流、分页和审计基础上实现 SLA,避免统计建立在不完整事件数据上。 3. 最后实现邮件入站、病毒扫描、对象存储和运营报表等高复杂度能力。 ## 暂不纳入本批次 本批次只修复审查发现的代码 Bug:前端请求竞态、记录排序、分页/来源地址校验、状态选项和文案一致性,以及后端限流/响应放大、并发更新、用户存在性、时间字段、事件契约和迁移兼容。上述阶段功能不会在 Bug 修复批次中顺手实现。 ## 参考资料 - SQLite FTS5:https://sqlite.org/fts5.html - OWASP 文件上传安全:https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html - OWASP 日志安全:https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html - Google SRE 监控原则:https://sre.google/sre-book/monitoring/