Files
workdsh/design/ssh-workbench/feature-data.js
T

73 lines
28 KiB
JavaScript

/* Requirement source of truth. Prototype coverage describes simulated interactions only. */
window.FEATURES = [
{id:'REQ-BASE-001',module:'产品基础',name:'无需账号使用',priority:'P0',page:'首次使用',detail:'安装后可直接管理本地主机配置、使用终端和接入自己的模型;核心流程不要求产品账号或会员。',acceptance:'断开产品官网访问后仍可打开配置与本地终端;添加模型不出现付费解锁。',edge:'云模型与远程 SSH 仍需要各自可达的网络。',coverage:'说明',class:'functional'},
{id:'REQ-BASE-002',module:'产品基础',name:'首次使用引导',priority:'P0',page:'帮助 / 开始体验',detail:'提供添加主机、配置模型、打开本地终端三个入口;允许跳过模型配置。',acceptance:'未配置模型时仍可进入终端;求助入口指向模型设置并保留待发送问题。',edge:'关闭引导后可从帮助重新打开。',coverage:'可交互',class:'functional'},
{id:'REQ-HOST-001',module:'主机连接',name:'主机创建与编辑',priority:'P0',page:'主机管理',detail:'维护名称、地址、端口、用户名、分组和环境标签;名称用于展示,目标地址与用户名始终可辨认。',acceptance:'名称、地址、用户名必填;端口只接受 1–65535;保存后可搜索并打开该主机。',edge:'保存失败保留输入;重名允许但通过地址区分;编辑不静默重定向已打开会话。',coverage:'可交互',class:'functional'},
{id:'REQ-HOST-002',module:'主机连接',name:'密码与私钥认证',priority:'P0',page:'连接设置',detail:'支持密码、私钥文件及私钥口令;可选每次询问凭据,默认不在普通配置中保存明文。',acceptance:'错误凭据显示认证失败且不泄露内容;取消凭据输入不建立连接。',edge:'密钥文件丢失、格式不支持与口令错误分别可识别。',coverage:'表单演示',class:'functional'},
{id:'REQ-HOST-003',module:'主机连接',name:'主机指纹验证',priority:'P0',page:'首次连接弹窗',detail:'首次连接显示目标和指纹供核对;再次连接检查是否变化。',acceptance:'未信任目标前不打开交互会话;已知指纹变化时阻止直接连接并要求重新核对。',edge:'不能把普通重连按钮当作接受新指纹。',coverage:'可交互',class:'security'},
{id:'REQ-HOST-004',module:'主机连接',name:'分组、收藏与搜索',priority:'P0',page:'主机管理 / 侧栏',detail:'按项目或环境分组,支持收藏;搜索匹配名称、地址、用户名和标签。',acceptance:'输入关键字后只展示匹配目标;收藏变化在侧栏和主机页一致。',edge:'无结果时提供清空搜索及添加主机入口。',coverage:'可交互',class:'functional'},
{id:'REQ-HOST-005',module:'主机连接',name:'连接状态与重连',priority:'P0',page:'终端工作区',detail:'区分连接中、已连接、断开和失败;保留历史输出并允许显式重连。',acceptance:'断开后禁用发送命令;重连建立新会话,旧命令绝不自动重放。',edge:'网络中断后执行结果未知时标注未知,不能显示成功。',coverage:'可交互',class:'functional'},
{id:'REQ-HOST-006',module:'主机连接',name:'本地终端',priority:'P0',page:'终端工作区',detail:'用户可直接打开本机 Shell,与远程主机明显区分。',acceptance:'本地会话显示本机标签和实际目录;切换远程会话不会沿用本地上下文。',edge:'Shell 不可用时提供重新选择,不影响其他会话。',coverage:'可交互',class:'functional'},
{id:'REQ-HOST-007',module:'主机连接',name:'跳板机与代理',priority:'P1',page:'连接高级设置',detail:'支持通过一台跳板机或配置的代理连接目标,并展示连接链路。',acceptance:'连接失败可识别发生在哪一段;取消时停止整个连接过程。',edge:'链路循环应拒绝;各节点凭据不混用。',coverage:'规划',class:'functional'},
{id:'REQ-HOST-008',module:'主机连接',name:'连接导入与导出',priority:'P1',page:'主机管理',detail:'支持导入 SSH 配置及导出产品连接配置;提供重复目标处理预览。',acceptance:'导入前显示新增与冲突项目;默认导出不包含密码、私钥与模型密钥。',edge:'遇到不支持的 SSH 指令明确列出,不伪装完整兼容。',coverage:'规划',class:'functional'},
{id:'REQ-TERM-001',module:'终端工作区',name:'多会话标签',priority:'P0',page:'终端工作区',detail:'允许同时打开多个主机与本地终端,标签展示状态和环境。',acceptance:'切换后输出、目录、AI 上下文及输入草稿正确恢复。',edge:'关闭有任务运行的会话前说明影响;关闭最后标签进入空状态。',coverage:'可交互',class:'functional'},
{id:'REQ-TERM-002',module:'终端工作区',name:'终端输入与命令记录',priority:'P0',page:'终端工作区',detail:'支持键盘输入、命令历史、复制、粘贴和选择输出;保留有限滚动历史。',acceptance:'回车只提交一次;多行粘贴需明确展示将提交的内容;退出状态可见。',edge:'中文输入法组合期间不得误提交;历史记录排除识别出的敏感输入。',coverage:'命令模拟',class:'functional'},
{id:'REQ-TERM-003',module:'终端工作区',name:'命令块与执行状态',priority:'P0',page:'终端工作区',detail:'为可识别的命令显示目录、执行时间、状态和输出;提供复制、解释与分析错误。',acceptance:'命令结束后展示退出码;未知目录或完成状态明确显示未知。',edge:'交互程序与不支持的 Shell 可降级成连续输出,不捏造命令边界。',coverage:'可交互',class:'functional'},
{id:'REQ-TERM-004',module:'终端工作区',name:'分屏工作',priority:'P1',page:'终端工作区',detail:'支持左右分屏,各窗格绑定独立会话,并清楚标记当前焦点。',acceptance:'键盘输入仅发送到聚焦窗格;合并布局不误关底层会话。',edge:'小窗口下可恢复单窗格,防止内容不可用。',coverage:'布局演示',class:'functional'},
{id:'REQ-TERM-005',module:'终端工作区',name:'搜索终端输出',priority:'P0',page:'终端工作区',detail:'在当前会话保留的输出中搜索并定位匹配内容。',acceptance:'匹配数量可见;搜索不混入其他主机输出。',edge:'超出保留范围明确提示,不能把未找到解释为不存在。',coverage:'可交互',class:'functional'},
{id:'REQ-TERM-006',module:'终端工作区',name:'主题与字体',priority:'P1',page:'偏好设置',detail:'提供深色主题、字体大小与行高调整。',acceptance:'调整后终端可读且设置可恢复默认值。',edge:'缩放不覆盖应用快捷键与中文字符宽度。',coverage:'字体演示',class:'functional'},
{id:'REQ-MODEL-001',module:'自定义模型',name:'免费配置自带模型',priority:'P0',page:'模型服务',detail:'用户维护协议类型、接口地址、密钥与模型名称;支持多个服务配置,无会员门槛。',acceptance:'无需产品账号即可添加、编辑和选择自己的服务;费用归属清晰。',edge:'模型接口地址变化时需重新检查可用性,不能继续沿用旧验证状态。',coverage:'可交互',class:'functional'},
{id:'REQ-MODEL-002',module:'自定义模型',name:'协议与服务预设',priority:'P0',page:'模型服务',detail:'提供 DeepSeek、OpenAI 兼容、Anthropic 兼容、Ollama / 本地服务配置入口;允许自定义模型名。',acceptance:'切换预设正确调整必填项;不把所有服务都视为同一协议。',edge:'模型名单无法自动获取时允许手动输入;具体模型按实测能力提供功能。',coverage:'可交互',class:'functional'},
{id:'REQ-MODEL-003',module:'自定义模型',name:'连接与能力测试',priority:'P0',page:'模型服务',detail:'分别显示连接、流式回答、工具调用检查结果;支持只聊天的模型。',acceptance:'认证失败、超时与不支持工具可区分;检测未完成不能显示全部通过。',edge:'能力测试可能产生少量模型用量,测试前说明;原型测试全为模拟。',coverage:'成功 / 失败模拟',class:'functional'},
{id:'REQ-MODEL-004',module:'自定义模型',name:'默认模型与会话切换',priority:'P0',page:'模型服务 / AI 面板',detail:'可设默认模型并在新请求前切换;显示当前服务与模型。',acceptance:'进行中的请求保持原服务;切换不自动重发消息。',edge:'切换服务前清楚展示将发送的上下文;失败不静默换到别家。',coverage:'可交互',class:'functional'},
{id:'REQ-MODEL-005',module:'自定义模型',name:'请求预算与停止',priority:'P0',page:'AI 面板 / 偏好设置',detail:'可停止生成,限制附带上下文和单次输出;展示可获得的用量。',acceptance:'停止后不继续发起工具;无真实用量数据时显示不可用或估算标记。',edge:'请求停止不等于已执行的服务器操作被撤销。',coverage:'可交互',class:'functional'},
{id:'REQ-MODEL-006',module:'自定义模型',name:'按任务选择模型',priority:'P2',page:'模型服务',detail:'可分别指定命令建议与复杂排障的默认模型。',acceptance:'每次请求显示实际模型;自动路由仅在用户配置范围内选择。',edge:'没有满足能力的模型时降级为建议模式并说明。',coverage:'规划',class:'functional'},
{id:'REQ-AI-001',module:'随时呼唤 AI',name:'快捷键与常驻入口',priority:'P0',page:'终端工作区',detail:'使用应用内快捷键或工具栏按钮唤起 AI;支持收起侧栏,保留输入草稿。',acceptance:'终端聚焦时也可唤起;关闭面板不会关闭 SSH 会话。',edge:'快捷键冲突允许后续改绑;原型使用 ⌘/Ctrl+J。',coverage:'可交互',class:'functional'},
{id:'REQ-AI-002',module:'随时呼唤 AI',name:'选区求助',priority:'P0',page:'终端工作区',detail:'选中命令或输出后询问,清楚显示引用内容。',acceptance:'发送内容包含选区且可移除;没有选区时提供说明。',edge:'截断内容需标记;不把控制字符当作模型指令。',coverage:'可交互',class:'functional'},
{id:'REQ-AI-003',module:'随时呼唤 AI',name:'命令生成与解释',priority:'P0',page:'AI 面板',detail:'根据用户目标和当前环境生成建议,并解释关键参数与影响。',acceptance:'建议提供复制与填入操作;填入不自动回车。',edge:'当前处于交互程序时仅展示建议,不向程序注入命令。',coverage:'预置场景模拟',class:'functional'},
{id:'REQ-AI-004',module:'随时呼唤 AI',name:'报错一键分析',priority:'P0',page:'命令块 / AI 面板',detail:'错误命令块可发起分析,关联原命令、输出和主机。',acceptance:'AI 回答中的依据可回到对应命令块;区分已知事实与待验证判断。',edge:'无输出或未知退出码时说明证据不足。',coverage:'可交互',class:'functional'},
{id:'REQ-AI-005',module:'随时呼唤 AI',name:'上下文查看与控制',priority:'P0',page:'AI 上下文弹窗',detail:'显示目标主机、目录、选区、最近命令与数据接收服务;用户可按项选择。',acceptance:'取消勾选后下一请求不包含该项;凭据不作为上下文发送。',edge:'无可靠目录时显示未知;长日志展示截断提示。',coverage:'可交互',class:'security'},
{id:'REQ-AI-006',module:'随时呼唤 AI',name:'按主机会话隔离',priority:'P0',page:'AI 面板',detail:'AI 会话绑定具体终端与目标;切换主机恢复对应会话,旧请求不转移。',acceptance:'A 主机回答和待执行命令不能出现在 B 主机的执行入口。',edge:'目标断开后所有旧执行建议失去直接执行资格。',coverage:'可交互',class:'security'},
{id:'REQ-AI-007',module:'随时呼唤 AI',name:'AI 不可用时继续工作',priority:'P0',page:'AI 面板',detail:'模型未配置、失败或限流时提供修复入口与手动重试,终端始终可用。',acceptance:'保留问题与引用;重试必须显式触发,不重复提交远程操作。',edge:'不能为恢复回答而静默改用其他模型服务。',coverage:'失败模拟',class:'reliability'},
{id:'REQ-AI-008',module:'随时呼唤 AI',name:'快捷提问模板',priority:'P0',page:'AI 面板',detail:'提供解释命令、分析错误、检查磁盘等常见入口,用户可编辑后发送。',acceptance:'模板使用当前上下文;不会自动附带其他主机的内容。',edge:'没有上下文时允许普通问答。',coverage:'可交互',class:'functional'},
{id:'REQ-AI-009',module:'随时呼唤 AI',name:'输入行快捷触发',priority:'P2',page:'终端输入',detail:'可选启用类似特殊前缀的提问触发,并允许关闭。',acceptance:'启用与关闭行为明确;Shell 通配符和全屏程序不会被误拦截。',edge:'仅在可可靠识别 Shell 输入阶段启用。',coverage:'规划',class:'functional'},
{id:'REQ-EXEC-001',module:'AI 协助执行',name:'聊天与协助模式',priority:'P1',page:'AI 面板',detail:'聊天模式只生成建议;协助模式可申请执行具体工具操作。',acceptance:'切换到聊天后不发起新执行;已有任务保持可观察与可停止。',edge:'不支持工具的模型只能进入聊天模式。',coverage:'可交互',class:'functional'},
{id:'REQ-EXEC-002',module:'AI 协助执行',name:'具体操作确认',priority:'P1',page:'执行确认弹窗',detail:'执行前展示目标、目录、完整命令、原因和可能影响。',acceptance:'确认内容与实际提交内容一致;修改命令、目标或连接变化后旧确认失效。',edge:'主机输出中的指令不能替代用户授权。',coverage:'可交互',class:'security'},
{id:'REQ-EXEC-003',module:'AI 协助执行',name:'执行过程与结果验证',priority:'P1',page:'AI 面板 / 命令块',detail:'显示待确认、执行中、成功、失败与结果未知,保留执行证据。',acceptance:'完成状态以实际结果为准;建议后续验证而非仅凭输出静默认定成功。',edge:'断线或超时的写操作不能自动重试。',coverage:'可交互',class:'functional'},
{id:'REQ-EXEC-004',module:'AI 协助执行',name:'输入权协调与停止',priority:'P1',page:'终端工作区',detail:'需要操作当前交互终端时协调输入权;用户始终可以停止协助。',acceptance:'同一会话不能并发交织人和 AI 的输入;停止后显示操作是否已经发生。',edge:'停止请求未确认时不宣称进程已结束。',coverage:'规划',class:'reliability'},
{id:'REQ-EXEC-005',module:'AI 协助执行',name:'配置修改差异与备份',priority:'P1',page:'远程文件编辑',detail:'AI 修改远程文本前展示差异、目标和备份计划;修改后提供验证建议。',acceptance:'原文件变化时要求重新比较;未经确认不覆盖。',edge:'备份失败时暂停写入;撤销仅作用于有明确恢复能力的文件操作。',coverage:'差异演示',class:'functional'},
{id:'REQ-FILE-001',module:'文件与传输',name:'远程目录浏览',priority:'P0',page:'文件面板',detail:'展示当前连接的目录、文件类型、大小和修改时间;支持路径跳转与返回。',acceptance:'切换主机后刷新对应文件上下文;权限不足可识别。',edge:'目录加载失败可重试;不以空目录替代失败状态。',coverage:'可交互',class:'functional'},
{id:'REQ-FILE-002',module:'文件与传输',name:'文本预览与编辑',priority:'P0',page:'文件工作区 / 编辑器',detail:'预览和编辑远程文本,保存前显示目标与未保存状态。',acceptance:'离开时提示未保存变更;外部文件版本变化时阻止静默覆盖。',edge:'大文件、二进制与未知编码提供合适的降级提示。',coverage:'可交互',class:'functional'},
{id:'REQ-FILE-003',module:'文件与传输',name:'上传下载与进度',priority:'P0',page:'文件工作区 / 传输管理',detail:'支持文件上传、下载,显示来源、目标、进度与结果,允许取消。',acceptance:'传输失败或取消不显示完成;同名文件覆盖前确认。',edge:'断线与空间不足保留失败信息;原型不读取或上传真实文件。',coverage:'队列模拟',class:'functional'},
{id:'REQ-FILE-004',module:'文件与传输',name:'文件重命名与删除',priority:'P1',page:'文件面板',detail:'支持新增目录、重命名和删除,操作前可辨别目标。',acceptance:'删除显示完整路径;失败后列表不伪装已删除。',edge:'远程删除不承诺回收站或通用撤销。',coverage:'规划',class:'functional'},
{id:'REQ-FILE-005',module:'文件与传输',name:'文件求助',priority:'P1',page:'文件工作区 / AI 助手',detail:'可将选定文本交给 AI 解释、检查配置或提出修改建议。',acceptance:'明确展示发送内容与接收模型;默认不自动发送整个目录。',edge:'识别到凭据内容时要求删减后再发送。',coverage:'可交互',class:'functional'},
{id:'REQ-FILE-006',module:'文件与传输',name:'断点续传与目录传输',priority:'P2',page:'传输管理',detail:'为大文件和目录提供恢复传输与冲突处理。',acceptance:'恢复前校验目标与源是否变化;冲突处理结果可追踪。',edge:'不支持续传的目标明确降级为重新传输。',coverage:'规划',class:'functional'},
{id:'REQ-SNIP-001',module:'效率工具',name:'快捷命令收藏',priority:'P0',page:'快捷命令',detail:'维护名称、命令、说明和标签;可从 AI 建议保存,使用时填入当前终端。',acceptance:'填入不执行;可搜索、编辑和删除收藏。',edge:'没有连接时引导打开会话;目标环境差异由用户确认。',coverage:'可交互',class:'functional'},
{id:'REQ-SNIP-002',module:'效率工具',name:'参数化命令',priority:'P1',page:'快捷命令',detail:'为常用命令定义参数说明,执行前预览替换后的完整内容。',acceptance:'缺少必填参数不能提交;最终内容与预览一致。',edge:'参数包含换行或特殊字符需显式处理,不静默拼接。',coverage:'规划',class:'functional'},
{id:'REQ-SNIP-003',module:'效率工具',name:'主机关联笔记',priority:'P2',page:'主机详情',detail:'为主机记录运维说明和排障经验,可选作为 AI 上下文。',acceptance:'默认不发送给模型;用户选择后显示引用。',edge:'笔记不能存储明文凭据。',coverage:'规划',class:'functional'},
{id:'REQ-HIST-001',module:'历史与审计',name:'AI 对话历史',priority:'P0',page:'会话记录',detail:'按主机与时间查找对话,查看问题、模型、引用和建议。',acceptance:'可返回原主机上下文;删除记录只影响选择范围。',edge:'原主机已删除时仍可查看历史,但不出现有效执行入口。',coverage:'可交互',class:'functional'},
{id:'REQ-HIST-002',module:'历史与审计',name:'操作时间线',priority:'P1',page:'会话记录',detail:'记录人或 AI 发起的操作、目标、确认、结果与时间。',acceptance:'能区分建议与已执行;结果未知保留未知状态。',edge:'日志需要脱敏;不能记录口令输入。',coverage:'可交互',class:'functional'},
{id:'REQ-HIST-003',module:'历史与审计',name:'导出与保留期限',priority:'P1',page:'会话记录 / 偏好设置',detail:'支持导出选定对话,并配置本地历史保留期限。',acceptance:'导出前说明范围;不包含凭据;清理前展示将删除的类别。',edge:'导出敏感业务日志需用户检查;原型导出仅含演示数据。',coverage:'导出演示',class:'functional'},
{id:'REQ-MON-001',module:'监控与网络',name:'基础资源监控',priority:'P1',page:'终端状态 / 监控弹窗',detail:'查看 CPU、内存、磁盘与负载,标明采样时间。',acceptance:'数据过期显示失效;采集失败不显示为零。',edge:'不支持的操作系统显示能力限制;原型指标为固定样例。',coverage:'样例展示',class:'functional'},
{id:'REQ-MON-002',module:'监控与网络',name:'端口转发',priority:'P2',page:'隧道管理',detail:'管理本地、远程与动态转发,展示监听范围和状态。',acceptance:'端口占用与目标失败可区分;停止后确认已释放。',edge:'默认监听本机;公开监听需说明影响。',coverage:'规划',class:'functional'},
{id:'REQ-SEC-001',module:'安全与设置',name:'凭据保护',priority:'P0',page:'连接 / 模型配置',detail:'SSH 密码、私钥口令和模型密钥独立受保护,界面默认隐藏。',acceptance:'普通导出、日志和 AI 上下文不包含凭据;保护能力不可用时不静默降为明文。',edge:'原型密钥只作输入演示,不保存到浏览器持久存储、不发送网络。',coverage:'约束演示',class:'security'},
{id:'REQ-SEC-002',module:'安全与设置',name:'上下文脱敏与去向',priority:'P0',page:'AI 上下文',detail:'发送前过滤可识别的密钥、令牌和口令,并显示接收服务。',acceptance:'常见敏感样例不出现在发送预览中;用户可移除整段上下文。',edge:'自动脱敏不能承诺发现所有敏感信息;用户可关闭附带上下文。',coverage:'可交互',class:'security'},
{id:'REQ-SEC-003',module:'安全与设置',name:'生产环境醒目标记',priority:'P0',page:'所有执行入口',detail:'主机可标为生产环境,标签、AI 上下文及执行确认保持一致。',acceptance:'跨页面查看同一主机时环境一致;生产变更需具体确认。',edge:'无标签不能视为安全环境。',coverage:'可交互',class:'security'},
{id:'REQ-SEC-004',module:'安全与设置',name:'不可信输出处理',priority:'P0',page:'AI 流程',detail:'日志、远程文件和终端输出作为待分析数据,不能授予权限或扩大操作范围。',acceptance:'含有要求上传密钥或切换主机的恶意样例不能触发相应操作。',edge:'模型建议始终经过目标与操作边界检查。',coverage:'需求定义',class:'security'},
{id:'REQ-SEC-005',module:'安全与设置',name:'快捷键与界面偏好',priority:'P1',page:'偏好设置',detail:'提供终端字号、AI 面板默认展开、历史保留等偏好。',acceptance:'修改可即时预览并恢复默认;设置不可用时给出反馈。',edge:'原型仅保存无凭据偏好,业务样例刷新后重置。',coverage:'可交互',class:'functional'},
{id:'REQ-QUAL-001',module:'质量目标',name:'终端独立可用',priority:'P0',page:'全局',detail:'模型服务慢、不可达、未配置或被取消时,手工终端操作不受阻塞。',acceptance:'在模型故障测试中 20 次手工命令均可提交且不等待模型恢复。',edge:'SSH 网络故障与 AI 网络故障分别展示。',coverage:'异常演示',class:'reliability'},
{id:'REQ-QUAL-002',module:'质量目标',name:'交互性能',priority:'P0',page:'全局',detail:'目标:本地按键反馈 P95 ≤ 50ms、会话切换 P95 ≤ 150ms;参考条件为 8GB 内存设备、10 个会话、每会话保留 1 万行。',acceptance:'通过发布前本地性能采样验证,不把模型首字延迟算作本地交互延迟。',edge:'指标为设计目标,原型不构成达标证据。',coverage:'需求定义',class:'performance'},
{id:'REQ-QUAL-003',module:'质量目标',name:'桌面与 Shell 兼容',priority:'P0',page:'全局',detail:'首版面向 macOS Apple Silicon / Intel 和 Windows x64;远程 Linux Bash/Zsh 为首轮验证范围,具体最低系统版本由发行验证确定。',acceptance:'每个支持的平台完成连接、文件传输、自带模型和故障恢复场景;中文输入可用。',edge:'Linux 桌面、复杂堡垒机与更多 Shell 放入后续兼容计划。',coverage:'需求定义',class:'compatibility'},
{id:'REQ-QUAL-004',module:'质量目标',name:'可访问性与缩放',priority:'P0',page:'全局',detail:'核心操作支持键盘;弹窗管理焦点;状态不只靠颜色;1280×720 起核心工作区可操作。',acceptance:'Tab 可完成新增主机与模型配置;Esc 关闭非阻塞弹窗并返回入口;150% 缩放下可滚动访问内容。',edge:'较窄窗口将辅助面板收起,保留终端与 AI 唤起。',coverage:'可交互',class:'accessibility'},
{id:'REQ-QUAL-005',module:'质量目标',name:'现有 Desktop 行为兼容',priority:'P0',page:'全局',detail:'新增工作台保留现有兼容模式、Profile 管理和上游边界;共享桌面改动按仓库变体规则验证。',acceptance:'后续实现通过两桌面包相关检查与变体一致性门禁;原型文件不修改运行包。',edge:'本次交付只涉及设计资产,不宣称生产功能完成。',coverage:'需求定义',class:'compatibility'},
{id:'REQ-EXT-001',module:'后续扩展',name:'多主机批量协助',priority:'P2',page:'批量任务',detail:'允许选择多台主机执行经确认的任务,分别跟踪结果。',acceptance:'逐目标显示命令、状态和结果;失败重试仅作用于选定目标。',edge:'不能默认全选生产主机;不得复用其他目标的确认。',coverage:'规划',class:'functional'},
{id:'REQ-EXT-002',module:'后续扩展',name:'MCP 与插件扩展',priority:'P2',page:'扩展管理',detail:'按授权范围向外部 AI 客户端暴露操作能力,支持引入运维工具。',acceptance:'外部客户端有明确身份和访问范围;凭据不通过工具返回。',edge:'未经范围授权的主机、文件及操作应拒绝。',coverage:'规划',class:'functional'},
{id:'REQ-EXT-003',module:'后续扩展',name:'团队协作与同步',priority:'P2',page:'团队空间',detail:'后续评估连接配置同步、团队授权与共享运维知识。',acceptance:'与个人核心功能解耦;同步内容和访问者可见且可撤销。',edge:'默认不云端同步凭据;商业模式另行确认。',coverage:'规划',class:'functional'},
{"id": "REQ-FILE-007", "module": "文件与传输", "name": "目录树与组合布局", "priority": "P0", "page": "文件工作区", "detail": "目录树、文件编辑器、终端和传输管理共同组成工作区;AI 与传输可切换。", "acceptance": "展开目录后打开文件不离开当前主机会话;窄窗口允许滚动访问各区。", "edge": "目录与终端路径通过明确操作定位,不隐式执行 cd。", "coverage": "可交互", "class": "functional"},
{"id": "REQ-FILE-008", "module": "文件与传输", "name": "多文件标签与未保存保护", "priority": "P0", "page": "文件工作区", "detail": "同时打开多个文本文件,按主机保存草稿和活动标签。", "acceptance": "切换标签保留修改;关闭未保存标签时可返回编辑或放弃修改。", "edge": "刷新原型会丢失所有演示草稿;正式产品需要恢复策略。", "coverage": "可交互", "class": "functional"},
{"id": "REQ-FILE-009", "module": "文件与传输", "name": "文件选择与拖放上传", "priority": "P0", "page": "文件工作区", "detail": "支持选择多个本地文件或拖放到远程目录,开始前展示目标。", "acceptance": "原型仅取文件名与大小,不读取内容;真实实现需完成 SFTP 上传并验证结果。", "edge": "目录拖放、符号链接与超大文件的支持范围后续单独验证。", "coverage": "元数据演示", "class": "functional"},
{"id": "REQ-FILE-010", "module": "文件与传输", "name": "同名文件冲突处理", "priority": "P0", "page": "文件工作区", "detail": "上传前选择覆盖、自动重命名或跳过已有同名文件。", "acceptance": "自动重命名保留原文件;跳过不新增任务;覆盖明确显示目标。", "edge": "正式产品提交前再次校验目标变化,防止检查后文件发生变更。", "coverage": "队列模拟", "class": "functional"},
{"id": "REQ-FILE-011", "module": "文件与传输", "name": "传输队列与失败恢复", "priority": "P0", "page": "文件工作区", "detail": "统一查看上传下载任务,支持筛选、暂停、继续、取消与失败重试。", "acceptance": "状态与进度一致;切换主机不改变已创建任务的目标。", "edge": "原型重试只模拟进度,真实断点续传需协议与服务端验证。", "coverage": "队列模拟", "class": "functional"},
{"id": "REQ-BASE-003", "module": "产品基础", "name": "全局顶部与主机会话层级", "priority": "P0", "page": "全局顶部", "detail": "顶部固定功能入口、主机会话标签与 AI 入口;主机下包含文件标签、终端与传输工具。", "acceptance": "在文件页切换顶部主机标签,文件草稿与 AI 对话按主机隔离;进入连接中心不关闭已打开会话。", "edge": "标签较多时横向滚动;关闭会话前提示连接和未保存草稿的影响;关闭后的传输不能继续写入。", "coverage": "可交互", "class": "functional"}
];