oh-my-muse/design-docs/产品-02A-统一功能规格模板与产品接口约定.md
2026-05-22 23:18:03 +08:00

358 lines
20 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.

# 产品-02A统一功能规格模板与产品接口约定
- 版本v1
- 更新日期2026-05-22
- 目标读者:产品 / 交互 / 前端 / 后端 / 测试
- 阅读时间15-25 分钟
- 边界说明:本文件承接 `产品-01``产品-02`,定义 `产品-02B~02G` 的统一写法。它不直接列完所有功能,不写代码级 API、数据库字段或路由细节它规定每个功能规格必须写到什么粒度确保后续分册能支撑 UI 原型、接口设计、测试验收和后续旅程文档。
## 0. 前序继承
阶段 2.1 必须继承以下结论:
1. `产品-01` 已锁定 Muse 的产品定位、六个产品空间、用户主权、市场资产边界和长期知识闭环。
2. `产品-02` 是功能边界总纲,负责六个产品空间的职责、权限、交互边界和非谈判项。
3. `产品-02B~02G` 是详细功能规格,必须回答“有哪些页面、页面有什么内容、用户看到什么数据、可以做什么操作、需要什么产品接口”。
4. 本阶段仍属于产品需求层,不进入 `产品-03` 的旅程步骤、不进入 `流程-*` 的系统处理细节、不进入 `后端-*` 的代码级 API 或 Schema。
5. 后续详细规格必须能作为前端 UI 原型的直接输入,但不能为了画页面而破坏 `产品-02` 的权限、授权、Shadow/Canonical、stale guard 和市场资产不污染作品事实等边界。
## 1. 文档目标
`产品-02A` 解决一个问题:阶段 2 的详细功能规格不能各写各的。
后续每个空间分册必须使用同一套结构描述:
- 功能模块是什么。
- 页面是什么。
- 页面展示什么数据。
- 用户可以执行什么操作。
- 操作后进入什么状态。
- 失败、空态、禁用态如何呈现。
- 当前页面需要哪些产品接口。
- 这些产品接口的输入、输出、权限、状态和副作用是什么。
这里的“产品接口(Product Interface)”不是后端 endpoint也不是数据库表字段。它是产品层合同前端、后端、测试和后续架构文档都能基于它继续细化但不能反向改变产品语义。
## 2. 产品-02 系列文档组织
| 文档 | 文档性质 | 负责什么 | 不负责什么 |
|---|---|---|---|
| `产品-02` | 总纲 | 六个产品空间、边界、权限、统一交互规则、非谈判项 | 不展开所有页面和接口 |
| `产品-02A` | 规格模板 | 统一详细功能规格和产品接口写法 | 不替各空间列具体页面 |
| `产品-02B` | 管理员控制台规格 | 管理员页面、数据、操作、分权、审计、治理接口 | 不进入普通用户创作旅程 |
| `产品-02C` | 用户工作区与作品工作台规格 | 我的作品、写作台、规划、知识、导入导出、记录用量 | 不承载完整智能体/知识库/市场后台 |
| `产品-02D` | 智能体工作台规格 | 智能体创建、配置、安装、替换槽位、试用、发布 | 不允许用户接管系统保护节点 |
| `产品-02E` | 知识库工作台规格 | 全局/用户/账户可用/已安装知识库、处理状态、绑定、发布 | 不直接修改作品局域知识库事实 |
| `产品-02F` | 市场规格 | 资产发现、详情、授权、安装、绑定、发布、审核、下架 | 不承诺完整电商、支付、结算、DRM |
| `产品-02G` | 个人中心规格 | 账户、偏好、用量、权益、授权记录、发布记录总览 | 不替代各业务空间后台 |
阶段 2 必须先完成 `产品-02A`,再按 `02B -> 02C -> 02D -> 02E -> 02F -> 02G` 顺序补齐详细规格。不能跳过前序空间,也不能在后续分册里反向修改已确认总纲。
## 3. 功能规格统一模板
每个 `产品-02B~02G` 分册必须按以下结构编写。
### 3.1 功能模块总览
每个空间先列功能模块总表。
| 字段 | 写法要求 |
|---|---|
| 模块名称 | 使用产品语言,必要时附英文锚点 |
| 目标用户 | 管理员、普通用户或两者 |
| 模块目标 | 一句话说明用户为什么需要它 |
| 默认入口 | 从哪个导航、页面、对象或状态进入 |
| 核心对象 | 该模块围绕哪些产品对象工作 |
| 主要页面 | 列出本模块涉及页面 |
| 核心操作 | 列出用户能做的主动作 |
| 关键状态 | 列出影响展示和操作的状态 |
| 依赖接口 | 列出本模块需要的产品接口名称 |
| 边界 | 明确本模块不做什么 |
模块总览用于快速判断功能是否完整,不能只写概念描述。
### 3.2 页面清单
每个空间分册必须先给页面清单,再展开单页规格。
| 页面 ID | 页面名称 | 使用角色 | 页面目标 | 默认入口 | 主要操作 | 关键状态 |
|---|---|---|---|---|---|---|
| 示例:`work-list` | 我的作品 | 普通用户 | 找到并进入作品 | 登录后默认入口 | 新建、导入、打开、筛选 | 空列表、加载失败、待处理风险 |
页面 ID 是产品规格内的稳定标识,不等于前端路由名。后续前端可以基于它设计路由、组件和原型。
### 3.3 单页规格
每个页面必须使用以下模板。
| 项目 | 必填内容 |
|---|---|
| 页面目标 | 用户来到这个页面要完成什么 |
| 使用角色 | 哪些角色可见,是否需要管理员分权 |
| 入口来源 | 从哪些页面、对象、通知、跳转进入 |
| 返回规则 | 完成、取消、失败后回到哪里 |
| 页面区域 | 页面有哪些固定区域、列表、面板、抽屉、弹窗 |
| 可见数据 | 用户默认能看到哪些字段和摘要 |
| 主操作 | 页面上最重要的 1-3 个动作 |
| 次操作 | 搜索、筛选、排序、查看详情、复制、重试等 |
| 危险操作 | 删除、撤权、下架、封禁、召回、覆盖、批量确认 |
| 状态 | 正常、加载、空态、失败、无权限、部分可用、只读、过期 |
| 权限 | 谁能看、谁能操作、哪些字段脱敏或隐藏 |
| 产品接口 | 查询、命令、任务、授权、审计等接口 |
| 埋点与审计 | 哪些操作必须记录,普通用量和管理员审计如何区分 |
| 验收要点 | 用什么结果判断页面规格实现正确 |
单页规格必须能让前端据此画原型。不能只写“展示列表”“支持管理”这类不可执行描述。
### 3.4 页面区域规格
复杂页面必须拆页面区域。
| 区域 | 显示内容 | 用户操作 | 数据来源 | 状态与异常 |
|---|---|---|---|---|
| 顶部摘要 | 当前对象名称、状态、风险、最近更新时间 | 返回、刷新、进入设置 | 对象详情查询 | 无权限、对象不存在 |
| 主列表 | 卡片或表格数据 | 搜索、筛选、排序、分页、打开详情 | 列表查询 | 空态、加载失败 |
| 右侧决策区 | 候选、风险、来源、建议 | 接受、修改、丢弃、查看来源 | 候选详情查询 | 过期、撤权、阻断 |
区域规格用于避免页面只剩抽象功能名。凡是影响用户判断的区域,都必须说明显示什么和可以做什么。
### 3.5 操作规格
每个重要操作必须写成可验收的产品动作。
| 字段 | 写法要求 |
|---|---|
| 操作名称 | 使用用户可见动作词,如“确认”“丢弃”“绑定”“下架” |
| 操作入口 | 按钮、菜单、批量操作、详情页、弹窗、快捷动作 |
| 前置条件 | 角色、状态、授权、来源、版本、对象是否可用 |
| 操作确认 | 是否需要确认弹窗、风险说明、二次输入 |
| 操作结果 | 成功后改变什么状态或产生什么对象 |
| 副作用 | 是否触发任务、审计、通知、用量、授权快照、来源状态更新 |
| 失败反馈 | 用户看到什么原因,可以怎么处理 |
| 回滚或补偿 | 是否允许撤销、回退、重试、申诉 |
涉及正文、知识、授权、市场资产和管理员处置的操作,必须写清楚副作用,不能只写“保存成功”。
## 4. 产品接口约定
### 4.1 产品接口分类
后续分册中的接口按产品语义分类,不按技术形态分类。
| 接口类型 | 作用 | 示例 |
|---|---|---|
| 查询接口(Query) | 获取页面展示数据,不改变业务状态 | 查询作品列表、查询智能体详情、查询市场资产详情 |
| 命令接口(Command) | 用户发起一次状态改变 | 新建作品、保存规划项、安装智能体、下架资产 |
| 决策接口(Decision) | 用户对 Shadow、候选、知识草稿或风险项做取舍 | 原样接受、修改后合并、确认知识、忽略草稿 |
| 任务接口(Task) | 发起、查询、取消或重试异步处理 | 发起全书解析、查询资料处理状态、取消生成 |
| 授权接口(Authorization) | 获取、安装、绑定、解绑、撤权、检查许可 | 获取市场资产、绑定知识库、检查智能体可用性 |
| 来源接口(Source) | 展示来源、版本、授权快照和外发范围 | 查询候选来源摘要、查询授权快照 |
| 质量接口(Quality) | 展示质量评分、风险、创作健康度和建议 | 查询候选质量结果、查询一致性检查结果 |
| 用量接口(Usage) | 展示 Token、配额、待结算和已结算口径 | 查询作品用量、查询账户用量 |
| 审计接口(Audit) | 管理员或系统追踪治理操作 | 查询审计摘要、记录下架原因 |
| 选项接口(Option) | 获取下拉、筛选、可用动作、可替换槽位 | 查询可用智能体、查询可绑定知识库 |
产品接口命名建议使用“动词 + 对象 + 目的”的中文名,例如“查询作品列表”“绑定知识库到作品”“发起全书解析”。后端 API 命名可在后续 `后端-*` 中另行收敛。
### 4.2 产品接口规格模板
每个产品接口必须写清以下内容。
| 项目 | 必填内容 |
|---|---|
| 接口名称 | 产品层稳定名称 |
| 接口类型 | 查询 / 命令 / 决策 / 任务 / 授权 / 来源 / 质量 / 用量 / 审计 / 选项 |
| 使用页面 | 哪些页面或区域调用它 |
| 用户意图 | 用户为什么触发或需要它 |
| 输入上下文 | 账户、角色、作品、对象、筛选、分页、授权快照、来源版本等 |
| 返回内容 | 页面需要展示的数据,不写数据库字段 |
| 权限规则 | 谁能调用,哪些内容脱敏,哪些状态禁用 |
| 状态变化 | 如果会改变状态,说明从什么状态到什么状态 |
| 副作用 | 是否写 Shadow、Canonical、Archive、任务、审计、用量或授权快照 |
| 失败类型 | 无权限、对象不存在、版本过期、授权失效、任务失败、合规阻断等 |
| 用户反馈 | 失败或部分成功时页面怎么提示 |
| 审计要求 | 是否记录操作者、理由、范围、时间、前后状态 |
| 后续承接 | 需要由 `产品-03``流程-*``架构-*``后端-*` 承接的内容 |
### 4.3 产品接口示例
以下示例只定义产品层合同,不代表最终后端 API。
#### 示例 1查询我的作品列表
| 项目 | 内容 |
|---|---|
| 接口名称 | 查询我的作品列表 |
| 接口类型 | 查询接口(Query) |
| 使用页面 | 我的作品 |
| 用户意图 | 用户登录后找到要继续写作的作品 |
| 输入上下文 | 当前账户、筛选条件、排序、分页 |
| 返回内容 | 作品卡片、最近编辑时间、字数、章节数、状态、待确认知识数量、最近失败任务摘要 |
| 权限规则 | 只返回当前用户拥有或有权访问的作品 |
| 状态变化 | 无 |
| 副作用 | 无;不能因查询触发知识入库或生成 |
| 失败类型 | 登录失效、加载失败、无权限 |
| 用户反馈 | 提示重试、重新登录或显示空态引导 |
| 审计要求 | 普通查询不进入管理员审计;异常访问需进入安全日志 |
#### 示例 2原样接受 AI 候选
| 项目 | 内容 |
|---|---|
| 接口名称 | 原样接受 AI 候选 |
| 接口类型 | 决策接口(Decision) |
| 使用页面 | 写作台候选决策区 |
| 用户意图 | 用户确认候选文本可以进入正文 |
| 输入上下文 | 当前账户、作品、章节、文本块、候选、来源快照、授权快照 |
| 返回内容 | 合并后的正文状态、版本记录、候选归档状态、知识变更状态 |
| 权限规则 | 用户必须有当前作品编辑权限;候选未过期且未撤权 |
| 状态变化 | AI 候选从 Shadow 进入 Archive 的已接受记录;正文进入 Canonical 和版本历史 |
| 副作用 | 可异步产生知识草稿;知识草稿仍需用户确认,不能自动进入局域知识库 |
| 失败类型 | 候选过期、授权失效、文本块冲突、合规阻断 |
| 用户反馈 | 提示重新生成、刷新正文、查看来源或手动复制 |
| 审计要求 | 记录用户决策、候选版本、来源摘要、正文版本 |
#### 示例 3绑定知识库到作品
| 项目 | 内容 |
|---|---|
| 接口名称 | 绑定知识库到作品 |
| 接口类型 | 授权接口(Authorization) |
| 使用页面 | 作品工作台的知识来源、知识库工作台的绑定入口、市场资产详情 |
| 用户意图 | 用户希望某个知识库成为当前作品的检索或生成来源 |
| 输入上下文 | 当前账户、作品、知识库、授权快照、用途范围、是否允许进入模型上下文 |
| 返回内容 | 绑定状态、可用范围、版本、冲突策略、是否可关闭或降权 |
| 权限规则 | 用户必须拥有作品权限和知识库使用许可 |
| 状态变化 | 知识库从账户可用或已安装状态进入作品绑定状态 |
| 副作用 | 后续生成可引用该来源;不能写入局域知识库,不能覆盖作品事实 |
| 失败类型 | 授权失效、知识库下架、处理状态不可用、用途不允许生成 |
| 用户反馈 | 显示不可绑定原因、替代来源或稍后重试 |
| 审计要求 | 记录绑定操作者、作品、知识库版本、授权快照和用途 |
## 5. UI 原型生成要求
`产品-02B~02G` 必须写到可以生成低保真 UI 原型的程度。每个页面至少要能回答:
1. 页面标题是什么。
2. 用户从哪里进入。
3. 页面默认第一屏显示什么。
4. 有哪些主要区域。
5. 每个区域展示哪些数据。
6. 主按钮和危险按钮是什么。
7. 哪些操作是折叠、弹窗、抽屉或详情页。
8. 空态、失败态、无权限态、只读态、过期态怎么表现。
9. 哪些状态下按钮不可用。
10. 点击主操作后页面如何反馈。
页面规格不要求定义视觉风格、组件库、颜色、间距和具体路由。这些由后续前端文档或 UI 原型阶段承接。
如果当前阶段同步产出 HTML 原型HTML 原型不能只是规格摘要或页面清单浏览器,必须至少满足以下验收合同:
1. 默认视图必须符合目标用户主路径,不能把默认隐藏、折叠或后续阶段能力做成第一屏主入口。
2. 每个核心页面至少展示正常态、空态、失败态、无权限态、只读态、提交中、过期/撤权/来源失效态中的相关状态。
3. 高危操作必须展示确认、影响预览、成功反馈和失败恢复;不能只放一个危险按钮。
4. 被 PRD 禁止的动作在原型中必须禁用或隐藏,并显示可行动原因。
5. 普通用户界面不得直接暴露 `handoff session``precheckId``publishCheckId``Tool Grant``TestRunOutput` 等技术合同名;这些只能进入调试详情、管理员审计或 PRD 接口说明,用户界面需转成产品语言。
6. 原型不得恢复已删除、暂缓或后续阶段承接的功能入口。
7. 响应式、键盘焦点、按钮尺寸、文本溢出和禁用态必须足以让前端判断布局约束。
## 6. 状态、权限和异常写法
### 6.1 状态必须贴近用户决策
状态不能只写系统状态码。普通用户页面必须用用户能理解的状态,例如:
- 资料处理中。
- 可以用于生成。
- 来源已变化。
- 授权已失效。
- 待确认知识。
- 候选已过期。
- 需要重新生成。
- 已下架,不能继续用于生成。
管理员页面可以显示更精确的任务、审计和治理状态,但也必须给出可行动解释。
### 6.2 权限必须区分可见、可操作和可导出
每个页面和接口都要区分:
- 能否看到入口。
- 能否看到列表项。
- 能否看到详情。
- 能否看到正文级或内容级字段。
- 能否执行操作。
- 能否导出。
- 能否发布到市场。
- 能否进入模型上下文。
不能只写“有权限 / 无权限”。
### 6.3 异常必须给用户下一步
异常反馈必须包含:
- 发生了什么。
- 当前事实是否已经改变。
- 用户可以怎么处理。
- 是否需要联系管理员或等待系统处理。
例如生成失败时必须说明“当前正文未改变”;撤权失败时必须说明“该来源不能继续用于生成”;知识草稿过期时必须说明“需要重新提取或手动处理”。
## 7. 跨空间跳转写法
跨空间动作必须写清楚跳转合同:
| 字段 | 说明 |
|---|---|
| 来源空间 | 从哪个空间、页面、对象出发 |
| 目标空间 | 去哪个空间完成什么 |
| 携带上下文 | 账户、作品、资产、授权、返回点 |
| 完成后返回 | 成功后回到哪里,页面如何刷新 |
| 失败后回退 | 权限不足、取消、对象不可用时回到哪里 |
| 不能做什么 | 不能在当前空间展开完整后台,不能自动作用到作品 |
示例:从写作台选择市场知识库,只能跳到市场或知识库工作台完成获取、安装或绑定;完成后回到当前作品的知识来源区域。没有完成绑定前,市场知识库不能进入当前作品生成上下文。
## 8. 后续分册的最低交付标准
每个 `产品-02B~02G` 分册完成时,必须满足:
1. 有模块总览。
2. 有页面清单。
3. 每个核心页面有单页规格。
4. 每个核心操作有操作规格。
5. 每个页面列出需要的产品接口。
6. 产品接口按本文件模板写清输入上下文、返回内容、权限、状态变化、副作用和失败反馈。
7. 明确空态、失败态、无权限态、只读态、过期态。
8. 明确跨空间跳转和返回规则。
9. 不引入 `产品-02` 已禁止的越权能力。
10. 能被前端用于低保真 UI 原型生成;如同步产出 HTML 原型,必须满足第 5 节的 HTML 原型验收合同。
如果某个空间分册只列概念、不列页面和接口,则不能视为阶段 2 完成。
## 9. 非谈判项
- 详细功能规格不能反向修改 `产品-01``产品-02` 已确认边界。
- 页面规格不能只写“管理、配置、查看、处理”,必须写清楚用户看到什么和能做什么。
- 产品接口不能直接退化成后端 endpoint 列表,也不能只写“调用后端接口”。
- 查询接口不能产生业务副作用。
- 命令、决策、授权和任务接口必须写清状态变化、副作用、失败反馈和审计要求。
- 涉及正文、作品知识、规划正式项、市场资产、管理员处置的操作,必须说明是否影响 Shadow、Canonical、Archive。
- 涉及市场资产、全局知识、用户知识库、用户智能体的功能,必须说明授权快照、来源版本和撤权/下架后的影响。
- 涉及模型调用或外部上下文的功能,必须说明最小必要、来源可解释、是否可关闭和是否保存全文快照。
- 用户工作区必须保留 no-config 主路径,详细页面不能把智能体、知识库或市场配置变成写作前置条件。
## 10. 后续写作顺序
下一步按以下顺序完善:
1. `产品-02B-管理员控制台功能规格.md`
2. `产品-02C-用户工作区与作品工作台功能规格.md`
3. `产品-02D-智能体工作台功能规格.md`
4. `产品-02E-知识库工作台功能规格.md`
5. `产品-02F-市场功能规格.md`
6. `产品-02G-个人中心功能规格.md`
每完成一个分册,都要回到本文件检查模板覆盖,再进入下一个分册。