# Chat 模块需求分析

## 1. 模块定位

`apps.chat` 已从传统“问答页面”升级为：

> 审核智能体工作台

它是 V1 的主入口，负责把资料包、对话、任务模板、节点结果、结构化结论、飞书通知结果串成一个完整的人机协作界面。

## 2. 模块目标

本模块需要实现以下目标：

1. 让用户通过对话发起审核任务。
2. 让对话始终绑定到具体资料包和具体产品名称。
3. 让任务结果按节点展示，而不是只返回一段自然语言。
4. 让用户能直接看到 RAG 命中的法规依据、风险摘要和导出建议。
5. 支持执行完成或异常后触发飞书 `@` 处理人。

## 3. 页面形态要求

基于最新版原型，Chat 模块页面形态固定为三栏：

### 3.1 左栏：对话历史

1. 按资料包会话展示历史记录。
2. 会话名称直接使用解析后的产品名称。
3. 会话至少显示时间、状态、摘要。
4. 点击会话可切换当前资料包上下文。

### 3.2 中栏：主对话区

1. 展示欢迎区、推荐提示词和节点导航。
2. 展示用户消息、Agent 计划、节点结果和最终结论。
3. 支持节点点击跳转。
4. 支持底部输入框继续追问。

### 3.3 右栏：上传栏 + 功能卡片

1. 上半区展示上传资料入口和当前会话已上传附件。
2. 下半区展示能力卡片。
3. 能力卡片随任务模板变化展示不同内容。

## 4. 关键业务约束

### 4.1 对话必须绑定资料包

用户不能在无上下文状态下执行审核。每次任务都应绑定：

1. `conversation_id`
2. `batch_id`
3. `product_name`
4. `document_scope`

### 4.2 对话名称必须来源于解析结果

会话标题默认使用资料包解析出的产品名称，而不是“新对话”或“注册批次审核主线”。

### 4.3 结果必须结构化

Chat 模块至少要展示：

1. 目录汇总结果
2. 完整性检查结果
3. 字段抽取结果
4. 一致性核查结果
5. 风险结论
6. 飞书通知结果

## 5. 输入需求

### 5.1 输入类型

1. 自然语言任务指令
2. 资料上传
3. 节点模板选择
4. 建议提示词点击

### 5.2 建议提示词

V1 推荐固定提供：

1. 自动汇总文件夹目录与页数
2. 执行法规完整性检查
3. 抽取字段并生成字段池
4. 解释冲突字段原因
5. 给出整改与导出建议

### 5.3 附件上传

Chat 模块中的上传不是独立附件功能，而是资料包流程的会话入口，因此上传后应自动触发：

1. 资料包批次创建或追加
2. 产品名称解析
3. 对话上下文绑定

## 6. 输出需求

### 6.1 节点式结果

结果不能只有长文本，必须形成节点：

1. 目录汇总
2. 完整性检查
3. 字段抽取
4. 风险结论

### 6.2 RAG 依据展示

当 Agent 在对话中引用法规或业务依据时，应展示：

1. 依据来源文档
2. 命中条款或切片标签
3. 解释摘要

### 6.3 飞书通知结果展示

当执行完成或发生异常后，Chat 模块应能展示：

1. 是否已触发飞书通知
2. 通知原因
3. 被 `@` 的处理人
4. Web 详情链接
5. 发送状态或失败原因

## 7. 飞书相关需求

Chat 模块需要消费角色信息中的飞书字段。责任人实体至少包含：

1. `owner_role`
2. `owner_name`
3. `department`
4. `chapter_scope`
5. `risk_scope`
6. `feishu_user_id`
7. `feishu_open_id`
8. `feishu_name`
9. `notify_enabled`

当前 Demo 通知策略固定为：

1. 审核任务执行完成后，飞书摘要卡片 `@` 处理人。
2. 审核任务执行异常后，飞书异常消息 `@` 处理人。

## 8. 与其他模块边界

1. `documents` 提供资料包、产品名称、文件范围和目录事实。
2. `agent_core` 提供任务编排、RAG 检索和结构化输出。
3. `audit` 提供处理历史和通知留痕。

## 9. 验收标准

1. 用户能在一个会话中完成资料上传、任务发起和结果查看。
2. 对话历史以产品名称展示，而不是泛化标题。
3. 节点式结果、RAG 依据和飞书通知结果都能在页面上承载。
4. 执行完成或异常的飞书通知逻辑有明确展示位和字段依赖。
