# 模块用户故事:stories.md > 模块:{module} > 当前真相:本文件维护模块完整故事集合;不创建 per-REQ/per-round 副本 > 关联原型:`docs/design/prototypes/{module}/index.html` + 当前 `*.html` > 关联场景:`scenario-model.json` / `cases.json` / `scenario-coverage.json` / `fixture-contract.json` ## 使用方式 本文件按模块维护完整、当前且唯一的真实用户故事集合,而不是需求增量或 历史版本集合。一个故事描述“谁在什么情境下,为何要完成什么目标”;它可 关联一条或多条 `PATH-*`,并必须引用 scenario branch / CASE。REQ 只写入 `source_refs`,不出现在文件名或所有权字段中。 ## 1. 故事目录 | 故事 ID | 用户角色 | 触发场景 | 用户目标 | CASE / PATH | source_refs | |:---|:---|:---|:---|:---|:---| | S-001 | {role} | {real-world trigger} | {goal} | CASE-001 / PATH-001 | REQ-{id}/FR-{id} | | S-002 | {role} | {rejection or recovery trigger} | {safe recovery goal} | CASE-002 / PATH-002 | REQ-{id}/FR-{id} | ## 2. 用户和场景 | 项 | 内容 | |:---|:---| | 故事 ID | S-{id} | | source_refs | REQ-{id}/FR-{id}, decision/state/rule refs | | 用户角色 | {role} | | 触发背景 | {why this user starts the flow} | | 业务目标 | {what success means} | | 前置条件 | {permissions, data, state} | | 覆盖分支 | BR-{id}-ALLOW, BR-{id}-REJECT | | 覆盖 CASE | CASE-{id} | ## 3. 功能设计背景 {为什么需要这个功能,当前业务问题是什么,页面或模块为什么这样组织。} ## 4. 页面跳转逻辑 | 起点 | 用户意图 | 动作 | 目标页面 / 状态 | 设计理由 | 原型区域 | |:---|:---|:---|:---|:---|:---| | {page/state} | {intent} | {action} | {page/state} | {why this transition exists} | {prototype section} | ## 5. 成功故事 {用自然语言描述用户从入口到完成目标的完整故事。} ## 6. 异常和边缘故事 | 场景 | 用户看到什么 | 系统如何恢复 | 覆盖条款 | |:---|:---|:---|:---| | {empty/error/permission/cancel/retry} | {visible state} | {recovery} | FR-{id} / NFR-{id} | ## 7. UI/UX 审查问题 | 问题 | 影响 | 决策 | 状态 | |:---|:---|:---|:---| | {navigation/layout/copy/accessibility concern} | {impact} | {decision or owner} | open / closed | > 状态为 `open` 且影响用户理解、页面跳转、权限、数据含义或错误恢复时,不得进入 S3 合同锁定。 ## 8. REQ 映射 | source_ref | 原型区域 | 用户价值 | 验收方式 | |:---|:---|:---|:---| | REQ-{id}/FR-{id} | {screen/section} | {value} | {evidence} | ## 9. 与原型和动线的一致性 | 检查项 | 结果 | 证据 | |:---|:---|:---| | 成功故事在当前 `*.html` 中可见 | pass / fail | {section/state} | | 异常和边缘故事在当前 `*.html` 中可见或明确 N/A | pass / fail | {section/state/N-A reason} | | 页面跳转均有 `F-NNN` / `PATH-*` 路径覆盖 | pass / fail | {PATH ids} | | required allow/reject branch coverage = 100% | pass / fail | {scenario-coverage.json} | | browser-required CASE 均绑定 module spec | pass / fail | `web/e2e/{module}/` | | 合同需要的字段、状态、错误、权限和副作用已标出 | pass / fail | {contract notes} |