← 交付目录查看原型

1.3 · CR-20260824-004

原型需求说明层 产品 PRD

状态:原型准备就绪
产品 PRD 版本:1.3
当前变更:CR-20260824-004
交付包:prd-package.json

本 PRD 的页面结构、交互方式、组件行为、权限控制与状态定义,均遵循《UI 交互规范主文件》;未单独说明者,默认按该规范执行。

0. 初始化动作与输出策略

项目内容
用户选择方案 B:正式需求随版本发布,评审意见服务端保存
交互约束标注工具不得默认遮挡或抢占业务原型操作;默认进入纯净操作态,用户主动查看标注后才显示说明层。
产品方向在可分享的原型交付地址中提供页面标注和非页面逻辑 HTML 文档
输出节奏分段高保真;用户已于 2026-08-24 明确“开始搭建”
当前阶段Phase 4:已确认决策进入实施
下一步进入条件PRD 准备度通过后实施原型与服务端

1. 背景与目标

1.1 业务场景

维度内容
当前业务场景产品通过 PRD 和可交互原型向开发、测试交付需求。
触发问题PRD 文字量大,开发难以快速识别页面改动点;只看原型又容易遗漏规则、字段、异常和权限。
现有处理方式PRD Markdown、前端契约、原型分开阅读;本地 annotate.js 只保存个人走查反馈。
当前痛点需求与页面缺少直观双向定位;本地标注无法随分享链接展示;非页面逻辑没有统一阅读入口。
不做的代价开发漏实现、测试漏验收、不同设备看到不同信息、需求版本难以追溯。
受影响对象产品负责人、开发人员、测试人员、原型交付生成器、Cloudflare 评审服务。
已知约束Markdown 保持权威;正式业务原型不得混入调试控件;不批量迁移历史原型;未授权不得发布。

1.2 假设前提

假设 ID假设内容影响范围风险等级验证方式当前状态
A-001线上正式阅读权限沿用原型分享地址的访问范围。权限、发布中发布前由用户确认是否增加 Cloudflare Access待确认
A-002评论与回复仅允许钉钉扫码识别的本企业员工;页面不要求使用者额外输入凭证。权限、审计高OAuth 回调返回 corpId 与目标企业一致,用户身份由服务端接口回读已确认;已复用小汪智能助理并完成真实企业员工扫码与写入,非本企业账号拒绝待专项验收
A-003未来原型可为所有已确认功能提供稳定 data-requirement-id。原型、门禁低自动扫描原型 DOM/源码已有项目基线支持

1.3 目标与成功标准

类型指标 / 目标口径当前基线目标值验收方式
业务目标已确认页面需求可直接定位已确认且需页面实现的功能 ID 中存在可定位锚点的比例尚无统一统计100%交付一致性检查
用户目标分享后所有设备看到相同标注同一 URL、同一版本的标注数量与内容一致本地标注不可共享100% 一致清缓存、无痕窗口、第二浏览器验证
北极星指标未映射已确认功能数已确认、状态为“实现”的功能 ID 未出现在标注或逻辑文档的数量无门禁0自动门禁
数据目标共享数据不依赖本地存储正式标注及评审意见读取是否依赖 localStorage/sessionStorage当前本地标注依赖 localStorage0 项依赖静态检查与浏览器验证

2. 用户与场景

2.1 目标用户

角色主要任务使用频率数据范围权限边界备注
产品负责人编排正式需求标注、确认评审意见、发布版本中频当前项目全部需求可维护权威 PRD;发布需单独授权正式内容作者
开发人员查看页面改动、规则、字段和待确认项;提交评审意见高频被分享项目默认可读;写入需评审权限主要阅读者
测试人员从标注跳转到验收规则和异常分支高频被分享项目默认可读;写入需评审权限主要验收者
只读评审者查看原型和逻辑文档低频被分享项目未登录或非本企业员工不可评论、回复外部协作者

2.2 用户故事 / JTBD

用户故事 ID作为我希望以便优先级验收方式
US-001开发人员在原型上直接看到本次需求标注快速理解要改哪里P0点击标注双向定位
US-002开发人员在同一地址查看非页面逻辑 HTML不遗漏状态、接口、权限和异常P0切换逻辑文档页签
US-003产品负责人分享后所有人看到相同版本避免本地数据造成信息差P0跨浏览器一致性测试
US-004评审人员在线提交并跟踪意见让意见跨设备保存且可审计P0D1 写入与回读测试
US-005测试人员从功能 ID 回溯 PRD 和验收条款验证实现没有静默删减P0来源链接与门禁测试

2.3 典型场景

场景 ID场景名称前置条件触发动作当前痛点理想结果
S-001开发阅读本次改动已获得交付地址打开原型与标注需在长 PRD 中搜索首屏看到变更 ID、标注数量和页面位置
S-002查看跨页面逻辑规则无单一页面锚点切换逻辑文档原型无法表达HTML 目录定位对应 PRD 章节
S-003提交评审意见用户具备写权限在标注卡片或页面级入口提交本地意见无法共享服务端保存并在其他设备回读
S-004原型版本升级新版本已生成打开新版本旧意见可能串入默认只显示当前版本意见,旧意见可追溯但不混入

3. 产品方案

3.1 核心价值主张

对象价值主张为什么重要不这么做的影响
开发与测试页面改动可定位,非页面逻辑同地址可读减少遗漏和跨文档搜索实现和验收只覆盖可见 UI
产品负责人正式需求、评审意见和版本边界清晰防止评论直接污染已确认规格同一条反馈被误当成正式需求
交付系统自动检查功能 ID、锚点和版本把完整性从人工记忆变成门禁仍依赖口头提醒和人工抽查

3.2 MVP 范围

范围项本期是否包含优先级纳入 / 排除理由依赖备注
可分享的原型与标注页签是P0核心问题交付生成器、稳定锚点正式标注只读
逻辑文档 HTML 页签是P0承载非页面逻辑现有 Markdown 渲染保留目录和来源
服务端评审意见是P0消除本地保存Worker + D1版本绑定
版本与锚点门禁是P0防止错误交付delivery check失败即阻止交付
历史原型批量迁移否P2用户明确排除无未来改动时增量接入
在线编辑正式 PRD否P2避免双重权威源无继续修改 Markdown
实时多人光标和富文本协同否P3超出解决问题所需无不建设通用文档平台

3.3 成功指标

KPI ID指标名称指标定义计算口径数据来源目标值观察周期
KPI-001页面需求锚点覆盖率有稳定锚点的已确认页面功能占比锚点功能数 / 页面实现功能数前端契约与标注清单100%每次交付
KPI-002共享一致率跨设备读取相同版本内容一致的测试通过率通过场景 / 总场景浏览器验收100%每次交付
KPI-003版本串场数当前版本默认视图出现其他版本意见的数量不匹配记录数API 回读0每次交付
KPI-004未归属评审意见数缺少原型 ID 或版本的意见数量非法记录数D1 约束与接口校验0持续

3.4 核心流程

flowchart LR
  A["产品 PRD 与前端契约"] --> B["生成正式标注索引"]
  B --> C{"版本与锚点检查"}
  C -- "通过" --> D["生成原型标注与逻辑文档 HTML"]
  C -- "失败" --> E["停止交付并返回缺失项"]
  D --> F["开发与测试打开共享地址"]
  F --> G["在线提交评审意见"]
  G --> H["Worker 鉴权与校验"]
  H --> I["D1 保存意见与审计事件"]
  I --> J["产品确认后同步 PRD 并发布新版本"]

4. 功能范围

4.1 本期范围

范围 ID功能 / 能力业务价值覆盖用户优先级验收结果
R-001共享交付外壳一个地址阅读原型、标注和逻辑文档全部角色P0页签真实切换
R-002正式标注与稳定锚点把功能 ID 定位到页面区域开发、测试P0双向定位、分类筛选
R-003HTML 逻辑文档承载非页面规则开发、测试P0目录与来源链接
R-004服务端评审意见跨设备保存和追踪产品、开发、测试P0创建、回读、解决、重开
R-005一致性与权限门禁防止版本串场和越权写入产品、系统P0自动测试和错误反馈

4.2 非本期范围

排除 ID不做内容排除原因是否后续候选若误做的风险
OOS-001历史原型批量补标用户明确只覆盖未来否大量无当前价值迁移
OOS-002浏览器内修改正式需求PRD 必须保持权威源否形成双重事实源
OOS-003评论附件和图片上传MVP 先验证文本闭环是引入对象存储和敏感文件风险
OOS-004实时多人编辑非必要是复杂状态同步和冲突处理
OOS-005未经授权的线上发布外部影响需单独授权否暴露内部需求或产生费用

5. 功能设计与业务规则

5.1 正式需求标注与共享阅读

5.1.1 功能定义

优先级角色功能点触发条件前置条件业务结果
P0开发、测试、产品F-001 共享交付外壳打开未来原型的交付地址模块存在交付清单显示原型与标注、逻辑文档两个页签;默认以纯净操作态展示原型
P0开发、测试F-002 正式标注双向定位打开原型与标注页签标注清单和稳定锚点通过检查标注点、说明卡片、分类筛选互相联动

5.1.1.1 外部 API 对接与字段映射

业务功能API 名称与文档地址已核验生产地址 / 方法平台入参(类型 / 来源)返参字段与本地记录回读 / 错误 / 未核验门禁
正式标注读取本次不涉及外部 API静态同源 annotations.json / GET原型 ID、版本由交付清单生成标注数组,不写浏览器存储文件缺失、版本不一致或结构非法时显示错误并停止交付

5.1.2 字段取值逻辑

字段名称类型必填默认值取值逻辑枚举值校验规则空值 / 异常显示
标注 IDstring是无模块内唯一ANN-数字不可重复缺失阻止交付
功能 IDstring是无对应前端契约覆盖矩阵F-数字或业务前缀必须存在于覆盖矩阵缺失阻止交付
锚点 IDstring条件必填无页面需求使用 data-requirement-id功能 ID当前原型必须可匹配非页面逻辑明确进入文档
分类enum是page标注主阅读维度page、interaction、rule、field、pending只允许枚举值非法阻止生成
状态enum是confirmed正式性状态confirmed、pending、superseded待确认不得显示为已确认未知状态显示异常
来源引用string是无指向生成 HTML 的章节锚点URL fragment必须同源且可解析不可定位时标记来源异常

5.1.3 交互说明

场景Ant Design / ProComponents 组件触发动作前端交互后端逻辑错误处理
切换阅读面Tabs点击页签保留当前原型滚动和已选标注不涉及文档加载失败使用 Result 并允许重试
进入标注阅读Button、Badge、Tag、Drawer、Collapse点击“查看标注”宽屏以不覆盖画布的并列面板显示标注;窄屏按需打开 Drawer不涉及锚点不存在显示“该需求未找到页面位置”
查看标注Badge、Tag、Collapse点击数字点或卡片高亮外壳中的目标区域、滚动定位、展开详情;高亮层不接收业务点击不涉及锚点不存在显示“该需求未找到页面位置”
分类筛选Tabs、Badge点击分类仅过滤说明层,不修改业务原型不涉及无结果显示 Empty 并保留清空筛选入口
操作原型 / 关闭标注Button点击同时隐藏点位、目标高亮和说明面板,恢复完整画布;业务原型状态不重置不涉及覆盖层必须 pointer-events:none,不得残留透明拦截区

5.1.4 功能阐述

路径类型步骤用户动作系统行为用户感知结果
正向1打开共享地址加载版本、标注和原型,标注层保持关闭首屏是完整可操作原型可先完成业务交互
正向2点击“查看标注”后选择卡片或数字点定位对应功能锚点并闪烁提示原型位置与说明同时高亮完成双向定位
异常1打开缺少标注文件的地址拒绝伪造空列表Result 显示文件缺失和重试入口交付不可误判为“无需求”
边界1多个标注落在同一区域聚合数量并在点击后展开页面不被大量气泡遮挡可逐条阅读

5.1.5 逆向流程搭建

逆向场景触发角色触发条件数据影响状态回退 / 修正规则限制条件审计要求
标注废弃产品负责人对应需求被新版本替代旧标注保留在历史版本新版本状态设为 superseded,不删除旧版本证据不允许浏览器直接修改正式清单由 Git 和变更日志审计

5.1.6 功能权限清单

角色页面权限按钮权限字段权限数据范围审批 / 二次确认无权反馈
所有被分享用户可见可切换、筛选、定位正式标注只读当前分享项目与版本否不展示正式内容编辑入口
产品负责人可见同上;正式内容通过仓库流程维护浏览器只读当前项目全部版本发布需二次确认提示“请在权威 PRD 中修改并重新生成”

5.1.7 上线前历史数据处理方案

数据对象数据来源是否迁移迁移 / 清洗规则默认值策略历史状态处理回滚方案验证方式
历史原型标注localStorage、旧截图否用户已确认不批量迁移无历史原型保持原状删除新模块即可回退检查历史原型文件未改

5.2 逻辑文档与来源回溯

5.2.1 功能定义

优先级角色功能点触发条件前置条件业务结果
P0开发、测试、产品F-003 非页面逻辑 HTML 阅读切换逻辑文档页签PRD Markdown 已生成 HTML状态机、接口、权限、历史数据可在同一地址阅读

5.2.1.1 外部 API 对接与字段映射

业务功能API 名称与文档地址已核验生产地址 / 方法平台入参(类型 / 来源)返参字段与本地记录回读 / 错误 / 未核验门禁
文档读取本次不涉及外部 API同源生成 HTML / GET文档 ID 与章节锚点HTML 阅读视图源 Markdown 变化但 HTML 未刷新时一致性检查失败

5.2.2 字段取值逻辑

字段名称类型必填默认值取值逻辑枚举值校验规则空值 / 异常显示
文档 IDenum是prd来自交付清单prd、frontend-contract、build-notes、delivery-summary目标文件必须存在缺失显示 Result
章节锚点string否文档顶部由 Markdown 标题生成本次不涉及页面内唯一无锚点时打开文档顶部

5.2.3 交互说明

场景Ant Design / ProComponents 组件触发动作前端交互后端逻辑错误处理
切换文档Tabs、Menu点击保留左侧目录和当前章节不涉及404 显示“文档尚未生成”
从标注查看来源Button、Tooltip点击“查看完整文档”切换逻辑文档并定位章节不涉及锚点失效时打开文档顶部并警告

5.2.4 功能阐述

路径类型步骤用户动作系统行为用户感知结果
正向1点击逻辑文档加载 PRD HTML 和目录同一交付外壳内阅读不离开项目上下文
异常1打开过期生成文件一致性门禁在交付前发现不产生错误线上交付返回源文件需刷新

5.2.5 逆向流程搭建

逆向场景触发角色触发条件数据影响状态回退 / 修正规则限制条件审计要求
文档版本回退产品负责人新版本需要回退回退 PRD 与交付清单后重新生成不手改生成 HTML需遵循 Git 回滚和发布授权Git 与变更日志记录

5.2.6 功能权限清单

角色页面权限按钮权限字段权限数据范围审批 / 二次确认无权反馈
被分享用户可见可切换和定位全部只读当前项目否无编辑入口

5.2.7 上线前历史数据处理方案

数据对象数据来源是否迁移迁移 / 清洗规则默认值策略历史状态处理回滚方案验证方式
既有交付 HTML现有 delivery 目录否保持兼容;没有标注清单的模块继续原交付首页原交付模式不主动改变旧链接可关闭新清单字段回归现有交付测试

5.3 在线评审意见与服务端保存

5.3.1 功能定义

优先级角色功能点触发条件前置条件业务结果
P0本企业员工F-004 创建、查看、回复评审意见在当前版本提交文本钉钉扫码登录成功且服务端确认所属企业意见保存到 D1 并可跨设备回读
P0产品负责人 / 发布者回复、解决或重开意见意见状态需要变化服务端发布会话有效,携带当前 revision无需重复扫码,但每次操作仍可审计地归属到发布者

5.3.1.1 外部 API 对接与字段映射

业务功能API 名称与文档地址已核验生产地址 / 方法平台入参(类型 / 来源)返参字段与本地记录回读 / 错误 / 未核验门禁
查询意见Cloudflare D1 Worker Binding API待部署地址 / GET /api/reviewsprototypeId、prototypeVersion、annotationId 可选items、count;浏览器不持久化副本API 未配置时显示“在线评审尚未启用”,不伪造成功
钉钉登录授权获取登录用户的访问凭证GET https://login.dingtalk.com/oauth2/authredirect_uri、client_id、scope=openid corpid、签名 state;桌面端由钉钉页面展示二维码回调 authCode、原样返回 state回调域名必须与应用安全设置一致;state 无效、过期或来源不合法时拒绝
换取用户 token获取用户 tokenPOST https://api.dingtalk.com/v1.0/oauth2/userAccessTokenAppKey、AppSecret、authCode、grantType=authorization_codeaccessToken、refreshToken、expireIn、corpIdcorpId 必须等于服务端 DINGTALK_CORP_ID,否则 403;密钥只存 Worker Secret
回读员工身份获取用户通讯录个人信息GET https://api.dingtalk.com/v1.0/contact/users/meHeader 携带个人 accessToken;应用需 Contact.User.Readnick、openId、unionId、avatarUrl作者只取服务端响应;缺权限或用户不存在时拒绝创建会话
创建 / 回复意见D1 prepared statementshttps://prototype-review-worker.wanggeng826.workers.dev / POST /api/reviews、POST /api/reviews/:id/replies版本、标注 ID、内容;作者仅取服务端会话comment / reply、revision401 未登录;403 非本企业员工;422 字段错误
更新状态D1 batchhttps://prototype-review-worker.wanggeng826.workers.dev / PATCH /api/reviews/:idstatus、revision;actor 取服务端会话更新后的 commentrevision 冲突返回 409,客户端刷新后重试

5.3.2 字段取值逻辑

字段名称类型必填默认值取值逻辑枚举值校验规则空值 / 异常显示
意见 IDstring是服务端生成 UUIDcrypto.randomUUID()本次不涉及唯一缺失视为服务端错误
原型 IDstring是无当前交付清单小写字母、数字、连字符1–80 字符非法返回 422
原型版本string是无当前交付清单语义版本或构建版本1–40 字符非法返回 422
标注 IDstring否null绑定卡片时写入ANN-数字当前清单存在时才接受空值表示页面级意见
分类enum是interaction用户选择page、interaction、rule、field、pending只允许枚举非法返回 422
内容string是无用户输入本次不涉及去首尾空格,1–2000 字符空值禁止提交
作者身份object是无服务端从钉钉员工会话或发布会话解析employee、publisher客户端不可上传或覆盖作者姓名 / ID会话无效返回 401/403
状态enum是open服务端状态机open、resolved只允许 open↔resolved未知值返回 422
revisionint是1每次状态更新加 1正整数必须匹配当前值冲突返回 409
员工会话短期 bearer + HttpOnly cookie 兼容回退是无OAuth 成功后服务端生成随机令牌,仅在 D1 保存哈希;令牌通过 URL fragment 一次性交付并立即移入页面内存employee不使用 localStorage/sessionStorage;兼容跨站 Cookie 被拦截的移动浏览器;短期有效、可撤销刷新后重新扫码;过期返回 401,不在浏览器存储评审正文
发布者会话短期 bearer + HttpOnly cookie 兼容回退条件必填无可信发布流程生成短期一次性签名声明,Worker 验签后换取页面内存会话publisher绑定 prototypeId、prototypeVersion、发布者与有效期;nonce 只能使用一次无法证明真实发布链路时不得授予发布者权限

5.3.3 交互说明

场景Ant Design / ProComponents 组件触发动作前端交互后端逻辑错误处理
加载意见Skeleton、Spin、Alert打开面板正式标注先显示,意见异步加载按原型 ID+版本查询失败不影响正式标注,Alert 支持重试
提交意见 / 回复Drawer、Form、Input.TextArea、Button、Message点击评论或回复未登录时引导钉钉扫码;已登录时直接校验并提交从服务端会话取作者、校验 corpId、写 comment/reply 与审计事件401 引导登录;403 明确非本企业成员;网络错误不伪造成功
解决意见Popconfirm、Tag、Message点击解决二次确认后提交 revisionbatch 原子更新状态与事件409 提示内容已变化并刷新
重开意见Button、Message点击重开状态恢复 open同上同上

5.3.4 功能阐述

路径类型步骤用户动作系统行为用户感知结果
正向1提交有效意见API 校验后写入 D1Message“评审意见已保存”其他设备可回读
异常1无写权限提交返回 401,不写数据Message“没有评审意见写入权限”输入仍在当前表单内
异常2revision 已过期返回 409Notification 提示刷新后重试不覆盖他人状态
边界1API 不可用正式标注与文档正常展示Alert“在线评审暂不可用”核心阅读不被阻断

5.3.5 逆向流程搭建

逆向场景触发角色触发条件数据影响状态回退 / 修正规则限制条件审计要求
重开意见有写权限用户已解决意见仍需跟进status 变 open,revision +1不删除原解决事件必须携带当前 revision写 reopen 事件
撤销误提交产品负责人内容错误或敏感MVP 不物理删除,新增纠正意见并解决旧意见保留原始证据物理删除不在本期全部事件保留

5.3.6 功能权限清单

角色页面权限按钮权限字段权限数据范围审批 / 二次确认无权反馈
只读用户可见意见新增、解决、重开隐藏或禁用只读当前项目版本否提示需写权限
本企业员工可见可新增、回复可编辑新意见,不可改历史正文当前项目版本首次需钉钉扫码非本企业成员返回 403
产品负责人 / 发布者可见可回复、解决、重开正式性仍需回写 PRD发布会话绑定的项目版本由可信发布流程的一次性签名链接换取会话;不要求扫码,发布仍需单独授权链接过期、转发后已使用或会话失效时要求重新生成

5.3.7 上线前历史数据处理方案

数据对象数据来源是否迁移迁移 / 清洗规则默认值策略历史状态处理回滚方案验证方式
既有 localStorage 走查反馈浏览器本地否不自动上传,避免将个人草稿误当共享需求无保持原工具独立不影响现有工具清空浏览器后共享数据仍存在

5.4 版本一致性与交付门禁

5.4.1 功能定义

优先级角色功能点触发条件前置条件业务结果
P0产品、交付系统F-005 版本与锚点检查刷新或检查交付PRD 包、标注清单和原型存在不一致时停止交付并列出错误
P0全部角色F-006 状态与权限反馈加载、无数据、异常或无权进入对应状态用户明确知道原因和下一步

5.4.1.1 外部 API 对接与字段映射

业务功能API 名称与文档地址已核验生产地址 / 方法平台入参(类型 / 来源)返参字段与本地记录回读 / 错误 / 未核验门禁
一致性检查本次不涉及外部 API本地脚本PRD 版本、变更 ID、功能 ID、锚点、指纹通过或错误清单任一 P0 错误阻止交付

5.4.2 字段取值逻辑

字段名称类型必填默认值取值逻辑枚举值校验规则空值 / 异常显示
原型版本string是无PRD 包版本与标注清单相同本次不涉及完全一致不一致阻止交付
变更 IDstring是无PRD 包 lastChangeIdCR-YYYYMMDD-NNN清单最新记录相同不一致阻止交付
API 基础地址string条件必填空启用在线评审时配置HTTPS URL生产必须 HTTPS空值显示未启用,不伪造可用

5.4.3 交互说明

场景Ant Design / ProComponents 组件触发动作前端交互后端逻辑错误处理
初次加载Skeleton、Spin打开保持布局稳定并行加载静态标注和在线意见任何单项失败分区反馈
无标注Empty、Alert筛选或清单为空区分“筛选无结果”和“未配置”不涉及未配置视为交付异常,不显示普通空态
无权限Result、Tooltip写操作隐藏或禁用并解释API 返回 401/403不反复弹窗
部分可用Alert、NotificationAPI 失败正式内容照常可读记录结构化错误日志提供重试,不把意见写入本地兜底

5.4.4 功能阐述

路径类型步骤用户动作系统行为用户感知结果
正向1刷新交付校验全部来源和锚点返回通过清单允许本地交付
异常1功能 ID 无锚点输出明确缺失 ID交付命令失败不产生错误分享地址
边界1模块无标注清单使用旧交付模式历史模块不受影响保持向后兼容

5.4.5 逆向流程搭建

逆向场景触发角色触发条件数据影响状态回退 / 修正规则限制条件审计要求
关闭增强交付项目维护者新功能导致回归移除模块 annotationManifest 配置回到既有交付首页不删除 PRD 或评审数据库Git 记录变更

5.4.6 功能权限清单

角色页面权限按钮权限字段权限数据范围审批 / 二次确认无权反馈
项目维护者可运行检查可刷新本地交付可读错误清单全部模块发布另行授权无发布授权时只输出本地结果
普通评审者不可运行治理命令不展示不展示当前分享项目否不暴露内部路径和堆栈

5.4.7 上线前历史数据处理方案

数据对象数据来源是否迁移迁移 / 清洗规则默认值策略历史状态处理回滚方案验证方式
旧 delivery-publication.json已有业务模块否annotationManifest 保持可选无配置走旧模式历史链接不变回退生成器变更全部现有交付测试通过

6. 数据与口径

数据项 / 指标定义计算口径数据来源刷新规则权限影响缺失 / 异常处理
正式标注数量当前版本非 superseded 标注数按 annotation ID 去重静态 annotations.json随发布全部可读文件缺失不是 0,显示错误
待确认数量当前版本 status=pending 的标注数按标注状态统计静态 annotations.json随发布全部可读显示 0
开放意见数量当前版本 status=open 的评审意见数按 comment ID 去重D1实时查询按分享范围可读API 失败显示不可用,不显示 0
锚点覆盖率页面实现功能中有稳定锚点的比例有锚点功能数 / 页面实现功能数前端契约、原型、标注清单每次交付项目维护者低于 100% 阻止交付

7. 权限、状态与异常

7.1 状态机

stateDiagram-v2
  [*] --> open: 创建评审意见
  open --> resolved: 解决
  resolved --> open: 重开
  open --> superseded: 新版本已替代
  resolved --> superseded: 新版本已替代

7.2 状态与异常矩阵

状态 / 异常触发条件用户可见文案可执行操作数据影响恢复方式
正常静态标注与文档加载成功显示当前版本与数量阅读、筛选、定位无写入不适用
在线评审未配置reviewApi.baseUrl 为空在线评审尚未启用阅读正式内容无配置并部署 API
在线评审加载失败API 超时或 5xx在线评审暂不可用,正式需求仍可查看重试不写本地兜底恢复 API 后重试
无写权限401/403没有评审意见写入权限继续只读无获取权限后重试
版本冲突revision 不匹配该意见已被其他人更新,请刷新后重试刷新不覆盖读取最新 revision
锚点缺失anchorId 不存在该需求未找到页面位置查看逻辑文档交付前应阻断修正原型或清单

8. 前端功能限制

限制 ID限制内容适用页面 / 功能触发条件前端处理后端兜底
FL-001正式标注不得写入 localStorage 或 sessionStorage全部共享页面任意读取与筛选只从发布 JSON 读取不涉及
FL-002评审正文 1–2000 字符意见表单输入实时计数和校验再次校验
FL-003一次只突出一个标注原型与标注点击清除上一高亮不涉及
FL-004标注层关闭后不得拦截业务原型点击原型与标注关闭卸载点位和面板交互层不涉及
FL-005API 未配置时不得假装保存成功在线评审提交禁用提交并说明无地址不接受请求
FL-006生产 API 必须 HTTPS 且限制允许来源在线评审发布拒绝非 HTTPS 配置CORS 白名单
FL-007正式标注正文不得复制完整 PRD标注卡片生成只展示摘要、要点和来源生成检查长度

9. 业务验收标准

ScenarioGiven 前置条件When 触发动作Then 预期结果And 附加预期
S-001 共享读取已生成增强交付在第二浏览器或无痕窗口打开同一 URL标注数量、内容、版本一致清空本地存储不影响结果
S-002 双向定位标注存在有效锚点点击标注卡片原型滚动并高亮对应区域点击数字点展开同一说明
S-003 逻辑文档需求无页面锚点打开逻辑文档并点击来源定位对应 HTML 章节不要求伪造页面标注
S-004 服务端保存API 可用且用户有写权限提交合法意见D1 保存并返回 revision=1第二浏览器可读取同一意见
S-005 无写权限用户无写权限尝试提交返回 401/403 且界面说明原因数据库无新增记录
S-006 并发冲突两个客户端持有相同 revision后提交者更新状态返回 409不覆盖先提交结果
S-007 锚点门禁清单引用不存在锚点运行交付检查命令失败并列出 annotationId、requirementId、anchorId不生成可宣称完成的交付
S-008 历史兼容旧模块没有 annotationManifest运行整站交付测试继续生成原有交付目录旧 URL 和文档不丢失

10. 风险与未决问题

类型问题 / 风险影响范围阻塞程度当前策略责任方期望处理时间
部分验收通过复用已发布的“「小汪智能助理」”企业内部应用、Contact.User.Read 与 HTTPS 回调权限、发布员工扫码、写入和跨浏览器回读已通过;非本企业账号与发布者会话仍待验收权限、回调、Worker、Secrets、亚太 D1 和增强交付页已上线Freddy、项目维护者发布者与非本企业账号专项验收时
风险VPN、家庭网络与移动办公导致出口 IP 和链路变化登录、评审写入高钉钉应用不启用固定 IP 白名单;回调与评审 API 使用公网 HTTPS;GET 弱网自动重试一次,写请求不自动重放;失败明确提示未保存并在本页保留草稿Worker、交付页持续
风险发布者免登录链接属于短期 bearer credential,被转发可能导致冒用权限、审计高一次性 nonce、短有效期、绑定项目版本、换取页面内存会话后立即失效发布流程、Worker持续
风险原型结构变更导致锚点消失原型、交付高使用功能 ID 并加入交付门禁前端、产品每次交付
风险正式标注与 PRD 重复维护产品、数据高标注清单只保存摘要、锚点和 sourceRef,不承载唯一业务事实产品、生成器持续
风险在线意见被误当成已确认需求产品、开发高意见默认 open,确认后必须回写 PRD 并重新发布产品负责人持续
风险API 失败诱导用户以为意见已保存交互、数据高失败保留当前表单内容但不做本地持久化,明确提示未保存前端持续

11. 全局一致性锚点

类别内容来源 / 引用当前状态
术语表正式标注=随版本发布的只读需求索引;评审意见=服务端保存但尚未成为正式需求;逻辑文档=由权威 Markdown 生成的 HTML 阅读视图用户确认、PRD §5已确认
目标与指标跨设备一致、页面功能 100% 锚点覆盖、0 版本串场、0 本地共享数据依赖PRD §1.3、§3.3已确认
范围边界做未来需求、共享外壳、标注、HTML 文档、服务端意见和门禁;不迁移历史、不在线编辑 PRD、不擅自发布PRD §4已确认
关键约束PRD 权威;业务原型纯净;评审写入鉴权;生产 API HTTPS;发布独立授权PRD §8、§10已确认,Access 选型待发布前决定
已确认决策 Decision Log2026-08-24:采用方案 B;只覆盖未来;PRD 继续作为权威源;功能完成后再由 V2-00 接入验收用户确认 / CR-20260824-001已确认
已确认决策 Decision Log2026-08-24:标注工具不得影响原型交互;默认纯净操作,主动查看时再显示标注用户确认 / CR-20260824-002已确认
已确认决策 Decision Log2026-08-24:员工通过钉钉扫码登录后评论、回复;发布者不重复登录,但通过服务端发布会话验证身份用户确认 / CR-20260824-002已确认
已确认决策 Decision Log2026-08-24:钉钉登录复用已发布的“「小汪智能助理」”企业内部应用,不再新建独立评审应用用户确认 / CR-20260824-003已确认;线上权限、回调与真实员工联调已完成
已核验事实钉钉 OAuth 授权支持 scope=openid corpid;用户 token 响应含 corpId;个人信息接口返回 nick/openId/unionId 且需要 Contact.User.Read钉钉开放平台官方文档 / CR-20260824-003已核验
已确认实现Worker、亚太 D1、Secrets、Contact.User.Read、钉钉 HTTPS 回调与增强交付页已上线;会话使用页面内存 bearer 兼容移动端跨站 Cookie 限制用户“替我完成” / CR-20260824-003真实企业员工扫码、评论写入及未登录第二浏览器回读已通过;发布者回复与非本企业账号拒绝待验收

11.1 文档维护规则

规则要求
后续修改任何业务、交互、数据、权限或验收变化同步本 PRD、前端契约、标注清单和全局一致性锚点。
阶段推进当前已获“开始搭建”授权;本地完成后单独报告发布与 V2-00 接入条件。
规格同步标注展示、文档页签、评审意见状态或错误反馈变化必须同步前端契约。
知识沉淀用户已确认的平台交付原则写入项目工作流;不把未确认 Access 选型写成长期事实。