|
|
@@ -0,0 +1,1112 @@
|
|
|
+> **标准说明**:以下为 原「PRD」阶段模板全文 **全文**嵌入;文件名建议 `{Name}-{模块简称}-PRD-{V}.md`。模块范围写在 §2.3「产品范围」并缩小到本菜单。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# {Name}-{模块简称}-PRD({V})
|
|
|
+
|
|
|
+> **文档说明**:
|
|
|
+> - 本文档用于描述产品功能需求,是产品设计、开发、测试的重要依据
|
|
|
+> - `{}` 包裹的内容为占位符,请替换为实际内容
|
|
|
+> - 引用块 `>` 中的文字为填写指导,填写后可删除
|
|
|
+> - 本文档应与技术细分文档、UI设计稿、原型图等配套使用
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 1. 文档信息 (Document Info)
|
|
|
+
|
|
|
+### 1.1 版本记录
|
|
|
+| 版本号 | 修改日期 | 修改人 | 修改内容 | 备注 |
|
|
|
+| :--- | :--- | :--- | :--- | :--- |
|
|
|
+| V1.0.0 | {YYYY-MM-DD} | {姓名} | 初始版本 | 对应技术文档 V1.0.0 |
|
|
|
+
|
|
|
+### 1.2 文档责任人
|
|
|
+| 角色 | 姓名 | 职责 |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| 产品经理 | {姓名} | 需求输出、需求评审、验收标准制定 |
|
|
|
+| UI设计师 | {姓名} | 界面设计、交互设计、原型输出 |
|
|
|
+| 技术负责人 | {姓名} | 技术方案评审、技术可行性评估 |
|
|
|
+| 测试负责人 | {姓名} | 测试用例编写、验收测试 |
|
|
|
+
|
|
|
+### 1.3 关联文档
|
|
|
+| 文档类型 | 文档名称 | 版本 | 说明 |
|
|
|
+| :--- | :--- | :--- | :--- |
|
|
|
+| 技术文档 | {Name}-技术细分文档.md | V1.0.0 | 技术实现方案 |
|
|
|
+| UI设计稿 | {Name}-UI设计稿 | V1.0 | Figma/Sketch设计文件 |
|
|
|
+| 原型图 | {Name}-原型图 | V1.0 | 交互原型文件 |
|
|
|
+| 数据库设计 | {Name}-数据库设计.md | V1.0 | 表结构设计文档 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 2. 产品概述 (Product Overview)
|
|
|
+
|
|
|
+### 2.1 产品定位
|
|
|
+> 简要描述产品的定位、目标用户、核心价值
|
|
|
+
|
|
|
+**产品定位**:{例如:面向门店老板和师傅的XXX应用,帮助门店高效管理订单、师傅、客户等业务}
|
|
|
+
|
|
|
+**目标用户**:
|
|
|
+- **主要用户**:{例如:门店老板、工作人员}
|
|
|
+- **次要用户**:{例如:师傅、运营人员}
|
|
|
+
|
|
|
+**核心价值**:
|
|
|
+1. {例如:提升订单处理效率,减少人工操作}
|
|
|
+2. {例如:实时掌握门店运营数据,辅助决策}
|
|
|
+3. {例如:优化师傅工作流程,提升服务质量}
|
|
|
+
|
|
|
+### 2.2 产品目标
|
|
|
+> 明确本次迭代要达成的业务目标
|
|
|
+
|
|
|
+**业务目标**:
|
|
|
+- {例如:提升订单处理效率30%}
|
|
|
+- {例如:减少订单遗漏率至5%以下}
|
|
|
+- {例如:提升师傅接单率至80%以上}
|
|
|
+
|
|
|
+**用户目标**:
|
|
|
+- {例如:门店老板能够快速查看和处理订单}
|
|
|
+- {例如:师傅能够便捷抢单和上报服务进度}
|
|
|
+
|
|
|
+### 2.3 产品范围
|
|
|
+> 明确本次迭代包含和不包含的功能范围
|
|
|
+
|
|
|
+**本次迭代包含**:
|
|
|
+- {例如:工单模块(订单列表、订单详情、订单操作)}
|
|
|
+- {例如:我的模块(门店信息、数据统计、待办事项)}
|
|
|
+- {例如:首页模块(搜索、Banner)}
|
|
|
+
|
|
|
+**本次迭代不包含**(后续迭代):
|
|
|
+- {例如:数据报表详细分析}
|
|
|
+- {例如:客户管理模块}
|
|
|
+- {例如:商品管理模块}
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 3. 用户角色与场景 (User Roles & Scenarios)
|
|
|
+
|
|
|
+### 3.1 用户角色定义
|
|
|
+> 明确不同用户角色的权限、职责、使用场景
|
|
|
+
|
|
|
+| 角色名称 | 角色描述 | 权限范围 | 典型使用场景 |
|
|
|
+| :--- | :--- | :--- | :--- |
|
|
|
+| {门店老板} | {拥有门店管理权限,可查看门店所有数据} | {可查看门店所有订单、数据统计、可指派师傅、转派订单} | {每日查看工单,处理待接单订单,指派师傅} |
|
|
|
+| {工作人员} | {门店普通员工,权限受限} | {可查看门店订单,但不可进行指派、转派等操作} | {查看订单列表,联系客户} |
|
|
|
+| {师傅} | {提供上门服务的师傅} | {可查看新工单、抢单、上报到达、开始服务} | {抢单、上报到达、开始服务、完成服务} |
|
|
|
+
|
|
|
+### 3.2 用户使用场景
|
|
|
+> 描述典型用户的使用场景,帮助理解需求背景
|
|
|
+
|
|
|
+**场景1:门店老板处理待接单订单**
|
|
|
+- **用户**:门店老板
|
|
|
+- **时间**:每天上午9:00
|
|
|
+- **场景描述**:
|
|
|
+ 1. 打开XXX应用,进入工单
|
|
|
+ 2. 查看"待接单"Tab,发现有5个新订单
|
|
|
+ 3. 点击订单卡片,查看订单详情(客户信息、服务地址、服务时间)
|
|
|
+ 4. 点击"指派师傅"按钮,选择可用师傅
|
|
|
+ 5. 指派成功后,订单状态更新为"待服务"
|
|
|
+
|
|
|
+**场景2:师傅抢单**
|
|
|
+- **用户**:师傅
|
|
|
+- **时间**:每天上午10:00
|
|
|
+- **场景描述**:
|
|
|
+ 1. 打开XXX应用,进入工单
|
|
|
+ 2. 查看"新工单"Tab,看到附近有3个可抢订单
|
|
|
+ 3. 查看订单距离(距您2.5km),选择距离最近的订单
|
|
|
+ 4. 点击"抢单"按钮,确认抢单
|
|
|
+ 5. 抢单成功后,订单状态更新为"待服务"
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 4. 功能需求 (Functional Requirements)
|
|
|
+
|
|
|
+### 4.1 {模块名称 - 例如:首页模块}
|
|
|
+
|
|
|
+#### 4.1.1 {功能点名称 - 例如:搜索查询}
|
|
|
+
|
|
|
+**功能ID**:{例如:M-01}
|
|
|
+**功能名称**:{例如:搜索查询}
|
|
|
+**功能描述**:
|
|
|
+> 详细描述功能的作用、用户如何使用
|
|
|
+
|
|
|
+{例如:搜索框默认显示"全域用户运营课程"文案,用户点击搜索框后跳转到搜索结果页。搜索支持4种类型:1=课程;2=活动;3=文章;4=混合结果列表(默认)。}
|
|
|
+
|
|
|
+**用户故事**:
|
|
|
+> 使用"作为...我希望...以便..."的格式描述用户故事
|
|
|
+
|
|
|
+作为{门店老板},我希望{能够快速搜索课程和活动},以便{学习运营知识,提升门店经营能力}。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+> 详细描述业务规则、数据规则、交互规则
|
|
|
+
|
|
|
+1. **搜索框显示规则**:
|
|
|
+ - 默认显示文案:"全域用户运营课程"
|
|
|
+ - 搜索框为只读状态,不可直接输入
|
|
|
+ - 点击搜索框跳转到搜索结果页
|
|
|
+
|
|
|
+2. **搜索结果规则**:
|
|
|
+ - 支持4种搜索类型:课程、活动、文章、混合结果列表
|
|
|
+ - 默认显示混合结果列表
|
|
|
+ - 搜索结果按相关性排序
|
|
|
+ - 支持分页加载,每页20条
|
|
|
+
|
|
|
+3. **交互规则**:
|
|
|
+ - 点击搜索框:跳转到搜索结果页
|
|
|
+ - 搜索结果页支持Tab切换(课程/活动/文章/全部)
|
|
|
+ - 支持下拉刷新、上拉加载更多
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+> 明确数据来源、数据表、字段映射
|
|
|
+
|
|
|
+- **搜索服务**:调用搜索服务接口,传入关键词和类型参数
|
|
|
+- **数据表**:`tp_child_lesson`(课程表)、`tp_activity`(活动表)、`tp_article`(文章表)
|
|
|
+- **字段映射**:
|
|
|
+ - 课程标题:`tp_child_lesson.name`
|
|
|
+ - 课程图片:`tp_child_lesson.info`(多个OSS链接用逗号拼接,取第一个)
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+> 描述异常情况的处理方式
|
|
|
+
|
|
|
+- **网络异常**:显示"网络异常,请稍后重试"提示,支持重试
|
|
|
+- **无搜索结果**:显示"暂无搜索结果"空状态
|
|
|
+- **搜索关键词为空**:显示默认推荐内容
|
|
|
+
|
|
|
+> **【交互布局规范】**
|
|
|
+> * **布局**: {例如:顶部搜索框 + 内容区域}
|
|
|
+> * **尺寸**:
|
|
|
+> * **搜索框高度**: `40px`
|
|
|
+> * **搜索框圆角**: `20px`(高度的一半,形成胶囊形状)
|
|
|
+> * **搜索图标**: `16px`,颜色 `#999999`,左侧内边距 `16px`
|
|
|
+> * **交互**:
|
|
|
+> * **点击搜索框**: 跳转到搜索结果页
|
|
|
+> * **搜索框为只读状态**: 不可直接输入
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+> 明确功能验收的标准,便于测试和验收
|
|
|
+
|
|
|
+1. ✅ 搜索框默认显示"全域用户运营课程"文案
|
|
|
+2. ✅ 点击搜索框能够跳转到搜索结果页
|
|
|
+3. ✅ 搜索结果页支持Tab切换,能够正确显示不同类型的结果
|
|
|
+4. ✅ 搜索结果支持分页加载,下拉刷新、上拉加载更多功能正常
|
|
|
+5. ✅ 网络异常时能够正确提示,支持重试
|
|
|
+6. ✅ 无搜索结果时显示空状态
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+#### 4.1.2 {功能点名称 - 例如:Banner配置}
|
|
|
+
|
|
|
+**功能描述**:
|
|
|
+{例如:首页主Banner支持后台配置,包含图片URL和跳转URL。支持多张Banner轮播,点击Banner跳转到配置的URL。}
|
|
|
+
|
|
|
+**用户故事**:
|
|
|
+作为{门店老板},我希望{能够在首页看到运营活动Banner},以便{了解最新活动和优惠信息}。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+1. **Banner显示规则**:
|
|
|
+ - Banner图片由后台配置,支持上传多张
|
|
|
+ - Banner支持自动轮播,轮播间隔3秒
|
|
|
+ - Banner支持左右滑动切换
|
|
|
+ - Banner底部显示指示器(小圆点),当前Banner高亮
|
|
|
+
|
|
|
+2. **Banner跳转规则**:
|
|
|
+ - 点击Banner跳转到配置的URL
|
|
|
+ - 跳转类型包括:
|
|
|
+ - 内部页面:使用`uni.navigateTo`跳转
|
|
|
+ - 外部链接:跳转WebView页面
|
|
|
+ - 小程序ID:使用`uni.navigateToMiniProgram`跳转
|
|
|
+
|
|
|
+3. **Banner配置规则**:
|
|
|
+ - 后台可配置Banner图片URL、跳转URL、跳转类型
|
|
|
+ - 后台可配置Banner显示顺序
|
|
|
+ - 后台可配置Banner是否启用
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+- **接口**:`GET /mall/home/banner`
|
|
|
+- **数据表**:`mall_banner`(Banner配置表)
|
|
|
+- **字段映射**:
|
|
|
+ - Banner图片:`mall_banner.image_url`
|
|
|
+ - 跳转URL:`mall_banner.jump_url`
|
|
|
+ - 跳转类型:`mall_banner.jump_type`(1=内部页面,2=外部链接,3=小程序ID)
|
|
|
+ - 显示顺序:`mall_banner.sort_order`
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+- **Banner图片加载失败**:显示默认占位图
|
|
|
+- **无Banner配置**:不显示Banner区域
|
|
|
+- **跳转URL无效**:提示"链接无效"
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+1. ✅ Banner能够正确显示后台配置的图片
|
|
|
+2. ✅ Banner支持自动轮播,轮播间隔3秒
|
|
|
+3. ✅ Banner支持左右滑动切换
|
|
|
+4. ✅ Banner底部指示器正确显示,当前Banner高亮
|
|
|
+5. ✅ 点击Banner能够正确跳转到配置的URL
|
|
|
+6. ✅ Banner图片加载失败时显示占位图
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 4.2 {模块名称 - 例如:工单模块}
|
|
|
+
|
|
|
+#### 4.2.1 {功能点名称 - 例如:订单列表}
|
|
|
+
|
|
|
+**功能描述**:
|
|
|
+{例如:工单支持多状态Tab导航,展示订单列表。订单状态包括:待接单、待服务、待上门、服务中、待转派。每个Tab显示对应状态的订单数量,点击Tab切换订单列表。}
|
|
|
+
|
|
|
+**用户故事**:
|
|
|
+作为{门店老板},我希望{能够快速查看不同状态的订单},以便{及时处理待处理的订单}。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+1. **Tab导航规则**:
|
|
|
+ - Tab显示:待接单、待服务、待上门、服务中、待转派
|
|
|
+ - 每个Tab显示订单数量,格式:"待接单(10)"
|
|
|
+ - 当前选中Tab字体高亮+蓝色,未选中为默认灰色
|
|
|
+ - 点击Tab切换下方订单列表数据
|
|
|
+ - 订单数量实时更新
|
|
|
+
|
|
|
+2. **订单卡片显示规则**:
|
|
|
+ - **订单类型标签**:仅展示"上门订单"和"服务订单"
|
|
|
+ - **商品封面图**:取`work_order_item.pic_url`,图片固定展示尺寸根据UI定,若上传图片不符合尺寸要求,则根据比例做自适应适配
|
|
|
+ - **服务名称**:取`work_order_item.goods_name`,显示完整名称,超出部分换行显示
|
|
|
+ - **订单金额**:取`work_order_item.payment_price`,当前订单的实付金额
|
|
|
+ - **订单状态**:显示当前订单状态(待接单/待服务/待上门/服务中/待转派)
|
|
|
+ - **客户姓名**:取`work_order_info.user_name`,全量展示
|
|
|
+ - **联系方式**:取`work_order_info.phone`,全量展示
|
|
|
+ - **服务时长**:显示单位为分钟,后台有功能但数据库没找到对应的字段(需确认)
|
|
|
+ - **服务时间**:取`work_order_info.appointment_date + appointment_time`,格式化显示:
|
|
|
+ - 当服务日期是【今天】:文案展示为"今天 HH:mm–HH:mm",如"今天 15:00–17:00"
|
|
|
+ - 当服务日期是【明天】:文案展示为"明天 HH:mm–HH:mm",如"明天 09:00–11:00"
|
|
|
+ - 当服务日期不是今天/明天:展示"MM月dd日 HH:mm–HH:mm",如"12月29日 15:00–17:00"
|
|
|
+ - 开始时间和结束时间均按24小时制展示,小时和分钟均补零(如 09:05)
|
|
|
+ - **服务地址**:多行展示,优先显示城市+区+详细地址。过长时自动换行,不做省略号
|
|
|
+ - **客户备注**:区块标题固定为"客户备注",正文为完整备注内容;超过2行时默认折叠,尾部展示向下箭头(展开),点击展开查看全部,再次点击收起
|
|
|
+
|
|
|
+3. **列表交互规则**:
|
|
|
+ - 支持下拉刷新,刷新当前Tab的订单列表
|
|
|
+ - 支持上拉加载更多,每页10-20条
|
|
|
+ - 点击订单卡片跳转到订单详情页
|
|
|
+ - 订单状态数量实时更新(每30秒轮询一次或使用WebSocket推送)
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+- **接口**:`GET /workorder/workOrder/page?shopId=xxx&status=xxx&page=1&size=10`
|
|
|
+- **数据表**:
|
|
|
+ - `work_order_info`(工单主表)
|
|
|
+ - `work_order_item`(工单明细表)
|
|
|
+- **字段映射**:
|
|
|
+ - 订单ID:`work_order_info.id`
|
|
|
+ - 订单状态:`work_order_info.status`
|
|
|
+ - 客户姓名:`work_order_info.user_name`
|
|
|
+ - 联系方式:`work_order_info.phone`
|
|
|
+ - 服务时间:`work_order_info.appointment_date + appointment_time`
|
|
|
+ - 服务地址:`work_order_info.service_address`
|
|
|
+ - 客户备注:`work_order_info.customer_remark`
|
|
|
+ - 商品名称:`work_order_item.goods_name`
|
|
|
+ - 商品图片:`work_order_item.pic_url`
|
|
|
+ - 订单金额:`work_order_item.payment_price`
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+- **网络异常**:显示"网络异常,请稍后重试"提示,支持下拉刷新重试
|
|
|
+- **无订单数据**:显示"暂无订单"空状态
|
|
|
+- **订单数据加载失败**:显示"加载失败,请重试"提示,支持重试
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+1. ✅ Tab导航能够正确显示5个状态,每个Tab显示订单数量
|
|
|
+2. ✅ 当前选中Tab字体高亮+蓝色,未选中为默认灰色
|
|
|
+3. ✅ 点击Tab能够切换订单列表数据
|
|
|
+4. ✅ 订单卡片能够正确显示所有字段信息
|
|
|
+5. ✅ 服务时间能够正确格式化显示(今天/明天/其他日期)
|
|
|
+6. ✅ 客户备注超过2行时能够折叠/展开
|
|
|
+7. ✅ 支持下拉刷新、上拉加载更多
|
|
|
+8. ✅ 点击订单卡片能够跳转到订单详情页
|
|
|
+9. ✅ 订单状态数量能够实时更新
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+#### 4.2.2 {功能点名称 - 例如:订单详情}
|
|
|
+
|
|
|
+**功能描述**:
|
|
|
+{例如:订单详情页展示订单完整信息,包括服务信息、客户信息、师傅信息、订单信息、订单操作按钮等。}
|
|
|
+
|
|
|
+**用户故事**:
|
|
|
+作为{门店老板},我希望{能够查看订单的详细信息},以便{了解订单全貌,进行订单操作}。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+1. **订单详情展示规则**:
|
|
|
+ - **服务信息**:服务名称、服务时长、服务时间、服务地址
|
|
|
+ - **客户信息**:客户姓名、联系方式、客户备注
|
|
|
+ - **师傅信息**(仅当已指派师傅时显示):
|
|
|
+ - 接单师傅:取`worker_user.name`
|
|
|
+ - 联系师傅:取`worker_user.phone_mob`
|
|
|
+ - 当前等级:取`worker_user.level_id`,需要转换为等级名称显示(如"中级师傅")
|
|
|
+ - 接单时间:前端统一展示为"MM月dd日 HH:mm"格式,例如:12月29日 15:02
|
|
|
+ - **订单信息**:
|
|
|
+ - 订单编号:取`work_order_info.order_no`,文本完整展示,不截断;点击【复制】按钮,复制成功toast"已复制"
|
|
|
+ - 订单收入:当前订单师傅预计总收入,含固定收入与上门费等合计,保留1位小数
|
|
|
+ - 收入说明文案:固定展示文案等运营那边确认后定(待定)
|
|
|
+ - 要求到达:默认比客户预计的上门时间早10分钟
|
|
|
+ - 客户期望到达:取`work_order_info.appointment_date + appointment_time`,展示用户下单时预定的服务开始–结束时间
|
|
|
+ - 阶段时间:抢单、到达、服务、完成,这几个时间以师傅实际点击提交为准,前端统一展示为"MM-dd HH:mm"格式,例如:12-29 15:02。未完成的阶段显示"--"
|
|
|
+
|
|
|
+2. **订单操作按钮规则**(根据订单状态显示不同按钮):
|
|
|
+ - **待接单状态**:
|
|
|
+ - 【取消订单】按钮:点击需二次确认弹窗,确认后订单状态更新为已取消并从当前列表移除
|
|
|
+ - 【联系客户】按钮:点击直接调用系统拨号
|
|
|
+ - 【指派师傅】按钮:点击按钮进入指派弹窗,选择可用师傅后更新接单信息
|
|
|
+ - **待转派状态**:
|
|
|
+ - 【转派订单】按钮:点击按钮触发师傅弹窗,完成后当前师傅信息更新为新师傅,并记录转派时间
|
|
|
+ - **待上门状态**:
|
|
|
+ - 底部整条按钮展示为「X分钟后开始」(倒计时),或「已到预约时间,尽快上门」(已超时)
|
|
|
+ - 按钮为禁用态,仅做提示,无点击事件
|
|
|
+ - **服务中状态**:
|
|
|
+ - 展示距离服务结束的倒计时,实时按本地时间刷新
|
|
|
+ - 显示"剩余X分钟"或"已超时X分钟"
|
|
|
+
|
|
|
+3. **倒计时功能规则**:
|
|
|
+ - **待上门倒计时**:
|
|
|
+ - 当前时间 < expected_arrive_time:底部整条按钮展示为「X分钟后开始」,用分钟倒计时,实时刷新
|
|
|
+ - 当当前时间 ≥ expected_arrive_time 且 service_start_time 为空:底部按钮文案切换为「已到预约时间,尽快上门」,不再显示倒计时
|
|
|
+ - 进入详情页时按当前时间重新计算剩余时间;若停留在该页面,文案每分钟自动更新一次
|
|
|
+ - **服务中倒计时**:
|
|
|
+ - 根据服务时长字段(单位:分钟,如120分钟)计算本次服务计划结束时间:计划结束时间 = 服务开始时间 + 服务时长
|
|
|
+ - 当前时间 < 计划结束时间时,展示"剩余X分钟"
|
|
|
+ - 当前时间 ≥ 计划结束时间且师傅未点击"结束服务"时,展示"已超时X分钟"
|
|
|
+ - **倒计时计算规则**:
|
|
|
+ - 不依赖`setInterval`递减,而是依赖**系统时间差**
|
|
|
+ - 在`onShow`时强制重算,防止后台挂起导致计时偏差
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+- **接口**:`GET /workorder/workOrder/{orderId}`
|
|
|
+- **数据表**:
|
|
|
+ - `work_order_info`(工单主表)
|
|
|
+ - `work_order_item`(工单明细表)
|
|
|
+ - `worker_user`(师傅表)
|
|
|
+- **字段映射**:
|
|
|
+ - 订单编号:`work_order_info.order_no`
|
|
|
+ - 订单收入:`work_order_info.payment_price`(需计算固定收入+上门费)
|
|
|
+ - 要求到达:`work_order_info.expected_arrive_time`(如果不存在,需计算:appointment_time - 10分钟)
|
|
|
+ - 客户期望到达:`work_order_info.appointment_date + appointment_time`
|
|
|
+ - 阶段时间:`work_order_info.accept_time`(抢单)、`work_order_info.arrive_time`(到达)、`work_order_info.service_start_time`(服务)、`work_order_info.service_end_time`(完成)
|
|
|
+ - 师傅姓名:`worker_user.name`
|
|
|
+ - 师傅电话:`worker_user.phone_mob`(注意:不是`phone`字段)
|
|
|
+ - 师傅等级:`worker_user.level_id`(需要转换为等级名称)
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+- **订单不存在**:提示"订单不存在",返回上一页
|
|
|
+- **订单数据加载失败**:显示"加载失败,请重试"提示,支持重试
|
|
|
+- **倒计时计算异常**:显示"--",不影响其他功能
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+1. ✅ 订单详情页能够正确显示所有信息模块(服务信息、客户信息、师傅信息、订单信息)
|
|
|
+2. ✅ 订单编号能够正确显示,点击复制按钮能够复制成功并提示
|
|
|
+3. ✅ 阶段时间能够正确格式化显示,未完成的阶段显示"--"
|
|
|
+4. ✅ 根据订单状态能够正确显示不同的操作按钮
|
|
|
+5. ✅ 待上门倒计时能够正确计算和显示,每分钟自动更新
|
|
|
+6. ✅ 服务中倒计时能够正确计算和显示,实时刷新
|
|
|
+7. ✅ 倒计时在`onShow`时能够强制重算,防止后台挂起导致计时偏差
|
|
|
+8. ✅ 点击操作按钮能够正确执行相应操作(取消订单、联系客户、指派师傅等)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 4.3 {模块名称 - 例如:我的模块}
|
|
|
+
|
|
|
+#### 4.3.1 {功能点名称 - 例如:门店信息展示}
|
|
|
+
|
|
|
+**功能描述**:
|
|
|
+{例如:我的页面顶部展示门店信息,包括门店名称、身份标签、评分等。}
|
|
|
+
|
|
|
+**用户故事**:
|
|
|
+作为{门店老板},我希望{能够查看门店基本信息},以便{了解门店状态}。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+1. **门店名称显示规则**:
|
|
|
+ - 当前登录门店/商户名称,与账号绑定的主门店名
|
|
|
+ - 最多14个汉字(暂定),超出以「…」截断
|
|
|
+ - 点击右侧小三角展开门店选择弹层
|
|
|
+
|
|
|
+2. **身份标签显示规则**:
|
|
|
+ - 枚举:门店老板、工作人员
|
|
|
+ - 看设计那边是做成一张图还是背景图
|
|
|
+
|
|
|
+3. **门店评分显示规则**:
|
|
|
+ - 显示历史总得分,0-5分,保留一位小数
|
|
|
+ - 无点击交互仅展示
|
|
|
+ - 计算方式:门店内师傅评分总和/师傅人数
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+- **接口**:`GET /mall/shop/info?shopId=xxx`
|
|
|
+- **数据表**:
|
|
|
+ - `shop_info`(门店信息表)
|
|
|
+ - `worker_user`(师傅表)
|
|
|
+- **字段映射**:
|
|
|
+ - 门店名称:`shop_info.shop_name`
|
|
|
+ - 身份标签:根据用户角色判断(门店老板/工作人员)
|
|
|
+ - 门店评分:计算`SUM(worker_user.score) / COUNT(worker_user.id)`,限制`worker_user.shop_id = shopId`且`worker_user.status = 可用`
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+- **门店信息加载失败**:显示"加载失败,请重试"提示
|
|
|
+- **评分计算异常**:显示"--"
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+1. ✅ 门店名称能够正确显示,超出14个汉字时以「…」截断
|
|
|
+2. ✅ 点击右侧小三角能够展开门店选择弹层
|
|
|
+3. ✅ 身份标签能够正确显示(门店老板/工作人员)
|
|
|
+4. ✅ 门店评分能够正确计算和显示,保留一位小数
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 4.4 核心接口需求 (Core API Requirements)
|
|
|
+> 汇总核心业务接口及其性能要求
|
|
|
+
|
|
|
+| 接口名称 | 调用方 | 核心参数 (Input) | 核心响应 (Output) | QPS要求 | RT要求 |
|
|
|
+| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
|
+| **抢单接口** | App-Worker | `orderId`, `geoPoint` | `success`, `reason` | 1000 | < 200ms |
|
|
|
+| **订单列表** | App-Worker | `page`, `lat`, `lng` | `List<OrderCard>` | 500 | < 500ms |
|
|
|
+| **位置上报** | IoT-Device | `deviceId`, `gps` | `ack` | 2000 | < 100ms |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 5. 非功能需求 (Non-Functional Requirements)
|
|
|
+
|
|
|
+### 5.1 性能需求
|
|
|
+> 明确性能指标要求
|
|
|
+
|
|
|
+- **页面加载时间**:
|
|
|
+ - 首页加载时间 < 2秒
|
|
|
+ - 订单列表加载时间 < 1秒
|
|
|
+ - 订单详情加载时间 < 500ms
|
|
|
+
|
|
|
+- **接口响应时间**:
|
|
|
+ - 订单列表查询:< 1秒
|
|
|
+ - 订单详情查询:< 500ms
|
|
|
+ - 数据统计查询:< 2秒(可考虑缓存)
|
|
|
+
|
|
|
+- **列表滚动性能**:
|
|
|
+ - 列表滚动流畅,60fps
|
|
|
+ - 支持分页加载,每页10-20条
|
|
|
+
|
|
|
+### 5.2 兼容性需求
|
|
|
+> 明确兼容性要求
|
|
|
+
|
|
|
+- **平台兼容**:
|
|
|
+ - XXX应用(iOS、Android)
|
|
|
+ - 支持微信版本:7.0+
|
|
|
+
|
|
|
+- **设备兼容**:
|
|
|
+ - iOS 12.0+
|
|
|
+ - Android 8.0+
|
|
|
+
|
|
|
+- **屏幕适配**:
|
|
|
+ - 支持不同屏幕尺寸(iPhone SE、iPhone 12、iPhone 14 Pro Max等)
|
|
|
+ - 支持横竖屏切换(如需要)
|
|
|
+
|
|
|
+### 5.3 安全性需求
|
|
|
+> 明确安全性要求
|
|
|
+
|
|
|
+- **数据安全**:
|
|
|
+ - 所有接口需要Token认证
|
|
|
+ - 敏感数据(如手机号)需要脱敏显示
|
|
|
+ - 订单操作需要权限校验
|
|
|
+
|
|
|
+- **多租户隔离**:
|
|
|
+ - 所有接口都需要校验`tenant_id`,确保数据隔离
|
|
|
+ - 门店隔离:所有业务接口都需要校验`shop_id`,确保只能操作当前门店的数据
|
|
|
+
|
|
|
+### 5.4 可用性需求
|
|
|
+> 明确可用性要求
|
|
|
+
|
|
|
+- **错误处理**:
|
|
|
+ - 网络异常时显示友好提示,支持重试
|
|
|
+ - 数据加载失败时显示空状态,支持重试
|
|
|
+ - 操作失败时显示明确错误提示
|
|
|
+
|
|
|
+- **空状态处理**:
|
|
|
+ - 所有列表页需封装空状态组件,区分"无网络"、"无数据"、"加载失败"三种状态
|
|
|
+
|
|
|
+- **降级方案**:
|
|
|
+ - 若用户拒绝定位权限,"距离优先"排序置灰或降级为默认排序
|
|
|
+ - 若门店坐标缺失,距离计算返回默认值或提示"距离未知"
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 6. 数据统计需求 (Data Statistics Requirements)
|
|
|
+
|
|
|
+### 6.1 数据指标定义
|
|
|
+> 明确需要统计的数据指标
|
|
|
+
|
|
|
+| 指标名称 | 指标定义 | 计算方式 | 数据来源 |
|
|
|
+| :--- | :--- | :--- | :--- |
|
|
|
+| 访客数 | 今日访问XXX应用或门店的UV数 | 统计今日访问XXX应用或门店的独立用户数 | `mall_visit_log`表 |
|
|
|
+| 成交单量 | 今日已支付订单数 | 统计`order_info`表下限制同一个`sale_shop_id`,且`order_type`为1,2,3,4,5的所有`is_pay`状态=1的订单数量 | `order_info`表 |
|
|
|
+| 成交金额 | 今日已支付订单的实收金额(不含退款) | 统计今日已支付订单的`payment_price`总和,单位元,保留2位小数 | `order_info`表 |
|
|
|
+| 待接单数 | 进入工单池但尚未被师傅接单的服务单数 | 统计`work_order_info`表中`status='待接单'`的订单数量 | `work_order_info`表 |
|
|
|
+| 待服务数 | 已接单但服务未开始的服务单数 | 统计`work_order_info`表中`status='待服务'`的订单数量 | `work_order_info`表 |
|
|
|
+| 服务中数 | 服务已开始尚未结束的服务单数 | 统计`work_order_info`表中`status='服务中'`的订单数量 | `work_order_info`表 |
|
|
|
+
|
|
|
+### 6.2 数据展示规则
|
|
|
+> 明确数据展示的格式和规则
|
|
|
+
|
|
|
+- **访客数**:
|
|
|
+ - 显示今日UV数
|
|
|
+ - 下行文案显示【昨日 X】
|
|
|
+ - 点击跳转"数据"页面
|
|
|
+
|
|
|
+- **成交单量**:
|
|
|
+ - 显示今日已支付订单数
|
|
|
+ - 下行文案显示【昨日 X】
|
|
|
+ - 点击跳转"数据"页面
|
|
|
+
|
|
|
+- **成交金额**:
|
|
|
+ - 今日已支付订单的实收金额(不含退款),单位元,保留2位小数
|
|
|
+ - 超10万时用【1.2万】格式
|
|
|
+ - 点击跳转"数据"页面
|
|
|
+
|
|
|
+### 6.3 数据更新频率
|
|
|
+> 明确数据更新的频率
|
|
|
+
|
|
|
+- **实时数据**:订单状态数量、待办事项数量(每30秒轮询一次或使用WebSocket推送)
|
|
|
+- **准实时数据**:访客数、成交单量、成交金额(每小时更新一次)
|
|
|
+- **历史数据**:昨日数据(每天凌晨更新)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 7. 交互设计说明 (Interaction Design)
|
|
|
+
|
|
|
+### 7.1 页面跳转规则
|
|
|
+> 明确页面之间的跳转关系
|
|
|
+
|
|
|
+| 来源页面 | 触发操作 | 目标页面 | 跳转方式 | 传递参数 |
|
|
|
+| :--- | :--- | :--- | :--- | :--- |
|
|
|
+| 首页 | 点击搜索框 | 搜索结果页 | `uni.navigateTo` | `keyword`, `type` |
|
|
|
+| 首页 | 点击Banner | 配置的URL | `uni.navigateTo` / `uni.navigateToMiniProgram` | - |
|
|
|
+| 工单 | 点击订单卡片 | 订单详情页 | `uni.navigateTo` | `orderId` |
|
|
|
+| 我的页面 | 点击数据统计项 | 数据页面 | `uni.navigateTo` | `type` |
|
|
|
+| 我的页面 | 点击待办项 | 对应列表页 | `uni.navigateTo` | `status` |
|
|
|
+
|
|
|
+### 7.2 交互反馈规则
|
|
|
+> 明确用户操作的反馈方式
|
|
|
+
|
|
|
+- **点击反馈**:
|
|
|
+ - 按钮点击:显示点击态(颜色变化或阴影效果)
|
|
|
+ - 列表项点击:显示点击态,跳转页面
|
|
|
+
|
|
|
+- **加载反馈**:
|
|
|
+ - 页面加载:显示Loading动画
|
|
|
+ - 列表加载:显示下拉刷新动画、上拉加载动画
|
|
|
+ - 操作提交:显示Loading提示,防止重复提交
|
|
|
+
|
|
|
+- **成功反馈**:
|
|
|
+ - 操作成功:显示Toast提示(如"抢单成功"、"切换成功")
|
|
|
+ - 数据更新:自动刷新页面或列表
|
|
|
+
|
|
|
+- **失败反馈**:
|
|
|
+ - 网络异常:显示Toast提示"网络异常,请稍后重试",支持重试
|
|
|
+ - 操作失败:显示Toast提示具体错误信息
|
|
|
+ - 数据加载失败:显示空状态,支持重试
|
|
|
+
|
|
|
+### 7.3 弹窗交互规则
|
|
|
+> 明确弹窗的显示和关闭规则
|
|
|
+
|
|
|
+- **确认弹窗**:
|
|
|
+ - 取消订单:点击"取消订单"按钮,弹出二次确认弹窗,确认后执行操作
|
|
|
+ - 抢单确认:点击"抢单"按钮,弹出确认弹窗,确认后执行抢单操作
|
|
|
+
|
|
|
+- **选择弹窗**:
|
|
|
+ - 门店切换:点击门店名称或小三角,弹出门店选择弹层,选择后关闭弹层并刷新页面
|
|
|
+ - 指派师傅:点击"指派师傅"按钮,弹出师傅选择弹层,选择后关闭弹层并更新订单
|
|
|
+
|
|
|
+- **信息弹窗**:
|
|
|
+ - 订单详情:点击订单卡片,跳转到订单详情页(非弹窗)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 8. 验收标准 (Acceptance Criteria)
|
|
|
+
|
|
|
+### 8.1 功能验收标准
|
|
|
+> 明确每个功能的验收标准,便于测试和验收
|
|
|
+
|
|
|
+**通用验收标准**:
|
|
|
+1. ✅ 所有功能按照需求文档实现,无遗漏
|
|
|
+2. ✅ 所有交互按照交互设计实现,体验流畅
|
|
|
+3. ✅ 所有数据按照数据统计需求正确计算和显示
|
|
|
+4. ✅ 所有异常情况按照异常处理规则正确处理
|
|
|
+5. ✅ 所有性能指标达到性能需求要求
|
|
|
+
|
|
|
+**模块验收标准**:
|
|
|
+- **首页模块**:
|
|
|
+ - ✅ 搜索框默认显示"全域用户运营课程"文案
|
|
|
+ - ✅ 点击搜索框能够跳转到搜索结果页
|
|
|
+ - ✅ Banner能够正确显示和轮播
|
|
|
+ - ✅ 点击Banner能够正确跳转
|
|
|
+
|
|
|
+- **工单模块**:
|
|
|
+ - ✅ Tab导航能够正确显示5个状态,每个Tab显示订单数量
|
|
|
+ - ✅ 订单列表能够正确显示所有字段
|
|
|
+ - ✅ 订单详情页能够正确显示所有信息
|
|
|
+ - ✅ 订单操作按钮能够正确执行操作
|
|
|
+ - ✅ 倒计时功能能够正确计算和显示
|
|
|
+
|
|
|
+- **我的模块**:
|
|
|
+ - ✅ 门店信息能够正确显示
|
|
|
+ - ✅ 数据统计能够正确计算和显示
|
|
|
+ - ✅ 待办事项能够正确统计和显示
|
|
|
+ - ✅ 门店切换功能能够正常工作
|
|
|
+
|
|
|
+### 8.2 测试验收标准
|
|
|
+> 明确测试验收的标准
|
|
|
+
|
|
|
+- **功能测试**:
|
|
|
+ - 所有功能点测试通过率100%
|
|
|
+ - 所有异常情况测试通过率100%
|
|
|
+
|
|
|
+- **兼容性测试**:
|
|
|
+ - iOS 12.0+ 测试通过
|
|
|
+ - Android 8.0+ 测试通过
|
|
|
+ - XXX应用7.0+ 测试通过
|
|
|
+
|
|
|
+- **性能测试**:
|
|
|
+ - 页面加载时间达到性能需求要求
|
|
|
+ - 接口响应时间达到性能需求要求
|
|
|
+ - 列表滚动性能达到60fps
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 9. 版本规划 (Version Planning)
|
|
|
+
|
|
|
+### 9.1 本次迭代范围
|
|
|
+> 明确本次迭代包含的功能范围
|
|
|
+
|
|
|
+**V1.0.0 版本包含**:
|
|
|
+- 首页模块(搜索、Banner)
|
|
|
+- 工单模块(订单列表、订单详情、订单操作、筛选排序、倒计时)
|
|
|
+- 我的模块(门店信息、数据统计、待办事项、课程列表、退出登录)
|
|
|
+
|
|
|
+### 9.2 后续迭代规划
|
|
|
+> 明确后续迭代的功能规划
|
|
|
+
|
|
|
+**V1.1.0 版本规划**(预计{YYYY-MM-DD}上线):
|
|
|
+- 数据报表详细分析
|
|
|
+- 客户管理模块
|
|
|
+- 商品管理模块
|
|
|
+
|
|
|
+**V1.2.0 版本规划**(预计{YYYY-MM-DD}上线):
|
|
|
+- 消息通知功能
|
|
|
+- 评价管理功能
|
|
|
+- 更多数据统计功能
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 10. 附录 (Appendix)
|
|
|
+
|
|
|
+### 10.1 术语表
|
|
|
+> 定义文档中使用的专业术语
|
|
|
+
|
|
|
+| 术语 | 定义 |
|
|
|
+| :--- | :--- |
|
|
|
+| UV | Unique Visitor,独立访客数 |
|
|
|
+| PV | Page View,页面浏览量 |
|
|
|
+| OSS | Object Storage Service,对象存储服务 |
|
|
|
+| SSE | Server-Sent Events,服务器推送事件 |
|
|
|
+| MQTT | Message Queuing Telemetry Transport,消息队列遥测传输协议 |
|
|
|
+| Redis GEO | Redis地理位置数据结构,用于存储和查询地理位置信息 |
|
|
|
+| Haversine公式 | 计算地球表面两点间距离的公式 |
|
|
|
+
|
|
|
+### 10.2 参考文档
|
|
|
+> 列出参考的相关文档
|
|
|
+
|
|
|
+- [需求分析模板](4、需求分析模板.md)
|
|
|
+- [视觉与交互 DNA 规范模板](6、视觉与交互%20DNA%20规范模板.md)
|
|
|
+- [UI 设计说明模板](7、UI%20设计说明模板.md)
|
|
|
+- [技术细分模板](10、技术细分模板.md)
|
|
|
+- [UniApp官方文档](https://uniapp.dcloud.net.cn/)
|
|
|
+- [uView Pro官方文档](https://uviewpro.cn/)
|
|
|
+
|
|
|
+### 10.3 变更记录
|
|
|
+> 记录需求变更的历史
|
|
|
+
|
|
|
+| 变更日期 | 变更内容 | 变更原因 | 变更人 |
|
|
|
+| :--- | :--- | :--- | :--- |
|
|
|
+| {YYYY-MM-DD} | {变更内容描述} | {变更原因} | {姓名} |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**文档版本**:V1.0.0
|
|
|
+**创建时间**:{YYYY-MM-DD}
|
|
|
+**最后更新**:{YYYY-MM-DD}
|
|
|
+**文档状态**:✅ 待评审 / ✅ 评审通过 / ✅ 开发中 / ✅ 已完成
|
|
|
+
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 附录:OctoPanel 设备中心子 PRD 节选(结构参考)
|
|
|
+
|
|
|
+# {Name} — 设备中心模块 PRD V1
|
|
|
+
|
|
|
+> **文档说明**:定义设备中心一级菜单的完整功能与布局,包括实例列表、实例分组、集群概览、批量操作、配置管理(基线/模板/一致性总览/下发任务/下发记录)及单实例管理(概览、对话测试、渠道、会话、Agent、技能、节点、用量、定时、配置、调试、上下文诊断、日志)。与 PRD-V1 总纲 §5.2 设备中心模块对应。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 1. 文档信息 (Document Info)
|
|
|
+
|
|
|
+### 1.1 版本记录
|
|
|
+
|
|
|
+| 版本号 | 修改日期 | 修改人 | 修改内容 | 备注 |
|
|
|
+| :--- | :--- | :--- | :--- | :--- |
|
|
|
+| V1.0.0 | 2026-02-12 | PartMe | 初版:从总纲 PRD §5.2 拆出并扩展 | 按一级菜单拆分 |
|
|
|
+| V1.1.0 | 2026-02-12 | PartMe | §3.5 功能操作清单;§4 功能规则/数据来源/异常处理/验收标准清单化;§6 改为 Gateway WS | 按规划与 PRD 模板完善 |
|
|
|
+| V1.2.0 | 2026-02-24 | PartMe | §5.11 浏览器控制能力管理(@playwright/mcp、browser-use 两条路线) | 已被 V1.3.0 覆盖 |
|
|
|
+| V1.3.0 | 2026-02-24 | PartMe | §5.11 重写为四路线方案(A/B/C/D);9 个功能模块 | 已被 V1.4.0 覆盖 |
|
|
|
+| V1.4.0 | 2026-02-24 | PartMe | §5.11 扩展为五路线方案:新增路线 E mcp-chrome(DC-04-10/11,Desktop P0)含安装连接管理和权限管理;11 个功能模块、13 项验收标准;异常处理增加 mcp-chrome 降级策略 | 已被 V1.5.0 覆盖 |
|
|
|
+| V1.5.0 | 2026-02-24 | PartMe | 新增 §5.12 Skills 管理能力(DC-05):8 个功能模块(Skills 列表管理/ClawHub 商店/安装引导/配置基线/安全审核/审计日志/批量安装/Desktop 推荐向导)、13 项验收标准;含安全策略(ClawHavoc 事件应对)、异常处理 | - |
|
|
|
+| V1.6.0 | 2026-02-24 | PartMe | 新增 §5.13 环境检查与 CLI 管理能力(DC-06):7 个功能模块(CLI 安装检测/环境变量冲突检测/环境变量管理/备份恢复/安装向导集成/远程诊断/Desktop 设置页)、9 项验收标准;借鉴 CC Switch EnvChecker/EnvManager 架构 | - |
|
|
|
+
|
|
|
+### 1.2 文档责任人
|
|
|
+
|
|
|
+| 角色 | 职责 |
|
|
|
+| :--- | :--- |
|
|
|
+| 产品经理 | 需求与验收确认 |
|
|
|
+| 技术负责人 | 与 OpenClaw 插件接口对齐 |
|
|
|
+| UI/前端 | 界面与交互实现 |
|
|
|
+
|
|
|
+### 1.3 关联文档
|
|
|
+
|
|
|
+| 文档类型 | 文档名称 | 说明 |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| 同模块 UI | [{Name}-设备中心-UI设计说明-V1]({Name}-设备中心-UI设计说明-V1.md) | §3 设备中心布局 |
|
|
|
+| 同模块 Stitch | [{Name}-设备中心-Stitch设计提示词]({Name}-设备中心-Stitch设计提示词.md) | Stitch 布局提示词 |
|
|
|
+| 模型服务 PRD | [{Name}-模型管理-PRD-V1](../6、模型服务/{Name}-模型管理-PRD-V1.md) | 模型配置模板下发、Key 池注入实例配置 |
|
|
|
+| 历史场景层说明 | 历史业务场景能力已移出主线 | 单实例仅保留会话查看与运行态排障,不承载业务场景配置 |
|
|
|
+| 功能与界面规划 | 《{Name}-V1-功能与界面规划》 | 功能操作与布局/交互要点 |
|
|
|
+| 技术方案 | 《{Name}-技术方案与路线》 | 平台能力与配置管理路线 |
|
|
|
+| DNA 规范 | [{Name}-视觉与交互DNA规范](../../9、{Name}-视觉与交互DNA规范.md) | 一致性状态色、表格、表单 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 2. 产品概述 (Product Overview)
|
|
|
+
|
|
|
+### 2.1 功能定位
|
|
|
+
|
|
|
+设备中心是 {Name} 的核心入口,提供多 OpenClaw 实例的注册、分组、监控、配置管理与单实例管理(点击某实例后进入的完整管理面板),通过游戏化向导与可视化表单提供与 OpenClaw 等同的配置能力,并支持基线/模板/一致性检测与批量下发。
|
|
|
+
|
|
|
+### 2.2 核心价值
|
|
|
+
|
|
|
+| 价值点 | 说明 |
|
|
|
+| :--- | :--- |
|
|
|
+| 多实例统一视图 | 实例列表、分组、集群概览、批量启停/重启/更新 |
|
|
|
+| 配置可落地可审计 | 基线配置、配置模板、一致性总览、下发任务、下发记录 |
|
|
|
+| 单实例全功能 | 点击实例进入 12 个子页面:概览、对话测试、渠道、会话、Agent、技能、节点、用量、定时、配置、调试、上下文诊断、日志 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 3. 二级菜单与能力
|
|
|
+
|
|
|
+| 二级菜单 | 能力简述 | 阶段 |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| **实例列表** | 卡片/列表视图,在线状态、版本、标签、分组、一致性状态、配置差异项数;添加实例、批量操作;管理 → 进入单实例 | P0 |
|
|
|
+| **实例分组** | 按业务线/地域/环境分组、打标签 | P0 |
|
|
|
+| **集群概览** | 多实例聚合指标:健康状态、会话量、用量、渠道状态 | P0 |
|
|
|
+| **批量操作** | 勾选实例 → 批量启停、批量重启、批量更新插件 | P0 |
|
|
|
+| **配置管理** | 基线配置、配置模板、一致性总览、下发任务、下发记录(见下表) | P0 |
|
|
|
+| **↳ 单实例管理** | 实例概览、对话测试、渠道管理、会话管理、Agent 管理、技能管理、节点管理、用量统计、定时任务、配置管理、调试工具、上下文诊断、实例日志 | P0/P1 |
|
|
|
+
|
|
|
+配置管理子项:
|
|
|
+
|
|
|
+| 子项 | 能力 |
|
|
|
+| :--- | :--- |
|
|
|
+| 基线配置 | 全局期望状态,可视化表单 7 大分类,版本管理、导出 JSON、从模板应用 |
|
|
|
+| 配置模板 | 可复用片段(Agent/渠道/插件等),分类与版本管理 |
|
|
|
+| 一致性总览 | 实例 × 一致性状态及差异项数;查看差异、下发基线、从基线恢复、关联基线 |
|
|
|
+| 下发任务 | 四步:选来源 → 选目标实例 → 预览 diff → 确认下发并展示结果 |
|
|
|
+| 下发记录 | 时间、操作人、配置来源、目标实例、变更摘要、每实例结果 |
|
|
|
+
|
|
|
+### 3.5 功能操作清单(与 《V1 功能与界面规划》 §3.1 对应)
|
|
|
+
|
|
|
+| 功能点 | 操作 | 预期结果 |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| DC-01 | 切换卡片/列表视图 | 保留筛选条件,内容区切换为卡片栅格或表格 |
|
|
|
+| DC-01 | 筛选(分组/标签/在线状态/搜索) | 请求实例列表带筛参,更新列表 |
|
|
|
+| DC-01 | 点击「+ 添加实例」 | 打开注册/添加表单或向导,提交后实例入库并出现在列表 |
|
|
|
+| DC-01 | 勾选多条 → 批量操作 | 显示批量操作栏,选择操作并确认后执行,结果 Toast 或结果列表 |
|
|
|
+| DC-01 | 点击「管理 →」 | 进入该实例单实例管理,默认 Tab「概览」 |
|
|
|
+| DC-01 | 查看差异/从基线恢复/下发基线/关联基线 | 按状态显示;从基线恢复/同步到基线二次确认后执行 |
|
|
|
+| DC-02a | 编辑基线 → 保存 | 乐观锁校验;冲突则提示「配置已被他人更新,请刷新后重新编辑」并拦截 |
|
|
|
+| DC-02c | 四步下发 → 确认 | 选来源→选目标→预览 diff→确认;离线实例按所选策略(立即失败/自动重试);等待重试可查看与取消 |
|
|
|
+| DC-04 | 分组/标签 CRUD、管理实例 | 新建/编辑/删除分组或标签;多选实例关联分组;实例列表按分组/标签筛选 |
|
|
|
+| DC-05 | 时间筛选、刷新、下钻 | 聚合指标与图表展示;下钻跳转实例列表 |
|
|
|
+| DC-02e | 模板 CRUD、从模板应用 | 新建/编辑模板;在基线配置页从模板应用合并到基线 |
|
|
|
+| DC-02d | 查看下发记录 | 列表含操作人、时间、目标实例、结果;支持筛选与详情 |
|
|
|
+| DC-03 | 单实例配置保存/从基线恢复/同步到基线 | 保存写回实例并热重载;恢复/同步二次确认 |
|
|
|
+| DC-03-01~13 | 单实例各子页 | 概览/对话测试/渠道/会话/Agent/技能/节点/用量/定时/配置/调试/上下文诊断/日志 对应操作与展示 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 4. 功能需求 (Functional Requirements)
|
|
|
+
|
|
|
+### 5.1 实例列表(DC-01)
|
|
|
+
|
|
|
+**功能ID**:DC-01
|
|
|
+**功能名称**:实例列表
|
|
|
+
|
|
|
+**功能描述**:设备中心默认页。展示已注册 OpenClaw 实例的卡片或列表视图,含在线状态、实例名、一致性状态、版本、标签、Agent 数、会话数、配置差异项数;支持添加实例、筛选、视图切换、批量操作;操作包括管理 →、查看差异、从基线恢复、下发基线、关联基线(按状态显示)。与《{Name} 需求分析文档 V1》§5.1.1 一致。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望在设备中心看到所有实例的状态与一致性,以便快速进入管理或执行下发/恢复。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:卡片视图栅格 3~4 列,卡片内在线状态点(8px)+ 实例名 + 一致性状态 ●(已同步/已修改/待下发/下发失败/未纳管,色与 DNA 一致)、版本、标签、Agent 数/会话数/配置差异项数、勾选框与操作按钮。列表视图为表格,列与卡片信息对应,操作列右对齐。筛选区:分组 ▾、标签 ▾、在线状态 ▾、搜索框(占位「搜索实例名...」);视图切换「卡片 | 列表」。
|
|
|
+2. **业务规则**:一致性状态与差异项数由「当前实例配置 vs 基线」计算(通过 WS config.get 拉取实例配置);未纳管实例可关联基线后纳入管理。批量操作:批量启停、批量重启、批量更新插件等。
|
|
|
+3. **交互规则**:切换视图保留筛选条件。勾选多条后显示批量操作栏;选择操作并确认后请求执行。点击「管理 →」路由到该实例单实例管理,默认 Tab「概览」。从基线恢复、同步到基线需二次确认(与总纲 §2.4 危险操作一致)。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- 实例列表:管理后台 {Name} 数据库(instance、instance_group、instance_tag);在线状态、会话数、Agent 数等通过各实例 **Gateway WebSocket** `health`、`status` 及统计能力获取;一致性状态与差异项数由聚合层对每个实例 **WS config.get** 与基线 diff 计算。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **网络异常**:列表加载失败展示 Toast 或横幅,支持重试。单实例离线时该实例显示离线态,不影响其他实例展示。
|
|
|
+- **无实例**:空状态展示插画+「立即添加实例」引导(与总纲 §2.3 一致)。
|
|
|
+- **从基线恢复/同步失败**:模态展示错误原因,支持重试。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 筛选(分组/标签/在线状态/搜索)正确过滤实例列表。
|
|
|
+2. ✅ 卡片/列表视图切换正确,切换后保留筛选条件。
|
|
|
+3. ✅ 点击「管理 →」进入该实例单实例管理,默认 Tab「概览」。
|
|
|
+4. ✅ 按一致性状态正确显示「查看差异」「从基线恢复」「下发基线」「关联基线」等操作。
|
|
|
+5. ✅ 从基线恢复、同步到基线有二次确认,执行后状态与基线一致。
|
|
|
+6. ✅ 批量勾选后批量操作栏出现,执行后结果正确反馈。
|
|
|
+
|
|
|
+### 5.2 实例分组(DC-04)
|
|
|
+
|
|
|
+**功能ID**:DC-04
|
|
|
+**功能名称**:实例分组
|
|
|
+
|
|
|
+**功能描述**:按业务线/地域/环境等维度对实例进行分组与打标签;分组/标签 CRUD、与实例多对多关联;实例列表筛选依赖分组与标签。界面与交互遵循 [{Name} 视觉与交互 DNA 规范](../../9、{Name}-视觉与交互DNA规范.md) §5.3 列表与表格、§5.2 表格与卡片。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望将实例按业务线或地域分组并打标签,以便在实例列表与下发给定时快速筛选。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:独立页「设备中心 > 实例分组」;分组与标签可分 Tab 或左右区;表格或卡片:分组名/标签名、关联实例数、操作(编辑、删除、管理实例);主按钮「+ 新建分组」「+ 新建标签」;空状态插画+引导(DNA §5.6)。
|
|
|
+2. **业务规则**:分组与标签存 {Name} 数据库;实例与分组多对多;删除分组前若有实例关联需提示或先解绑。
|
|
|
+3. **交互规则**:新建/编辑 → 表单(名称、描述等)→ 保存后列表刷新;管理实例 → 多选实例关联到该分组。
|
|
|
+
|
|
|
+**数据来源**:{Name} 数据库 instance_group、instance_tag、instance_group_relation;实例列表筛选时带 group_id/tag_id 参数。
|
|
|
+
|
|
|
+**异常处理**:保存失败 Toast;删除有关联实例的分组时提示「请先解除实例关联」或二次确认。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 分组/标签 CRUD 正常,列表正确展示关联实例数。
|
|
|
+2. ✅ 管理实例可多选实例关联到分组;实例列表筛选按分组/标签正确过滤。
|
|
|
+3. ✅ 删除有关联的分组有提示或二次确认。
|
|
|
+
|
|
|
+### 5.3 集群概览(DC-05)
|
|
|
+
|
|
|
+**功能ID**:DC-05
|
|
|
+**功能名称**:集群概览
|
|
|
+
|
|
|
+**功能描述**:多实例聚合指标页:健康状态(正常/异常/离线占比)、总会话量、总用量、渠道状态;支持时间筛选与刷新;可选下钻到实例列表。状态色与 [DNA 规范](../../9、{Name}-视觉与交互DNA规范.md) §3.1 功能色、§3.1.2 一致性状态色 一致。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望在一页看到所有实例的聚合健康与用量,以便快速发现异常。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:独立页「设备中心 > 集群概览」;顶栏时间范围下拉、刷新按钮;指标卡片行(健康、会话量、用量、渠道状态);可选饼图/柱状图,图例 12px。
|
|
|
+2. **业务规则**:数据由聚合层汇总各实例 **Gateway WebSocket** health、status 及统计接口。
|
|
|
+3. **交互规则**:时间筛选/刷新 → 重新请求聚合数据;下钻(若有)→ 跳转实例列表并带筛选。
|
|
|
+
|
|
|
+**数据来源**:各实例 WS health、status;聚合层或 {Name} 统计表。
|
|
|
+
|
|
|
+**异常处理**:加载失败 Toast/横幅、重试;部分实例离线时聚合仍展示,离线数计入「异常/离线」占比。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 指标卡片与可选图表正确展示;时间筛选与刷新生效。
|
|
|
+2. ✅ 下钻(若有)跳转实例列表并带正确筛选参数。
|
|
|
+
|
|
|
+### 5.4 配置管理 — 配置模板(DC-02e)
|
|
|
+
|
|
|
+**功能ID**:DC-02e
|
|
|
+**功能名称**:配置模板
|
|
|
+
|
|
|
+**功能描述**:可复用的配置片段(Agent/渠道/插件等),分类管理、版本管理;从模板应用至基线;列表与新建/编辑表单。遵循 [DNA 规范](../../9、{Name}-视觉与交互DNA规范.md) §5.4 表单与配置、§5.2 表格。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望维护一批配置模板并可从模板应用到基线,以便快速生成标准配置。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:独立子页「配置管理 > 配置模板」;表格 模板名、分类、版本、操作;主按钮「+ 新建模板」;新增/编辑弹窗或抽屉(模板名、分类、内容 JSON 或表单)。
|
|
|
+2. **业务规则**:模板存 {Name} 数据库;分类可选 Agent/渠道/插件等;从模板应用在基线配置页操作,选择模板后合并到当前基线(同 DC-02a 乐观锁)。
|
|
|
+3. **交互规则**:新建/编辑 → 保存后列表刷新;从模板应用入口可在基线配置页。
|
|
|
+
|
|
|
+**数据来源**:{Name} 数据库 config_template;从模板应用写基线表。
|
|
|
+
|
|
|
+**异常处理**:保存失败 Toast;从模板应用时若基线版本冲突同 DC-02a。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 模板 CRUD 正常;从模板应用至基线后基线内容正确合并。
|
|
|
+2. ✅ 分类与版本展示正确。
|
|
|
+
|
|
|
+### 5.5 配置管理 — 基线配置(DC-02a)
|
|
|
+
|
|
|
+**功能ID**:DC-02a
|
|
|
+**功能名称**:基线配置
|
|
|
+
|
|
|
+**功能描述**:可视化表单编辑「基线配置」,对应 OpenClaw 配置结构,分 7 大分类(基础/认证/Agent/渠道/插件/监控/会话等);支持版本管理(版本号、备注)、导出 JSON、从模板应用。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望在管理后台编辑基线配置并保存版本,以便统一下发给多实例且可追溯。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:7 大分类以 Tab 或左侧导航组织;表单字段与 openclaw.json 结构对齐;版本号与备注在页顶或版本历史区展示。
|
|
|
+2. **业务规则**:必填与格式校验(失焦校验,与总纲 §2.4 一致);保存后生成新版本、版本递增。**基线版本冲突处理**:保存时传当前 version,后端乐观锁校验;若后端 version > 前端,返回冲突错误,前端提示「配置已被他人更新,请刷新后重新编辑」并拦截保存。
|
|
|
+3. **交互规则**:从模板应用 → 选择模板后合并到当前基线。导出 JSON → 下载文件可被 OpenClaw 加载。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- 基线存 {Name} 数据库(baseline_version 等);读写为管理后台自有 API;与实例交互通过 **Gateway WebSocket** config.set/config.apply 在下发时使用。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **冲突**:保存时若版本冲突,展示上述提示,不提交;用户刷新后重新编辑再保存。
|
|
|
+- **校验失败**:字段下方红色错误文案,不提交。
|
|
|
+- **网络异常**:保存失败 Toast 或模态,支持重试。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 编辑保存成功,版本历史可查。
|
|
|
+2. ✅ 导出 JSON 可被 OpenClaw 加载。
|
|
|
+3. ✅ 多人同时编辑时,后保存者遇到版本冲突则提示「配置已被他人更新,请刷新后重新编辑」并拦截保存。
|
|
|
+4. ✅ 从模板应用后基线内容正确合并。
|
|
|
+
|
|
|
+### 5.6 配置管理 — 一致性总览(DC-02b)
|
|
|
+
|
|
|
+**功能ID**:DC-02b
|
|
|
+**功能名称**:一致性总览
|
|
|
+
|
|
|
+**功能描述**:表格展示「实例 × 一致性状态」及差异项数;操作:查看差异、下发基线、从基线恢复、关联基线(未纳管);支持按状态/分组筛选;底部「全部下发」「仅下发待下发」「按分组下发」「按标签下发」。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望在一页看到所有实例与基线的一致性及差异项数,以便批量下发或恢复。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:表格列 实例、状态、差异项数、操作;状态列 ● + 已同步/已修改/待下发/下发失败/未纳管(色与 DNA 一致);操作列按状态显示查看差异、下发基线、从基线恢复、关联基线等。
|
|
|
+2. **业务规则**:状态与差异项数由「当前实例配置 vs 基线」计算(对各实例 **WS config.get** 与基线 diff);未纳管实例可关联基线后纳入管理。
|
|
|
+3. **交互规则**:查看差异 → 打开 diff 弹窗或跳转单实例配置页;下发基线/从基线恢复 → 可多选实例后执行;从基线恢复需二次确认。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- 实例列表与基线来自 {Name} 数据库;每个实例当前配置通过 **Gateway WebSocket** `config.get` 拉取;一致性由聚合层计算后返回。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **部分实例离线**:该实例状态可为「未纳管」或标记离线,不影响其他行操作。
|
|
|
+- **下发/恢复失败**:单实例失败时记录原因,可重试;整批失败时模态展示。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 状态与差异项数与实际「实例 config vs 基线」一致。
|
|
|
+2. ✅ 查看差异内容与单实例配置页 diff 一致。
|
|
|
+3. ✅ 下发与从基线恢复流程可用,结果与下发记录一致。
|
|
|
+4. ✅ 未纳管实例关联基线后纳入管理并出现在列表中。
|
|
|
+
|
|
|
+### 5.7 配置管理 — 下发任务(DC-02c)
|
|
|
+
|
|
|
+**功能ID**:DC-02c
|
|
|
+**功能名称**:下发任务
|
|
|
+
|
|
|
+**功能描述**:新建下发 → 步骤 1 选来源(基线/模板)→ 步骤 2 选目标实例(可全选、按分组)→ 步骤 3 预览每实例 diff → 步骤 4 确认下发并展示每实例结果(成功/失败+原因)。**操作人必填**并写入下发记录(总纲 §5.4)。**离线实例策略**:模式 A 立即失败;模式 B 自动重试最多 3 次;等待重试可查看与取消。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望通过四步向导将基线或模板下发给多台实例,并看到每台成功/失败结果,以便审计与重试。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:四步步骤条;每步内容区最大宽度约 720px;步骤 3 预览 diff 等宽字体,删除线+红表示旧值、下划线+绿表示新值;步骤 4 每实例一行 ✅/❌ 与重试按钮。
|
|
|
+2. **业务规则**:下发时对每个目标实例通过 **Gateway WebSocket** `config.set`/`config.apply` 写入配置并触发热重载。失败记录原因并支持单实例重试。**离线实例**:模式 A 则该实例立即失败并记录;模式 B 则进入重试队列,最多 3 次,等待重试状态可查看与取消。**操作人**:当前登录用户写入 deployment_task,与总纲 §5.4 审计一致。
|
|
|
+3. **交互规则**:每步可上一步/下一步;步骤 4 确认后异步或同步执行,展示每实例结果;重试仅针对失败实例。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- 来源:基线/模板来自 {Name} 数据库。目标实例列表来自 {Name} 数据库。执行:Infrastructure 层按实例建立 **Gateway WebSocket** 连接,调用 config.set/config.apply;结果写回 deployment_task、deployment_task_result。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **部分实例失败**:该实例行显示 ❌ 与原因,可点击重试;整任务不回滚已成功实例。
|
|
|
+- **全部失败**:步骤 4 展示全部 ❌,可全部重试或返回修改来源/目标。
|
|
|
+- **网络异常**:请求超时或断开按失败处理,记录原因。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 四步流程完整,步骤 3 预览 diff 与步骤 4 结果一致。
|
|
|
+2. ✅ 下发记录可查,且含操作人、时间、目标实例、每实例结果。
|
|
|
+3. ✅ 离线实例:模式 A 立即失败并记录;模式 B 进入重试队列,可查看与取消,最多重试 3 次。
|
|
|
+4. ✅ 单实例失败可重试,重试后结果更新。
|
|
|
+
|
|
|
+### 5.8 配置管理 — 下发记录(DC-02d)
|
|
|
+
|
|
|
+**功能ID**:DC-02d
|
|
|
+**功能名称**:下发记录
|
|
|
+
|
|
|
+**功能描述**:历史下发任务列表:时间、**操作人**、配置来源、目标实例、变更摘要、每实例结果;支持筛选与查看详情。与总纲 §5.4 审计日志一致。
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望查看历史下发记录及操作人,以便审计与排查问题。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:表格列 时间、操作人、配置来源、目标实例、变更摘要、每实例结果(可展开或详情页);支持按时间、操作人、来源筛选。
|
|
|
+2. **业务规则**:所有下发与基线恢复/同步操作写入 operation_log 或 deployment_task,**操作人必填**;保存期限与总纲 §5.4 一致(≥90 天)。
|
|
|
+3. **交互规则**:点击某条可查看详情(每实例成功/失败及原因)。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- deployment_task、deployment_task_result 及操作人来自 {Name} 数据库;只读展示。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **无记录**:空状态展示「暂无下发记录」类文案。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 记录完整可查,每条含操作人、时间、配置来源、目标实例、结果。
|
|
|
+2. ✅ 与下发任务执行结果一致;筛选与详情正确。
|
|
|
+
|
|
|
+### 5.9 单实例管理 — 配置管理(DC-03)
|
|
|
+
|
|
|
+**功能ID**:DC-03
|
|
|
+**功能名称**:单实例配置管理
|
|
|
+
|
|
|
+**功能描述**:单实例内「配置管理」页:顶部展示与基线差异 N 项及状态;按钮「查看差异」「从基线恢复」「同步到基线」;下方为 7 大分类表单;与基线不同的字段有「⚠ 差异」标记;支持保存、重置、与基线对比、导出 JSON。
|
|
|
+
|
|
|
+> **模型服务关联**:单实例配置中的「模型配置」节点支持从**模型服务模板库**([4.6](../6、模型服务/{Name}-模型管理-PRD-V1.md) MM-07)应用模板;Key 池中的 API Key 可在下发时注入实例配置(加密或引用方式)。详见 《4.6 §2.6.3》
|
|
|
+
|
|
|
+**用户故事**:作为运维人员,我希望在单实例配置页直接编辑并保存,或从基线恢复/同步到基线,以便单实例与基线一致或保留差异。
|
|
|
+
|
|
|
+**功能规则**:
|
|
|
+
|
|
|
+1. **显示规则**:顶部横幅「与基线差异 N 项」+ 三按钮;左侧配置分类(或 Tab);右侧 7 大分类表单;差异字段 ⚠ 标记;底部保存、重置、与基线对比、导出 JSON。
|
|
|
+2. **业务规则**:保存后通过该实例 **Gateway WebSocket** `config.set` 写回并触发热重载。从基线恢复(用基线覆盖当前实例)、同步到基线(用当前实例覆盖基线)需**二次确认**(与总纲 §2.4 危险操作一致)。
|
|
|
+3. **交互规则**:查看差异 → 打开 diff 视图;保存 → 提交当前表单,成功 Toast;恢复/同步 → 确认框 → 执行后刷新状态。
|
|
|
+
|
|
|
+**数据来源**:
|
|
|
+
|
|
|
+- 当前实例配置:**Gateway WebSocket** `config.get`。基线:{Name} 数据库。保存:**WS config.set** 写回该实例。
|
|
|
+
|
|
|
+**异常处理**:
|
|
|
+
|
|
|
+- **保存失败**:模态展示错误原因(如实例离线、网络超时),支持重试。
|
|
|
+- **从基线恢复/同步失败**:同上。
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+
|
|
|
+1. ✅ 差异 N 项与 diff 内容正确。
|
|
|
+2. ✅ 保存后实例配置更新且热重载生效。
|
|
|
+3. ✅ 从基线恢复后实例与基线一致;同步到基线后基线更新。
|
|
|
+4. ✅ 危险操作均有二次确认。
|
|
|
+
|
|
|
+### 5.10 单实例管理 — 其余子页(DC-03-01 ~ DC-03-13)
|
|
|
+
|
|
|
+单实例从「管理 →」进入后,除配置管理(§5.9)外另有 13 个子页;Tab 或左侧菜单:概览、对话测试、渠道、会话、Agent、技能、节点、用量、定时、配置、调试、上下文诊断、日志。以下各子页功能描述、主要操作、数据来源与验收要点;界面与交互遵循 [DNA 规范](../../9、{Name}-视觉与交互DNA规范.md) §4、§5。
|
|
|
+
|
|
|
+| 子页 | 功能ID | 功能描述 | 主要操作 | 数据来源 | 阶段 |
|
|
|
+| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
|
+| 实例概览 | DC-03-01 | 单实例 Overview:健康状态、会话数、消息量、资源使用 | 查看指标、刷新 | WS health、status | P0 |
|
|
|
+| 对话测试 | DC-03-0
|
|
|
+
|
|
|
+> (节选结束)
|