Skip to content

工单与客服完整生命周期 #239

Description

@web-ppanel

目标仓库: perfect-panel/backend
目标分支: next
规划基线: origin/main@ea28a7685f4c89f91895c4d789a5726e806aa3f0

目标

在已有工单基础上补齐客服生命周期:分类、优先级、分配、状态机、SLA、附件、内部备注、用户/管理员通知、审计和列表 Read Model。该项作为 P1 运营能力保留;若另有安全隔离或敏感泄露缺陷,应由对应 P0 安全项单独处理。

源码已有

  • 已有 ticket / ticket_follow、Pending / Waiting / Processed / Closed 状态、用户/管理员创建、回复、详情、状态变更。
  • 已有 Telegram 话题镜像和用户隔离测试。
  • 当前缺少状态机校验、分类/优先级/分配、附件、内部备注、SLA、RBAC 和完整审计。

范围

  • 定义工单状态机:新建、待客服、待用户、处理中、已解决、已关闭、重开;限制非法跳转。
  • 支持分类、优先级、标签、负责人/协作者、SLA 到期时间、首次响应时间和解决时间。
  • 支持附件引用对象存储、内部备注、用户可见回复、管理员备注和系统事件。
  • 用户端/管理员端通知接入统一通知中心,避免重复散落发送逻辑。
  • 工单列表遵循统一 Read Model:用户摘要、处理人摘要、最后回复、SLA 状态、附件数、未读数。

明确不做

数据 / API / 流程

  • 数据:ticket_categories、ticket_assignments、ticket_events、ticket_sla_policies、ticket_attachments、ticket_internal_notes。
  • API:
    • Public:创建工单、回复、上传附件、关闭/重开、查看状态和 SLA 提示。
    • Admin:分类/优先级/分配、回复、内部备注、状态迁移、批量操作、SLA 策略配置。
  • 流程:用户创建 → 自动分类/分配可选 → 首响计时 → 待用户/待客服流转 → 解决 → 关闭 → 评价/重开。

RBAC / 审计

  • 查看、回复、分配、修改优先级、内部备注、关闭、重开、批量导出分别登记权限点。
  • 所有状态迁移、分配、内部备注、附件删除和批量操作写管理员审计。
  • 用户可见事件与内部备注严格分离;导出遵循权限投影和脱敏。

验收

  • 非法状态跳转返回明确 4xx,不产生半更新。
  • 用户只能访问自己的工单;管理员按 RBAC 和业务资源归属校验访问。
  • 附件删除遵循对象存储引用保护,私有文件不暴露长期签名 URL。
  • SLA 到期、分配、回复、关闭和重开均产生可查询事件。
  • 工单列表一次 API 返回页面展示所需摘要,无前端 N+1 查询。
  • OpenAPI 覆盖 Public/Admin 工单流程、错误码、状态枚举和权限边界。

依赖

开发与测试门禁

  • MySQL/PostgreSQL 迁移、OpenAPI 契约、RBAC API 权限点、管理员审计和敏感信息脱敏测试必须同步提交。
  • 复用现有源码能力和 P0 底座,不重复实现支付、订阅、流量、修复命令或发布门禁执行层。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:operationsOperations, support, notifications and configurationenhancementNew feature or requestpriority:P1Important planned workroadmapPlanned roadmap workv2.0PPanel 2.0 roadmap

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions