全站非功能需求
本版随页面PRD收敛。当前没有生产SLA或容量实测证据;撤销上一版把百万观察、千主题、统一20并发和固定恢复时限作为所有页面实施前置的建议。先保证当前用户路径正确、有界、可恢复,再依据真实测量优化。
当前页面的读取边界
| 页面 | 已有读取规模 | 验收与风险 |
|---|---|---|
| 首页 | 资讯20、事件4、专题目录、刊物2 | 四块并行且独立降级;计数仅本次范围,不加全库查询 |
| 探索 | 普通30、搜索40、精选时间线20 | 换条件清cursor;不混旧响应;正文按详情读取 |
| 专题/公开事件 | 专题20/页,热点目录最多20个,进展20/页 | 不宣称完整事件库;许可一致 |
| 收藏 | 20ID/页;本机500收藏、5000已读ID | 逐项回读有界;存储失败可见;批读优化必须先有耗时证据 |
| 主题 | 列表20/页;当前结果5条,30秒读取 | 页面轮询只读,不启动采集;结果更新时间与过期可辨 |
| 内容/评论/任务/覆盖 | 各列表20/页;评论回复独立分页 | 不全量拉库,取消或忽略旧请求,不能用失败冒充0条 |
| 私有事件热度 | 最多48个历史点;成员20/页 | 保留缺口,公式/窗口不可比时不画连续趋势 |
| 告警/运营 | 每规则最近50评估;通知/评测50明细;反馈/审计20 | 规则目录和某些配置未分页是已知规模风险;告警选项最多循环100页,应在有规模证据时改按需检索 |
| 榜单/配置/文档目录 | 当前返回固定集合或允许清单,无统一分页 | 记录响应体/DOM规模后再决定分页,不声称已经满足无限数据量 |
必须保持的质量行为
| 质量项 | 具体要求 | 验证方法与失败条件 |
|---|---|---|
| 数据可信 | null/未分析/无权限/失败和0不同;时间、窗口、单位、版本可追溯 | 固定输入包含缺失时间、缺分、0评论、503;任一错误变0或假数据即失败 |
| 授权隔离 | owner由会话决定;公开资料只取获准投影;普通登录不等于运营/文档写权限 | 匿名/本人/另一账户/管理角色替换ID、cursor、导出和文档路径;泄露标题/正文/计数即失败 |
| 许可撤回 | 下一次服务器读取按当前许可判断;旧下载无法远程撤销 | 同一条材料撤回后分别读正文/聚合/导出;不回退到旧修订 |
| 写入恢复 | 现有版本锁和幂等键沿用;没有幂等键的创建不能自动重发 | 模拟提交前后断网、响应丢失、409;不得重复外发或静默覆盖草稿 |
| 任务状态 | 保存、受理、运行、部分覆盖、完成、取消和送达分别说明 | 一来源成功一跳过、全部跳过、超预算/验证码停止;受理不能标为采集成功 |
| 新鲜度 | 首次读取和重读状态可见;旧合法结果刷新时可保留并标记过期 | 反序请求、切主题、切日期、版本变化;旧数据不能冒充新结果 |
| 前端水合 | 扩展可能改html属性,仅根元素容忍;后代正文差异仍报错 | 注入根翻译属性及另一个正文不一致样本分别验证;不全局过滤console,不关闭SSR |
| 键盘与读屏 | 有语义名称、顺序、可见焦点、表单错误关联、弹层焦点返回 | Tab/Enter/Escape和适用方向键走登录/筛选/编辑/导出;只有鼠标能完成即失败 |
| 桌面与窄屏 | 1440px与390px主要字段/动作可用;宽表仅区域内横滚;200%缩放和减少动态效果可读 | 长中文标题/无空格URL/空表/弹层;固定导航遮挡提交或正文即失败 |
| 加载视觉 | 路由共用加载使用Figma连续阅读行骨架,详情采用已有detail变体;不保留旧卡片网格 | 可读状态名称、唯一页面标题、aria-busy;减少动态效果时骨架不闪烁 |
| 本机状态 | 不复制许可正文;损坏/禁用存储不能误报收藏成功;账号退出不泄露个人内存 | 存储异常、重复ID、500上限、混合撤回选择、另一账号回读 |
| 输入和凭据 | Markdown/HTML/URL安全渲染;密码、Cookie、运营Token不进URL/日志/导出/持久浏览器状态 | 恶意协议、路径遍历、脚本、超长输入;任何执行或外泄阻断 |
| 免费与准入 | 不调用必需付费取数接口;遵守来源预算、账号绑定、静默和风控停止 | 预算0/余1/并发预留、连接版本改变、验证码;不得自动换付费源 |
| 运维诊断 | 页面错误可定位request/job/operation及下一步;记录不含私人全文和密钥 | 核对一次受控失败链;错误码和用户动作应一致 |
| 数据可恢复 | 改结构前须在独立库实际恢复;不在业务库测试schema | 记录备份范围、恢复时长、行数/约束及关键页面抽检;备份成功不等于恢复成功 |
性能测量顺序
首先记录同一生产构建、浏览器、硬件、网络条件下的首次加载和热缓存、API数量/包体、主内容可读时间、交互等待及错误率;使用上述真实页大小,正常和失败分别测,不只挑最快样本。开发模式含编译开销,不能直接当生产性能。
然后对慢的那条页面路径,在独立测试库执行实际查询计划和相同过滤/授权条件,报告样本量及p50/p95分布。若缺少规模目标,写未确定,不擅自添加百万级压测平台。优化优先顺序:取消无用请求 → 复用同源结果/并行读取 → 有界批读或分页 → 必要索引 → 经测量证明才考虑物化/缓存。
恢复时间、长时间稳定率、模型准确率、跨平台覆盖率均需要单独真实验收;当前源码、单元测试和健康接口不能证明它们。冻结功能不纳入本轮真实外发验证。
原稿实现的非功能边界
- 1440px/390px核对8主页面;固定侧栏302px,唯一正文滚动区;移动56px顶栏/64px底栏不挡焦点;取消旧Ctrl/Cmd+B拦截。
- 外壳用shadcn Sidebar、Radix控件与语义组件;业务原生标签/API绕行由lint禁止。不得用设计截图当页面实现。
- 首页2路独立读取并行,禁止每个事件额外读曲线造成瀑布;收藏每页最多20次许可回读。无实测不宣称LCP/P95达标。
- 备注2000字符/500条,损坏不覆盖;Markdown导出不带资讯正文。未知观测不是0。
- 根html翻译扩展属性容忍只限该层;不全局关闭hydration诊断。
加载中没有可交互子项时,正文滚动区仍能由Tab进入并用方向键/PageDown阅读,焦点轮廓可见。平台/来源加载区使用具名status及aria-busy;知识库整页加载保留唯一一级标题。减少动态效果同样适用于来源配置spinner。