Files
sino-mci/docs/superpowers/specs/2026-07-09-system-menu-redesign-design.md

799 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 消息中台管理后台菜单重构与界面设计
> **日期**2026-07-09
> **状态**:已确认,待实现
> **关联文档**[消息与客户互动中台架构设计](../architecture/2026-07-06-message-customer-interaction-design.md)
---
## 1. 背景与问题
当前管理后台采用 14 项平铺菜单,功能随需求逐步叠加,导致:
- **职责割裂**:同一业务对象(如渠道账号)的初始化、状态监控、登录操作分散在不同页面。
- **工作流不连贯**:运营人员完成一次“发消息”需要跳转发送记录、测试发送、发送策略等多个平级菜单。
- **设计不统一**:部分页面是对象管理 CRUD部分是流程编排部分是工具页面缺少统一的信息架构。
本设计从三类用户(平台管理员、租户管理员/技术人员、运营人员)的实际工作流出发,重新梳理菜单层级与功能定义。
---
## 2. 设计目标
1. **按工作流组织顶层菜单**:让用户按“接入 → 客户关系 → 运营发送 → 编排流程 → 系统管理”的路径找到功能。
2. **按业务对象聚合二级功能**:同一对象(渠道账号、会话、联系人)的关联操作放在同一模块下。
3. **明确功能边界**:每个菜单项都有清晰的功能定义、面向角色和与现有页面的映射关系。
4. **统一设计语言**
- 列表页 = 筛选 + 表格 + 顶部「新增」按钮 + 分页
- 新增 = 弹窗/小抽屉,只填核心字段
- 编辑/详情 = 大抽屉,基础信息区 + 标签字段 + 关联内容区
5. **预留扩展位**:钉钉/飞书/IVR 本期仅保留入口,不实现具体能力。
---
## 3. 设计决策
采用 **混合式组织**
- 顶层按 **工作流/职责域** 划分,降低日常操作路径长度。
- 模块内按 **业务对象** 分组,保持数据模型与 UI 结构一致。
- 权限按角色控制菜单可见性,而不是为每个角色单独一套菜单。
---
## 4. 角色定义
| 角色 | 说明 | 典型操作 |
|------|------|---------|
| 平台管理员 | 中台平台级管理 | 创建租户、维护平台角色 |
| 租户管理员 | 业务系统技术人员/管理员 | 配置渠道、管理用户、配置流程 |
| 运营人员 | 日常消息运营 | 发送、查看记录、维护联系人/群 |
> 说明:运营人员缺少部分租户内容管理,其他权限与租户管理员相同。具体可见性通过角色权限控制,不由菜单结构区分。
---
## 5. 菜单结构
### 5.1 一级菜单总览
| 一级菜单 | 定位 | 可见角色 |
|---------|------|---------|
| 概览 | 运营总览、快捷入口 | 全部 |
| 渠道接入 | 渠道资源与账号接入 | 租户管理员、运营人员 |
| 客户关系 | 联系人、会话、标签资产 | 租户管理员、运营人员 |
| 消息运营 | 发送、记录、消息查询 | 租户管理员、运营人员 |
| 流程编排 | 入站消息处理配置 | 租户管理员 |
| 系统管理 | 租户、用户、角色 | 平台管理员、租户管理员 |
### 5.2 概览
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 运营总览 | 展示今日发送量、成功/失败/待发送统计、最近异常、关键指标卡片 | 复用并增强现有 Dashboard |
| 快捷入口 | 提供常用功能的一键跳转(测试发送、发送记录、渠道账号) | 新增 |
### 5.3 渠道接入
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 渠道主体 | 维护企业在各渠道的主体信息;企微主体支持会话存档、员工/客户/群聊/会话存档同步 | 现有 ChannelSubject 页面增强 |
| 渠道账号 | 维护用于收发消息的载体账号;支持按 ID 拉取企微信息、pywechat 扫码登录、同步会话 | 现有 ChannelAccount 页面迁移 |
| 应用管理 | 企微应用的配置agent_id、agent_secret、能力验证本期只实现企微其他占位 | 新增 |
### 5.4 客户关系
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 联系人 | 维护 Person详情抽屉涵盖基本信息、渠道身份、标签、所属会话 | 现有 Person 页面增强 |
| 会话/群聊 | 维护 Conversation详情抽屉涵盖基本信息、成员、收发账号绑定、标签、历史消息 | 现有 Conversation 页面迁移 |
| 标签体系 | 树形标签管理;标签用于表达角色/合同/机构/供应商等业务属性 | 现有 Tag 页面升级为体系化管理 |
### 5.5 消息运营
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 发送记录 | 按任务查询发送明细、状态、结果;支持取消待发送任务;失败固定重试 2 次 | 现有 SendRecord 页面迁移 |
| 测试发送 | 模拟出站/入站消息,用于业务系统联调和发送逻辑验证 | 现有 MessageTest 页面迁移并改名 |
| 消息查询 | 聊天界面查看入站/出站消息事件,支持按会话、人员、来源筛选 | 新增 |
### 5.6 流程编排
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 入站 Webhook | 配置业务系统接收入站消息的 webhook URL、签名方式、测试连通性 | 现有 InboundWebhook 页面迁移 |
| 入站流程 | 画布配置入站消息处理流程,支持多轮上下文与槽位收集 | 现有 InboundFlow 页面增强 |
> **本期不做**IVR 流程、发送策略配置。
### 5.7 系统管理
| 二级菜单 | 功能定义 | 页面/备注 |
|---------|---------|----------|
| 租户管理 | 平台管理员创建/编辑租户;租户管理员维护本租户基础信息 | 现有 TenantManagement 页面增强 |
| 用户管理 | 中台用户增删改查、重置密码、启用/停用、绑定角色 | 现有 UserManagement 页面迁移 |
| 角色权限 | 平台角色 admin/operator/viewer 的权限配置与分配 | 新增 |
---
## 6. 现有菜单调整映射
| 当前菜单 | 调整方式 | 新位置 |
|---------|---------|--------|
| 概览 | 保留并增强 | 概览 → 运营总览 |
| 渠道主体 | 保留并增强 | 渠道接入 → 渠道主体 |
| 渠道账号 | 拆分 | 渠道接入 → 渠道账号 / 应用管理 |
| 会话/群聊 | 保留,绑定功能移入详情 | 客户关系 → 会话/群聊 |
| 联系人 | 保留,增强 | 客户关系 → 联系人 |
| 标签 | 升级为体系 | 客户关系 → 标签体系 |
| 发送记录 | 保留 | 消息运营 → 发送记录 |
| 消息测试 | 保留,改名 | 消息运营 → 测试发送 |
| 发送策略 | 本期移除 | — |
| 入站流程 | 保留并增强 | 流程编排 → 入站流程 |
| IVR 流程 | 本期移除 | — |
| 入站 Webhook | 保留 | 流程编排 → 入站 Webhook |
| 流程追踪 | 合并 | 消息运营 → 发送记录(详情)/ 消息查询 |
| 用户管理 | 保留 | 系统管理 → 用户管理 |
| 租户管理 | 保留 | 系统管理 → 租户管理 |
| 账号初始化 | 删除独立菜单 | 能力分散到渠道主体/账号/联系人/会话 |
| 渠道身份 | 删除独立菜单 | 并入联系人详情 |
| 账号-会话绑定 | 删除独立菜单 | 并入会话详情 |
---
## 7. 统一页面设计语言
### 7.1 列表页
- 顶部筛选区(可折叠)
- 右上角「新增」按钮
- 表格展示核心字段 + 标签 + 关联数量
- 行内操作:编辑 / 详情 / 删除 / 启用禁用
- 底部分页
### 7.2 新增
- 弹窗或小抽屉
- 只收集创建必需的字段
- 创建成功后刷新列表
### 7.3 编辑/详情
- 大抽屉
- 基础信息区(可编辑)
- 标签字段(树形多选,随基础信息一起保存)
- 关联内容区(只读列表 + 快捷操作)
- 不同对象按自身关联内容展示,不拆成多个 Tab
---
## 8. 渠道接入模块详细设计
### 8.1 渠道主体
#### 列表字段
| 字段 | 说明 |
|------|------|
| 渠道 | wecom / dingtalk / feishu本期仅 wecom 可用) |
| 主体编码 | `subject_code` |
| 主体名称 | `subject_name` |
| CorpID | `corp_id` |
| 会话存档 | 开启 / 关闭 |
| 状态 | 启用 / 禁用 |
| 操作 | 编辑 / 详情 / 删除 / 启用禁用 |
#### 新增/编辑
- 渠道类型
- 主体编码
- 主体名称
- CorpID
- CorpSecret通讯录同步 secret
- AgentID
- AgentSecret
- 会话存档开关
- 会话存档 RSA 私钥
#### 详情抽屉(企微能力区)
| 能力 | 所需凭证 | 操作 |
|------|---------|------|
| 验证主体连通 | `corp_id + corp_secret` | 点击验证 |
| 同步企业员工 | `corp_id + corp_secret` | 拉取通讯录,写入 `mci_person` + `mci_channel_identity` + `department_path` |
| 同步客户/客户群 | 主体下配置的企微应用 `agent_secret` | 拉取外部联系人和客户群 |
| 同步会话存档 | 应用管理中配置的会话存档应用 secret | 用 Finance SDK 拉取最近消息 |
每个能力执行后展示状态、上次执行时间、成功/失败数量、错误信息,并写入 `mci_channel_subject_sync_task` 日志表。
### 8.2 渠道账号
#### 列表字段
| 字段 | 说明 |
|------|------|
| 账号类型 | 企微内部账号 / 企微应用 / pywechat 个人号 |
| 渠道 | wecom / wechat_personal |
| 账号 ID | `account_id` |
| 名称 | `account_name` |
| 所属主体 | `subject_name` |
| 登录状态 | 已登录 / 未登录 |
| 在线状态 | 在线 / 离线 |
| 状态 | 启用 / 禁用 |
| 操作 | 编辑 / 删除 / 启用禁用 / 初始化 / 同步会话 |
#### 企微内部账号
- 创建/编辑时输入 `userid` 后,可点击「从企微拉取」回填姓名、部门信息
- 会话存档开关(标记该员工是否开启存档)
#### 企微应用
- 应用凭证在「应用管理」维护
- 渠道账号中创建时选择应用,自动带出 `agent_id`
- 提供「验证应用」按钮
#### pywechat 个人号
- 创建时填写 `wxid / bot_code``server_host`
- 行操作「扫码登录」:返回二维码,轮询登录状态
- 行操作「同步会话」:拉取该个人号所在群聊
### 8.3 应用管理
#### 列表字段
| 字段 | 说明 |
|------|------|
| 应用名称 | `app_name` |
| 应用类型 | wecom / wecom_session_archive / dingtalk / feishu |
| agent_id | 企微应用 ID |
| 所属主体 | `subject_name` |
| 状态 | 启用 / 禁用 |
| 操作 | 编辑 / 验证 / 删除 / 启用禁用 |
#### 新增/编辑
- 应用名称
- 所属主体
- 应用类型
- agent_id
- agent_secret
- 状态
#### 操作
- **验证并获取能力**:用 `corp_id + agent_id + agent_secret` 获取 access_token验证通过更新状态
- 钉钉/飞书应用仅保留表单入口,验证按钮禁用
---
## 9. 客户关系模块详细设计
### 9.1 联系人
#### 列表字段
| 字段 | 说明 |
|------|------|
| 人员编码 | `person_code` |
| 姓名 | `person_name` |
| 手机号 | `phone` |
| 类型 | 内部人员 / 供应商人员 / 客户 / 司机 |
| 所属机构 | `institution_id` 名称 |
| 部门路径 | 多个标签式展示 |
| 标签 | 直接展示绑定的标签 |
| 渠道身份数 | 几个渠道身份 |
| 参与会话数 | 该人员在多少个会话中 |
| 状态 | 启用 / 禁用 |
| 操作 | 编辑 / 详情 / 删除 / 启用禁用 |
#### 新增
弹窗字段:
- 人员编码
- 姓名
- 手机号
- 类型
- 所属机构
- 状态
#### 编辑/详情抽屉
**基础信息区**
- 人员编码、姓名、手机号
- 类型
- 所属机构、供应商、合同
- 部门路径(支持多条)
- 状态
**标签字段**
- 树形多选,已选标签平铺展示
**渠道身份区**
- 列表展示所有渠道身份
- 行内新增 / 编辑 / 删除
- 新增时:选择渠道 → 选择主体 → 输入渠道用户 ID → 「拉取企微信息」回填昵称
**所属会话区**
- 展示该人员参与的会话列表
- 点击会话名称打开会话详情抽屉
### 9.2 会话/群聊
#### 列表字段
| 字段 | 说明 |
|------|------|
| 会话类型 | 单聊 / 群聊 |
| 渠道 | wecom / wechat_personal |
| 渠道会话 ID | `channel_conversation_id` |
| 会话名称 | `conversation_name` |
| 群主/负责人 | `owner_account_id` 名称 |
| 所属主体 | `subject_id` 名称 |
| 标签 | 直接展示 |
| 成员数 | 群聊显示成员数量 |
| 业务绑定 | 机构 / 供应商 / 合同 / 渠道编码 |
| 状态 | 启用 / 禁用 |
| 操作 | 编辑 / 详情 / 删除 / 同步成员 |
#### 新增
弹窗字段:
- 会话类型
- 渠道
- 所属主体
- 渠道会话 ID
- 会话名称
- 负责人账号
- 状态
#### 编辑/详情抽屉
**基础信息区**
- 会话类型、渠道、所属主体
- 渠道会话 ID、会话名称
- 负责人账号
- 关联机构 / 供应商 / 合同 / 渠道编码
- 状态
**标签字段**
- 树形多选
**成员区**
- 列表展示 `mci_conversation_participant`
- 字段:人员姓名、渠道身份、角色
- 操作:同步成员、移除
- 人员名称可点击进入联系人详情
**收发账号绑定区**
- 展示发送主号 / 发送备用号 / 接收主号 / 接收备用号
- 行内新增、编辑优先级、删除
- 单聊限制:只能绑定同 `channel_type` 的账号
- 群聊允许跨渠道绑定,但给出提示
**历史消息区**
- 展示该会话最近消息列表
- 可跳转消息查询页面
### 9.3 标签体系
#### 列表字段
| 字段 | 说明 |
|------|------|
| 标签名 | `tag_name` |
| 路径 | `tag_path` |
| 层级 | `level` |
| 来源 | system / business_sync / manual |
| 状态 | 启用 / 禁用 |
| 关联人员数 | 使用数量 |
| 关联会话数 | 使用数量 |
| 操作 | 新增子标签 / 编辑 / 删除 / 启用禁用 |
#### 新增/编辑
弹窗字段:
- 标签名
- 父标签(树形选择,顶级为根)
- 来源
- 状态
#### 详情抽屉
- 标签基本信息
- 关联人员列表(分页)
- 关联会话列表(分页)
---
## 10. 消息运营模块详细设计
### 10.1 发送记录
#### 页面结构
- 顶部统计卡片:今日发送总数 / 成功 / 失败 / 待发送
- 筛选区:任务 ID、发送时间、渠道、状态、目标类型
- 记录列表
- 详情抽屉
#### 列表字段
| 字段 | 说明 |
|------|------|
| 任务 ID | `task_id` |
| 目标类型 | 单人会话 / 群聊 / 人员 / 标签 / 规则 |
| 目标摘要 | 会话名称 / 人员姓名 / 标签名 / 规则描述 |
| 渠道 | wecom / wechat_personal |
| 发送账号 | 实际使用的账号名称 |
| 状态 | 待发送 / 发送中 / 成功 / 失败 |
| 发送时间 | `send_time` |
| 完成时间 | `finish_time` |
| 操作 | 详情 / 取消(仅待发送) |
#### 详情抽屉
- 基础信息:任务 ID、目标、渠道、发送账号、内容摘要
- 内容区:完整 `content_body`
- 策略与回调:`channel_strategy``callback_url`
- 渠道结果:`channel_result` 格式化展示
- 关联跳转:会话 / 人员 / 账号 / 消息事件
- 时间线:创建 → 发送中 → 完成 / 失败
> 失败固定重试 2 次,由后端策略处理,前台不配置。
### 10.2 测试发送
工具型页面,两个 Tab
#### Tab 1出站测试
| 字段 | 说明 |
|------|------|
| 目标类型 | 会话 / 人员 / 标签 / 规则 |
| 目标 | 根据类型选择或输入 |
| 内容类型 | text / markdown / image / file / news 等 |
| 内容 | 对应内容编辑器 |
| 渠道策略 | 优先渠道、备用渠道 |
| 回调地址 | 可选 |
点击「发送测试」后展示返回的 `task_id`,并刷新发送记录。
#### Tab 2入站模拟
| 字段 | 说明 |
|------|------|
| 事件 ID | 自定义事件 ID |
| 渠道类型 | wecom / wechat_personal |
| 消息来源 | realtime / session_archive |
| 会话 ID | 选择已有会话 |
| 发送人 | 选择人员或输入 channel_user_id |
| 接收账号 | 选择接收账号 |
| 内容类型 | text / image / voice 等 |
| 内容 | 消息内容 |
点击「模拟入站」后触发入站流程编排,展示处理结果。
### 10.3 消息查询
#### 页面布局
三栏式聊天界面:
```
┌─────────────┬─────────────────────┬─────────────┐
│ 会话列表 │ 聊天内容 │ 会话信息 │
│ 搜索/筛选 │ │ 成员/标签 │
└─────────────┴─────────────────────┴─────────────┘
```
#### 左侧:会话列表
- 按时间倒序展示会话
- 每个会话卡片:会话名称、最后一条消息预览、最后消息时间、标签小圆点
- 搜索:会话名称、成员姓名、消息内容
- 筛选:渠道、消息来源(实时/会话存档)、会话类型、标签
#### 中间:聊天内容区
- 按时间顺序展示消息气泡
- 区分入站消息(左侧)、出站消息(右侧)、系统事件(中间)
- 根据 `msgtype` 渲染:文本、图片、语音、视频、文件、撤回提示等
- 支持按时间范围筛选,滚动加载历史消息
#### 右侧:会话信息
- 基础信息:会话名称、渠道、来源、群主
- 业务绑定:机构 / 供应商 / 合同 / 渠道编码
- 标签:直接展示,可编辑
- 成员列表
- 快捷操作:查看发送记录、跳转联系人详情、同步成员
---
## 11. 流程编排模块详细设计
### 11.1 入站 Webhook
每个租户独立配置一个入站推送地址。
#### 页面内容
| 字段 | 说明 |
|------|------|
| Webhook URL | 业务系统接收中台入站消息的地址 |
| 签名算法 | HMAC-SHA256 / HMAC-SHA512 / 无 |
| Webhook Secret | 签名密钥 |
| 超时时间 | 推送超时秒数,默认 10s |
| 失败重试 | 固定重试 2 次 |
#### 操作
- 保存
- 测试推送
- 查看最近推送日志(状态、响应码、响应摘要)
> 这是流程中 Webhook 节点的默认推送地址,只有流程走到该节点才会触发。
### 11.2 入站流程
#### 页面布局
保留三栏画布:
```
┌────────────┬─────────────────────────┬────────────┐
│ 流程列表 │ 流程画布 │ 节点配置 │
│ 组件面板 │ │ │
└────────────┴─────────────────────────┴────────────┘
```
#### 流程节点
| 节点 | 作用 |
|------|------|
| 接收消息 | 流程入口,指定渠道 |
| 加载上下文 | 读取当前会话已有的 intent / slots / 轮次 |
| 意图识别 | LLM / 规则识别本轮意图和槽位 |
| 合并槽位 | 把本轮新槽位合并到会话上下文 |
| 槽位校验 | 检查必需槽位是否齐全 |
| 自动追问 | 缺槽位时自动生成追问文案并回复 |
| Webhook | 槽位齐全后推送给业务系统 |
| 回复消息 | 可配置固定回复 |
| 保存上下文 | 把更新后的 intent / slots 写回 |
| 清空上下文 | Webhook 成功后结束当前会话 |
#### 多轮流程示例
```
接收消息
加载上下文
意图识别(结合上下文)
合并槽位
槽位校验
├─ 缺槽位 ──▶ 自动追问 ──▶ 保存上下文 ──▶ 结束
└─ 槽位齐全 ──▶ Webhook ──▶ 回复客户 ──▶ 清空上下文 ──▶ 结束
```
#### 上下文存储
新增 `mci_conversation_context` 表:
| 字段 | 说明 |
|------|------|
| conversation_id | 会话 ID |
| intent | 当前意图 |
| slots | JSON已收集槽位 |
| missing_slots | JSON还缺哪些槽位 |
| turn_count | 当前轮次 |
| status | collecting / complete / expired |
| expire_time | 上下文过期时间 |
| update_time | 最后更新时间 |
超过一定时间(如 10 分钟)无新消息,上下文自动过期。
---
## 12. 系统管理模块详细设计
### 12.1 租户管理
#### 列表字段
| 字段 | 说明 |
|------|------|
| 租户编码 | `tenant_code` |
| 租户名称 | `tenant_name` |
| 状态 | 启用 / 禁用 |
| 用户数量 | 该租户下用户总数 |
| 创建时间 | `create_time` |
| 操作 | 编辑 / 删除 / 启用禁用 |
**平台管理员**:可操作全部租户。
**租户管理员**:只能查看/编辑本租户,不可删除。
#### 新增(仅平台管理员)
- 租户编码
- 租户名称
- 入站 Webhook URL
- 初始化管理员账号(默认 `admin`
- 初始化管理员密码
- 状态
创建成功后自动创建该租户的第一个管理员用户。
#### 编辑
- 租户名称
- 入站 Webhook URL
- 状态
默认租户(如 `platform`)不可删除。
### 12.2 用户管理
#### 列表字段
| 字段 | 说明 |
|------|------|
| 用户名 | `username` |
| 真实姓名 | `real_name` |
| 手机号 | `phone` |
| 所属租户 | `tenant_name`(平台管理员可见) |
| 角色 | 角色名称,多个用逗号 |
| 状态 | 启用 / 禁用 |
| 创建时间 | `create_time` |
| 操作 | 编辑 / 重置密码 / 删除 / 启用禁用 |
#### 新增
- 所属租户(平台管理员选择,租户管理员固定为本租户)
- 用户名
- 密码
- 真实姓名
- 手机号
- 角色(多选)
- 状态
#### 编辑
可编辑:真实姓名、手机号、角色、状态。
不可编辑:用户名、所属租户。
### 12.3 角色权限
#### 列表字段
| 字段 | 说明 |
|------|------|
| 角色编码 | `role_code` |
| 角色名称 | `role_name` |
| 权限数量 | 已配置的权限项数 |
| 状态 | 启用 / 禁用 |
| 操作 | 配置权限 / 启用禁用 |
**首期固定角色**
| 角色编码 | 角色名称 | 默认权限 |
|---------|---------|---------|
| `platform_admin` | 平台管理员 | 全部权限 |
| `admin` | 租户管理员 | 除租户创建外的全部权限 |
| `operator` | 运营人员 | 发送、查看记录、维护联系人/会话、配置渠道账号 |
| `viewer` | 只读用户 | 仅查看发送记录、统计、消息查询 |
#### 权限配置
抽屉中展示权限树:
```
□ 全部
□ 概览
□ 查看
□ 渠道接入
□ 渠道主体(查看 / 新增 / 编辑 / 删除)
□ 渠道账号(查看 / 新增 / 编辑 / 删除)
□ 应用管理(查看 / 新增 / 编辑 / 删除)
□ 客户关系
□ 联系人(查看 / 新增 / 编辑 / 删除)
□ 会话/群聊(查看 / 新增 / 编辑 / 删除)
□ 标签体系(查看 / 新增 / 编辑 / 删除)
□ 消息运营
□ 发送记录(查看 / 取消)
□ 测试发送
□ 消息查询
□ 流程编排
□ 入站 Webhook查看 / 编辑)
□ 入站流程(查看 / 新增 / 编辑 / 删除 / 发布)
□ 系统管理
□ 租户管理(查看 / 新增 / 编辑 / 删除)
□ 用户管理(查看 / 新增 / 编辑 / 删除 / 重置密码)
□ 角色权限(查看 / 配置)
```
保存后同步到 `mci_platform_role` 表的 `permissions` JSON。
### 12.4 全局管理员登录
- 默认创建 `platform` 租户
- 通过 Flyway 初始化 `admin` 用户,角色 `platform_admin`
- 初始密码在配置文件中设置,首次登录强制修改
---
## 13. 数据模型补充
### 13.1 新增/调整字段
| 表 | 字段 | 类型 | 说明 |
|---|------|------|------|
| `mci_person` | `department_path` | JSON | 多个部门路径,如 `["销售中心/销售一部", "销售中心/华北组"]` |
| `mci_channel_subject_sync_task` | — | 新表 | 记录各渠道主体同步任务 |
| `mci_conversation_context` | — | 新表 | 入站流程多轮会话上下文 |
### 13.2 同步任务日志表
`mci_channel_subject_sync_task`
| 字段 | 说明 |
|------|------|
| subject_id | 渠道主体 ID |
| sync_type | employee / external_contact / group / session_archive |
| status | 0待执行 1执行中 2成功 3失败 |
| total_count | 总数 |
| success_count | 成功数 |
| fail_count | 失败数 |
| error_msg | 错误信息 |
| create_time / finish_time | 时间 |
---
## 14. 不在本期范围内的功能
| 功能 | 原因 |
|------|------|
| IVR 流程 | 属于 2092 IVR 语音配置需求 |
| 发送策略配置 | 本期失败固定重试 2 次,不开放前台配置 |
| 模板管理 | 中台不保存模板 |
| 业务触发规则 | 中台不承载业务系统触发规则 |
| 钉钉/飞书具体能力 | 仅保留入口 |
---
## 15. 实现要点
1. **前端路由**:按新菜单结构重排 `admin-web/src/router/index.ts`
2. **布局组件**`Layout.vue` 从平铺 `el-menu-item` 改为分组 `el-sub-menu`
3. **权限控制**:菜单可见性通过 `authStore.roleCodes` 或后端返回的权限列表控制。
4. **页面拆分与合并**
- 删除 `ChannelAccountInit.vue` 独立页面
- 删除独立的渠道身份、账号-会话绑定页面
- `Conversation.vue` 增强详情抽屉,包含绑定功能
- `Person.vue` 增强详情抽屉,包含渠道身份
5. **消息查询**:新增聊天界面组件。
6. **入站流程**:增强节点配置,新增上下文存储能力。
7. **空状态处理**:新增页面先实现最小可用版本。
---
## 16. 验收标准
- [ ] 左侧导航按新 6 大模块分组展示,无 IVR 流程、发送策略、账号初始化入口。
- [ ] 每个二级菜单有明确页面,无 404。
- [ ] 租户管理员、运营人员、平台管理员看到的菜单符合角色定义。
- [ ] 联系人、会话详情抽屉涵盖所有关联内容。
- [ ] 标签在列表和编辑表单中直接展示/编辑。
- [ ] 消息查询实现聊天界面。
- [ ] 入站流程支持多轮上下文与槽位收集。
- [ ] 现有功能在迁移后行为保持一致。