# 阶段 4-5 规划:数据驱动 + 工单闭环

**生成日期**: 2026-06-15
**关联**: PRD.md §5.2 阶段四 / 阶段五
**前置依赖**: 阶段 2-3 完项

---

## 📌 阶段 4:日志标准 + AI 知识库迭代

**目标**: 解决痛点 3-4(知识库人工维护效率低 + 缺乏数据驱动)
**预期工时**: 12-16 周
**关联**: [[Wingman设计]] / [[SOPs]]

### 4.1 关键模块

#### 4.1.1 会话标注体系

**目标**: 坐席对 AI 回复/草稿/排查步骤标注有用/无用,数据用于阶段 4 知识库迭代

**实现**:
- 后端 `backend/app/models/annotation.py` (新):
  ```python
  class Annotation(Base):
      __tablename__ = "annotations"
      id = Column(Integer, primary_key=True)
      agent_id = Column(String, ForeignKey("agents.id"))
      conv_id = Column(String, ForeignKey("conversations.id"))
      message_id = Column(String, ForeignKey("messages.id"))
      annotation_type = Column(String)  # helpful / not_helpful / wrong / missing
      comment = Column(Text)
      created_at = Column(DateTime)
  ```
- 前端 `frontend-agent/src/components/AnnotationPanel.vue`:
  - 消息右侧 👍/👎 按钮
  - 弹窗写 comment
  - 提交落库
- Alembic 010 迁移

**验收**:
- 坐席可标注任何 AI 生成的内容
- 标注数据可查询/导出(供后续分析)
- 月度统计报告(标注数 / 准确率)

#### 4.1.2 AI 知识库自动迭代闭环

**目标**: AI 错误率/标注分析 → 自动提炼新 FAQ → 入库 → 验证

**实现**:
- 后端 `backend/app/services/knowledge_evolution.py` (新):
  - 周一 cron 跑一次
  - 取上周"wrong/missing"标注 ≥ 3 的会话
  - 调 Dify 工作流"提炼 FAQ"
  - 入 `knowledge` 表(待人工审)
  - 通知 admin
- 前端 `frontend-admin/src/views/KnowledgeReview.vue`:
  - 待审 FAQ 列表
  - 一键通过 / 拒绝 / 改写
  - 通过后正式入知识库
- 知识库效果 A/B 测试(对比自动 vs 人工)

**验收**:
- 闭环跑通(标注 → 提炼 → 审 → 入库)
- 月度新 FAQ ≥ 20 条
- 错误率从 X% 降到 Y%

#### 4.1.3 数据统计看板

**目标**: 管理者看到核心指标(响应时间/解决率/坐席效率/知识库效果)

**实现**:
- 后端 `backend/app/api/analytics.py` (新):
  - `/api/v1/analytics/overview` 总览
  - `/api/v1/analytics/agents` 坐席效率
  - `/api/v1/analytics/knowledge` 知识库效果
  - `/api/v1/analytics/conversations` 会话统计
- 前端 `frontend-admin/src/views/Dashboard.vue`:
  - ECharts 图表
  - 实时刷新(WebSocket)
  - 时间筛选 + 导出
- 关键指标:
  - 总会话数 / 已结单 / 待处理
  - 平均响应时间 / 平均结单时间
  - AI 自助解决率 / 坐席解决率
  - 知识库命中率 / 反馈率
  - 坐席效率(每小时结单数)

**验收**:
- 看板 5 大模块齐全
- 数据准确(对照 DB 验证)
- 实时刷新(≤ 5 秒延迟)

### 4.2 数据库扩展

```sql
-- 010 alembic: 标注
CREATE TABLE annotations (
  id SERIAL PRIMARY KEY,
  agent_id VARCHAR(50) NOT NULL,
  conv_id VARCHAR(50) NOT NULL,
  message_id VARCHAR(50) NOT NULL,
  annotation_type VARCHAR(20) NOT NULL,
  comment TEXT,
  created_at TIMESTAMP DEFAULT NOW()
);

-- 011 alembic: 知识库条目
CREATE TABLE knowledge (
  id SERIAL PRIMARY KEY,
  question TEXT NOT NULL,
  answer TEXT NOT NULL,
  source VARCHAR(20) NOT NULL,  -- manual / auto / imported
  status VARCHAR(20) DEFAULT 'pending',  -- pending / approved / rejected
  hits INT DEFAULT 0,
  helpful INT DEFAULT 0,
  not_helpful INT DEFAULT 0,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW()
);

-- 012 alembic: 反馈(知识库命中后的反馈)
CREATE TABLE knowledge_feedback (
  id SERIAL PRIMARY KEY,
  knowledge_id INT NOT NULL,
  agent_id VARCHAR(50),
  helpful BOOLEAN,
  comment TEXT,
  created_at TIMESTAMP DEFAULT NOW()
);
```

### 4.3 阶段 4 工时

| 模块 | 估计工时 | 难度 |
|---|---|---|
| 4.1.1 会话标注 | 2 周 | 低 |
| 4.1.2 知识库迭代 | 4 周 | 高(AI 闭环) |
| 4.1.3 数据看板 | 3 周 | 中(前端图表) |
| 数据库迁移 | 1 周 | 低 |
| 集成 + 部署 | 2 周 | 中 |
| **合计** | **12 周** | |

### 4.4 风险

| 风险 | 等级 | 缓解 |
|---|---|---|
| AI 提炼 FAQ 质量差 | 🟠 高 | 人工 review + 灰度发布 |
| 看板性能(数据大) | 🟡 中 | 物化视图 + 缓存 |
| 标注数据稀疏 | 🟡 中 | 强制标注 + 提示坐席 |

---

## 📌 阶段 5:自动/辅助审核 + 开单 + 结单

**目标**: 多系统切换效率问题 → 统一工作台闭环
**预期工时**: 16-20 周
**前置**: 阶段 4 数据基础 + 外部系统集成(已就绪)

### 5.1 关键模块

#### 5.1.1 工单系统

**目标**: 开会话即开单 → 全生命周期跟踪(开单→审批→处理→结单→归档)

**实现**:
- 后端 `backend/app/models/ticket.py` (新):
  ```python
  class Ticket(Base):
      __tablename__ = "tickets"
      id = Column(Integer, primary_key=True)
      ticket_no = Column(String, unique=True)  # T20260615001
      conv_id = Column(String, ForeignKey("conversations.id"))
      title = Column(String, nullable=False)
      description = Column(Text)
      category = Column(String)  # hardware / software / network / account
      priority = Column(String)  # low / medium / high / urgent
      status = Column(String, default="open")  # open / assigned / in_progress / pending / resolved / closed
      assignee_id = Column(String, ForeignKey("agents.id"))
      department = Column(String)
      sla_due = Column(DateTime)
      created_at = Column(DateTime)
      closed_at = Column(DateTime)
  ```
- 工单流转:
  - 坐席一键"开会话转工单"
  - 工单可分配/转交/合并
  - SLA 自动跟踪(超时告警)
- 集成火绒/联软(资产联动,见 [[外部集成]])
- 集成 eHR(账号联动)

**验收**:
- 工单可从会话创建
- 工单全生命周期跟踪
- SLA 告警有效

#### 5.1.2 审批流程

**目标**: IT 服务涉及多部门审批(资产申请 / 权限变更 / 远程协助)

**实现**:
- 后端 `backend/app/models/approval.py` (新):
  ```python
  class Approval(Base):
      __tablename__ = "approvals"
      id = Column(Integer, primary_key=True)
      ticket_id = Column(Integer, ForeignKey("tickets.id"))
      approver_id = Column(String, ForeignKey("agents.id"))
      step = Column(Integer)  # 审批层级 1/2/3
      decision = Column(String)  # pending / approved / rejected
      comment = Column(Text)
      created_at = Column(DateTime)
  ```
- 工作流引擎:
  - 简单:用 `if/else` 写死审批链
  - 复杂:用 `spiffworkflow` BPMN 引擎
- 集成 eHR(主管审批,取组织架构)
- 集成企微(审批通知)

**验收**:
- 3 步审批链跑通
- 审批通过自动开单 / 拒绝回退
- 企微推送通知

#### 5.1.3 设备异常一站式处理

**目标**: 检测到设备异常 → 自动开单 → 自动派单

**实现**:
- 集成火绒/联软:
  - 定时拉取终端告警
  - 异常员工自动开会话/工单
  - 一键远程协助
- 集成 aTrust(VPN):
  - 员工 VPN 失败 → 自动检测 → 推会话
- 前端 `frontend-agent/src/views/DeviceAlerts.vue`:
  - 异常告警列表
  - 一键处理(开单 / 远程 / 转人工)

**验收**:
- 火绒/联软告警 → 会话 自动化
- aTrust VPN 失败 → 自动检测

#### 5.1.4 AI 辅助填单

**目标**: 会话结束 → AI 自动填工单(标题/描述/分类/优先级)

**实现**:
- 后端 `backend/app/services/ticket_ai.py` (新):
  - 会话结束触发
  - 调 Dify "工单提炼"工作流
  - 返回 JSON(标题/描述/分类/优先级)
  - 坐席一键确认 / 改写
- 减少坐席手动填写工作量 70%

**验收**:
- AI 填单准确率 ≥ 80%
- 坐席手动改写 < 20%

#### 5.1.5 自动结单

**目标**: 简单问题 AI 自动结单 / 复杂问题 SLA 到时自动结单

**实现**:
- 自动结单规则:
  - 客户无回复 ≥ 7 天 → 自动结单
  - 客户回复"谢谢/解决了" → 自动结单
  - SLA 超时未处理 → 升级 + 告警(不自动结)
- 人工 review 队列(待审自动结单)

**验收**:
- 自动结单准确率 ≥ 95%
- 误结率 < 1%

### 5.2 阶段 5 数据库扩展

```sql
-- 020 alembic: 工单
-- (见 5.1.1 schema)

-- 021 alembic: 审批
-- (见 5.1.2 schema)

-- 022 alembic: 设备告警
CREATE TABLE device_alerts (
  id SERIAL PRIMARY KEY,
  source VARCHAR(20) NOT NULL,  -- huorong / lianruan / atrust
  employee_id VARCHAR(50),
  device_id VARCHAR(100),
  alert_type VARCHAR(50),
  severity VARCHAR(20),
  description TEXT,
  handled BOOLEAN DEFAULT FALSE,
  handled_by VARCHAR(50),
  created_at TIMESTAMP DEFAULT NOW()
);

-- 023 alembic: SLA 跟踪
CREATE TABLE sla_tracking (
  id SERIAL PRIMARY KEY,
  ticket_id INT NOT NULL,
  sla_type VARCHAR(20),  -- response / resolve
  due_at TIMESTAMP,
  breached BOOLEAN DEFAULT FALSE,
  notified_at TIMESTAMP
);
```

### 5.3 阶段 5 工时

| 模块 | 估计工时 | 难度 |
|---|---|---|
| 5.1.1 工单系统 | 6 周 | 高 |
| 5.1.2 审批流程 | 4 周 | 中 |
| 5.1.3 设备异常 | 3 周 | 中(集成) |
| 5.1.4 AI 填单 | 2 周 | 中(Dify) |
| 5.1.5 自动结单 | 2 周 | 中 |
| 集成 + 部署 | 3 周 | 中 |
| **合计** | **20 周** | |

### 5.4 阶段 5 风险

| 风险 | 等级 | 缓解 |
|---|---|---|
| 工单系统复杂度爆炸 | 🟠 高 | 拆子模块,先 MVP 后扩展 |
| 审批链配置错误 | 🟠 高 | 严格测试 + 灰度 |
| AI 填单准确率低 | 🟡 中 | 人工 review + 持续训练 |
| 多系统集成不稳定 | 🟠 高 | 熔断 + 降级 + 重试 |

---

## 📌 关键路径

```
阶段 2-3 完项 (本季度)
    ↓
阶段 4 启动 (数据基础)
    ├─ 4.1.1 会话标注 (前置)
    ├─ 4.1.2 知识库迭代
    └─ 4.1.3 数据看板
    ↓
阶段 5 启动 (闭环)
    ├─ 5.1.1 工单系统
    ├─ 5.1.2 审批流程
    ├─ 5.1.3 设备异常
    ├─ 5.1.4 AI 填单
    └─ 5.1.5 自动结单
    ↓
生产稳定 + 持续优化
```

---

## 📌 关联文档

- [[阶段1-已实现盘点]]: 阶段 1 完项
- [[阶段2-3-任务]]: 阶段 2-3 任务拆解
- [[Wingman设计]]: AI Wingman 完整设计
- [[外部系统集成]]: 火绒/联软/aTrust/eHR 集成
- [[风险跟踪表]]: 项目风险审计

---

*本规划是 2026-06-15 Claude 满载任务产出,供项目组评审*
