docs/requirements/20261017-knowledge-interaction-menu-plan.md 自动同步生成。v1.0.0 发布补充(2026-10-19):当前页面实现及维护者报告的服务器验证见发布说明。下文保留方案定稿时的历史状态,不作为当前版本全部未实现的结论,也不据此自动关闭逐项验收要求。
日期:2026-10-17
状态:方案定稿,待实施;不代表功能已完成或联调通过。
目标仓库:g2rain-knowledge-app。集成宿主:g2rain-main-shell、g2rain-admin-shell。
# 1. 目标与范围
以“知识主题 → 版本 → 审核 → 处理 → 发布 → 效果验证”为业务主线,将表级 CRUD 页面升级为运营页面。一套 knowledge-app 业务实现接入两个壳,由平台资源和授权控制入口。
本方案不增加发布历史表、在线文件预览、模型配置页面或全新后端聚合接口。反馈中心和统计首页放后续阶段。壳拥有布局、菜单、全局 Tab、实例生命周期和认证协调;知识应用拥有业务规则的前端表达、业务页面和接口适配。
本方案取代 20261015 页面升级方案,作为后续实施入口。旧文档仅供背景追溯;菜单、弹层交互、双壳接入和验收以本文为准。本文规定的是待实施行为,不代表当前源码已支持。
# 2. 核查依据与现状
核查了前端 scripts/database.sql、src/views、route-map、runtime/boot、权限指令、资源 JSON,以及相邻 g2rain-knowledge 的 Controller、API、状态枚举和处理服务;同时核对两个壳的菜单适配、实例身份和生命周期约束。未连接实际数据库、未启动浏览器、未完成接口联调。
| 检查项 | 实际情况与设计影响 |
|---|---|
| 数据表 | SQL 定义分类、标签、主题、版本、切片、任务、发布选择、回复模板、反馈共九张表;前端只有前八类页面 |
| 生成界面 | 版本和任务页面暴露机构、存储、解析、租约等字段,并提供通用增删改,需要按领域收窄 |
| 路由 | 静态组件映射配合服务端页面资源动态注册;首期保留下划线路径 |
| 首页 | 入口来自静态 route-map,需要改为与授权资源取交集 |
| API 契约 | save 后端返回 ID,前端仍声明对象;生成 getById 请求的 GET /{id} 没有对应详情接口 |
| 状态 | 实现采用 APPROVED、PROCESSING、PROCESS_FAILED,SQL 和部分 DTO/VO 注释仍有旧状态 |
| 任务类型 | 处理服务创建 PROCESS 任务,SQL 注释仍描述 PARSE、INDEX 等类型,实施前统一契约 |
| 文件下载 | 后端已存在原文件受控下载接口,原需求中的“待实现”说明已过时;可用性仍待联调 |
| 权限 | 当前主要为 add/edit/delete,API 权限检查直接返回 true;资源工具不生成 API endpoint |
| 本地修改 | 核查时前端 .env、package-lock.json 已有修改,后续不得覆盖 |
源码与注释不一致时,应核对实际响应和领域实现后统一枚举,不依据 SQL 注释生成按钮或状态转换。
# 3. 信息架构与菜单
知识管理
├─ 知识内容
├─ 内容审核
├─ 知识处理
├─ 发布管理
├─ 效果验证
└─ 知识设置
├─ 分类管理
├─ 标签管理
└─ 回复模板
| 页面 | 内部路由 | 菜单策略 |
|---|---|---|
| 知识内容 | /knowledge_item | 内容列表,提供文档、FAQ 类型筛选 |
| 版本管理 | 无独立路由 | 内容页内大尺寸抽屉 |
| 内容审核 | /knowledge_review | 默认待审核队列 |
| 知识处理 | /knowledge_task | 普通列表;默认待处理队列,队列类型筛选 + 分页,兼顾运行监控 |
| 发布管理 | /knowledge_release | 普通列表;默认待发布队列,视图类型筛选 + 分页,可切换线上内容 |
| 切片核对 | 无独立路由 | 所属版本详情中的只读业务页签 |
| 效果验证 | /knowledge_search | 普通表单;默认问答验证,验证方式下拉可切换检索验证 |
| 分类管理、标签管理、回复模板 | 保留现有三个路径 | 知识设置分组 |
菜单展示名称采用上表用语;内部实体仍可称 knowledge_item(知识主题),现有路径和资源编码不因改名而改变。文档其他位置出现的主题指领域实体,不是额外菜单。
# 3.1 角色入口与待办
菜单按上图保持固定顺序,按实际授权裁剪;分组下无可访问子菜单时隐藏分组。不因壳名称推断角色,也不根据待办数量动态重排菜单。
| 使用职责 | 主要入口 | 开始工作的方式 |
|---|---|---|
| 内容维护 | 知识内容 | 创建内容、查看版本、新增版本、提交审核 |
| 内容审核 | 内容审核 | 默认查看待审核内容 |
| 处理运营 | 知识处理 | 从待处理开始,用队列类型筛选跟进待执行、运行中和处理失败项 |
| 发布运营 | 发布管理 | 默认查看待发布版本,用视图类型切换线上内容并回滚 |
| 效果检查 | 效果验证 | 输入问题,检查回答和引用 |
| 配置维护 | 知识设置下的具体菜单 | 维护分类、标签和模板 |
以上为职责视角,不要求新增六个固定角色;同一用户可以拥有多项职责。直接点击具体菜单时进入其默认视图;如果壳提供知识应用总入口,则打开首个有权限的叶子菜单,不强制进入知识内容。无可访问菜单时显示无权限提示。两个壳使用相同名称、顺序和业务规则,菜单集合由授权决定。
各工作页的待办队列属于首期范围,不依赖统计首页。空队列展示“暂无待审核/待处理/待发布内容”,并提供切换其他状态的入口;不能把无数据与加载失败或无权限混为一谈。菜单角标数量后续评估,首期不承诺统计接口。
全局菜单只打开不依赖上下文参数的独立页面。主题、版本、任务和切片详情通过组件参数传递 ID,不使用 query/hash 或隐藏详情路由承载上下文;列表内部仍可维护筛选与分页状态。刷新后返回当前菜单页,重新加载列表,不恢复弹层。
版本和切片原独立入口在替代交互可用后退出菜单、route-map 与页面资源;保留所需业务组件和动作能力。迁移时同步处理历史收藏链接,提示入口已迁移并引导进入有权限的列表页,不静默猜测主题或打开任意 Tab。首期不增加统计首页,集成模式保留壳自己的首页。
# 4. 页面交互
# 4.1 知识内容
查询条件保留名称、知识键、分类、类型和启停状态;列表展示名称、分类、类型、当前生效版本和更新时间。名称打开版本管理抽屉,行操作使用“查看版本”“新增版本”。新建和编辑使用抽屉,只编辑名称、知识键、分类、类型、说明和业务状态。知识键展示简短用途说明,普通用户不需要理解表名或主键关系。
分类是组织级扁平分类,不建立树,也不承担权限或检索过滤。主题启停与版本发布状态分别展示。当前生效版本通过主题、发布选择和版本查询组合,优先使用现有批量条件并映射,避免逐行请求;若查询条件不支持,先明确接口补充范围,不虚构聚合能力。
停用不等同于下线或撤回。P0 须核对停用对检索、问答以及已有线上版本的实际影响,形成面向用户的说明并写入操作确认;核实前不得使用“立即停止所有线上使用”等承诺。首期无独立下线接口,错误知识的紧急撤回属于待补齐的产品能力,回滚仅适用于存在可用历史版本的情况,不能代替所有撤回场景。
# 4.2 版本管理抽屉
主题页打开大尺寸版本管理抽屉,顶部显示主题摘要和当前线上版本,中间展示版本列表,详情按内容、审核、处理结果组织。knowledgeId 通过组件参数传入,不要求用户填写 ID。
统一弹层约定:主题新建/编辑用抽屉;版本管理用大尺寸抽屉;版本新建/编辑用编辑弹窗;审核和任务详情用详情抽屉;发布/回滚用确认弹窗;切片放版本详情的只读页签。避免多层抽屉叠加,复杂内容在同一抽屉内切换列表和详情视图,返回列表保留筛选、分页与选中项。编辑弹窗打开时保留底层上下文,关闭时恢复焦点;明确关闭、返回、Esc 和遮罩点击行为,防止误关丢失输入。
每次打开弹层按 ID 查询最新数据,并校验与当前主题/版本的关系。无数据或无权限时显示明确结果,不使用旧行数据继续写操作。操作成功刷新弹层和所属列表;关闭、切换上下文时取消请求或忽略过期响应。
FILE 来源编辑版本号、文件、标签、优先级;FAQ 来源编辑版本号、标准问题、标准答案、标签、优先级。标签使用可搜索多选,显示名称、提交编码,不填写 JSON。机构、审计字段、存储路径、哈希、解析器、模型和索引状态不进入编辑表单。
| 实际版本状态 | 用户看到的状态及下一步 | 执行菜单 |
|---|---|---|
| DRAFT | 草稿:完善内容后提交审核 | 知识内容 |
| REVIEWING | 待审核:等待审核人员处理 | 内容审核 |
| APPROVED | 待处理:审核已通过,等待开始处理 | 知识处理列表,队列类型=待处理 |
| PROCESSING | 处理中:跟进进度 | 知识处理列表,队列类型=待执行 / 运行中 |
| PROCESS_FAILED | 处理失败:查看原因并重试关联任务 | 知识处理列表,队列类型=处理失败 |
| READY_TO_PUBLISH | 待发布:确认后发布 | 发布管理列表,视图类型=待发布 |
| PUBLISHED | 已发布:查看线上内容和验证效果 | 发布管理、效果验证 |
| DEPRECATED | 历史版本:需要时回滚 | 发布管理 |
该表描述流程和动作归属,不表示在版本抽屉重复提供所有动作。抽屉展示当前状态和下一步说明;没有相应操作权限时显示“等待有权限的人员处理”,不展示不可达的操作入口。跨菜单暂不支持定位时,明确目标菜单和可复制的知识名称、版本号;目标队列提供相应搜索条件,不要求用户记住内部 ID。
驳回回到草稿。已发布内容修改时新建草稿,首期不增加自动复制接口。数据库约束每主题仅有一个 DRAFT,重复创建时提示并引导打开已有草稿。
# 4.3 内容审核
默认查询 REVIEWING,采用待审列表加详情区域。FAQ 直接展示问题和答案;文件经受控下载后在本地查看,首期不实现在线预览。展示标签、优先级、审核意见。驳回意见必填,成功后刷新队列与详情。
审核通过提示“审核已通过,等待处理”,说明下一步在“知识处理”;审核驳回提示返回草稿并展示意见。提示按权限调整,不要求审核人员承担未授权的后续工作。
下载使用认证 HTTP 客户端接收二进制附件,读取服务端附件文件名,处理 JSON 错误响应并释放对象 URL。下载失败保留上下文,不使用上传者浏览器中的临时文件代替服务端原文。下载成功不等于审核完成。审核针对原文和标签,不增加 OCR 或切片人工审核。
# 4.4 知识处理与切片
知识处理采用与知识内容/内容审核一致的普通列表页(QueryForm + 表格 + 分页),不使用多页签。查询区提供「队列类型」必选筛选项,默认「待处理」;另支持知识名称、版本号定位。队列类型与数据源:
| 队列类型 | 数据源 | 条件 |
|---|---|---|
| 待处理 | 版本 page | revisionStatus=APPROVED |
| 待执行 | 任务 page | taskStatus=PENDING |
| 运行中 | 任务 page | taskStatus=RUNNING |
| 处理失败 | 任务 page | taskStatus=FAILED |
| 成功 | 任务 page | taskStatus=SUCCESS |
| 已取消 | 任务 page | taskStatus=CANCELED |
原「处理中」拆成「待执行 / 运行中」,以适配后端单值 taskStatus 分页,避免全量 list 后再前端过滤。待处理读取 APPROVED 版本,即使尚未产生任务也必须显示,可选择版本并开始处理。版本状态与任务状态分别展示,不将两者当成同一个字段。列表使用服务端分页;知识名称(及任务队列下的版本号)可本页过滤,过滤时 total 按本页结果计(与内容审核名称筛选策略一致)。
任务页移除手工新增、编辑、删除;展示知识名称、版本号、任务类型、状态、尝试次数、耗时、安全错误码和净化摘要。FAILED 提供重试,PENDING 提供取消;当前 RUNNING 协作取消尚未实现,不提供该动作。取消后以服务端返回的版本状态说明下一步,不假定自动回到待处理。处理成功且版本为 READY_TO_PUBLISH 时提示“处理完成,可在发布管理发布”,不自动发布。
队列类型为待执行或运行中时,每 5~10 秒刷新当前页任务及关联版本。以服务端状态为准,无真实百分比时只展示状态和耗时。实例 inactive 时暂停,重新激活后刷新,关闭或卸载时停止定时器并取消请求。不能只依赖 onUnmounted 或 Vue onDeactivated;须确认壳与子平台实际提供的激活通知并接入。
切片只读展示序号、标题路径、页码、Token 数和状态,默认限定版本。隐藏 sourceLocator、存储地址、哈希及内部处理输入。
# 4.5 发布管理
发布管理采用普通列表页(QueryForm + 表格 + 分页),不使用多页签。查询区提供「视图类型」必选筛选项,默认「待发布」;另支持知识名称、版本号定位。视图类型与数据源:待发布用版本 page(revisionStatus=READY_TO_PUBLISH),即使主题还没有发布选择记录也必须可见;线上内容用发布选择 page(releaseStatus=PUBLISHED)展示当前生效版本,并在详情抽屉查看可用历史版本。列表使用服务端分页;名称(及线上视图下的版本号)可本页过滤。发布、回滚确认框明确显示当前版本到目标版本及变更原因。完成后刷新发布选择、目标版本和相关列表,并提示通过“效果验证”检查结果;验证不等于再次发布。
首次发布必须先按 knowledgeId 查询发布选择记录;存在时直接使用,不存在时调用现有 save,仅提交初始化所需的 knowledgeId,取得 ID 后重新查询最新记录与 version,再读取目标版本并发布。不提供手工创建发布选择的通用表单,也不使用 save 更新线上状态。并发创建遇到明确的唯一性冲突后重新查询;超时或响应不确定时先查询确认结果,禁止盲目重复创建或自动重放发布。查询仍无记录时保留目标版本并提示重试;初始化成功而发布失败时保留已有记录,下次复用。
knowledge_release 只保存当前选择和最近一次发布信息,不能据此构造完整发布历史。历史版本列表仅展示有来源的字段,不以更新时间替代历史发布时间。不增加没有领域接口的下线按钮。
# 4.6 效果验证
效果验证采用普通表单页,不使用多页签,避免与 main-shell 工作区页签叠层。表单顶部提供「验证方式」必选下拉,默认「问答验证」,可切换「检索验证」;切换时清空上次结果。默认界面先展示问题输入、启用模板选择(仅问答)、回答和引用;标签匹配方式、topK 放入高级选项,原因码、得分等置于可展开的诊断区。检索模式展示命中证据,问答模式展示回答及依据;不把没有默认模板等配置错误当作无证据。原始得分不转换成未经定义的“置信度”。「开始验证」按当前方式分别挂静态权限 knowledge_search:answer / knowledge_search:retrieve。
问答选择启用模板并展示回答及可展开引用。模板编码不是模型名称;无证据时呈现服务端不可回答结果,不补造答案。核对启用 DEFAULT 模板的服务端要求。
# 4.7 知识设置
分类维护名称、编码、排序、状态、说明;标签维护名称、稳定编码、排序、状态、说明,创建后编码只读;回复模板维护编码、名称、提示词、状态、说明。模板使用较大的文本编辑区域,提示长度限制和启停影响,预览不得暗示已经调用模型。关联删除、唯一性等约束以服务端校验为准。
# 5. API 与并发契约
页面同目录 api.ts 负责传输,type.ts 定义最小 Payload;不把完整数据库对象作为编辑请求。save 返回 ID,ID 类型依据实际 JSON 序列化和精度策略统一,不默认 Java Long 可安全转为 number。
详情适配使用现有 list({ id }),要求恰好一条匹配记录;无记录或多条异常时停止后续操作,不构造默认对象。
文件流程:保存取得 revisionId → list 按 ID 查询取得 version → replace-file 上传 → 再查详情 → 用最新版本提交审核。保存成功而上传失败时保留 ID,只重试后续步骤,避免重复创建。
| 领域能力 | App 调用路径 |
|---|---|
| 上传 | POST /knowledge/knowledge_revision/{revisionId}/replace-file |
| 下载 | GET /knowledge/knowledge_revision/{revisionId}/source/download |
| 审核 | POST /knowledge/knowledge_revision/review/submit、approve、reject |
| 开始处理 | POST /knowledge/knowledge_task/process/{revisionId} |
| 重试、取消 | POST /knowledge/knowledge_task/retry、cancel |
| 发布、回滚 | POST /knowledge/knowledge_release/publish、rollback |
| 检索、问答 | POST /knowledge/knowledge/retrieve、/knowledge/knowledge/answer |
以上路径为 App 相对 /api 的调用路径。网关会剥掉服务前缀 knowledge,因此检索问答也要多一段,剥完后服务内才是 /knowledge/retrieve 与 /knowledge/answer。
审核和上传使用 expectedVersion;任务动作使用任务自己的版本;发布和回滚分别使用 expectedReleaseVersion、expectedRevisionVersion。并发冲突保留输入,刷新后提示重新操作,不自动重放写请求。页面不提交 organId 决定租户边界。
# 6. 双壳集成契约
两个壳均消费 /basis/authority/menus。业务菜单由平台配置和分配,不硬编码到壳的本地默认菜单。相同 knowledge-app 可配置到两套壳的授权入口,不复制页面。
| 字段 | 要求 |
|---|---|
| applicationCode | 与知识应用注册身份及 qiankun 注册名称一致;实施时核对实际值 |
| endpointUrl | 实际可访问的子应用入口,由部署和平台菜单提供 |
| contextPath / activeRule | 知识子应用路径,不使用壳自身 Context Path |
| linkPath | 子应用内部路径,例如 /knowledge_item |
| viewId | 壳分配的稳定视图身份 |
| instanceId | 实例唯一身份;迁移期 appKey 等于 instanceId |
集成界面复用壳导航、顶部栏和全局 Tab。详情与编辑在当前实例的弹层内完成,不触发路由变化、新全局 Tab 或菜单选中项变化。独立菜单间切换交给壳;首期不要求子应用发消息打开其他全局 Tab,不自行发明跨壳导航协议。
当前子应用路由同步仅发送 to.path,会丢失 query/hash。本期通过无上下文参数的菜单路由和弹层规避该依赖,不把修复完整 URL 同步作为本期必做改造;后续如增加参数路由,必须先补齐双壳完整路径传输、恢复与验收。
admin-shell 明确切换 Tab 仅标记 inactive,关闭才卸载。任务轮询、异步结果和临时文件必须按实例管理,避免主题、审核、任务多个入口互相覆盖。同一实例切换主题时取消旧请求或忽略过期响应。
集成认证走 Auth Bridge,Token 不进入 URL、菜单或公开 props;独立模式保留现有 SSO。样式采用公共 --g2-* 变量并验证明暗主题,不额外添加公开 theme props。两个壳显示不同菜单不等于后端具有不同授权能力。
main-shell 存在开发入口覆盖机制,admin-shell 当前使用菜单 endpointUrl;本地联调应分别配置并核查,不能假设一处覆盖对双壳同时生效。
# 未保存内容保护
编辑器按实例和编辑对象维护 dirty 状态。关闭弹层、Esc、遮罩关闭、切换编辑对象和离开业务视图时统一提示“继续编辑 / 放弃修改”;保存中禁止重复提交和误关闭,保存失败保留输入。成功保存后清除 dirty,销毁弹层后释放临时文件。
切换壳 Tab 不等于关闭:保留原实例弹层与输入,暂停后台轮询,返回时不覆盖未保存输入;发现服务端版本变化时提示冲突。全局 Tab 关闭、退出和壳导航能否在卸载前拦截,列为 P0 双壳接入门槛。支持时复用现有机制;不支持时先明确最小壳侧扩展方案并纳入实施范围,完成前不宣称未保存保护验收通过。浏览器刷新/关闭可在 dirty 时使用浏览器原生离开提示,但不依赖该提示保证数据持久化;首期不自动持久化 FAQ、提示词或文件到浏览器存储。
# 7. 权限与资源
页面资源、业务菜单、按钮资源分别管理。注册新页面到 route-map,并生成、Review、导入资源;不依赖生产动态 import 猜测路径。首页入口与服务端授权页面取交集。
| 范围 | 静态按钮权限 |
|---|---|
| 版本 | knowledge_revision:replace-file、download-source、submit-review |
| 审核 | knowledge_revision:review-approve、review-reject |
| 任务 | knowledge_task:process、retry、cancel |
| 发布 | knowledge_release:publish、rollback |
| 验证 | knowledge_search:retrieve、answer |
| 基础配置 | 保留对应 add/edit/delete,按实际查看入口补齐查看能力 |
上表同一行省略命名空间的动作均沿用该行命名空间。使用静态 v-permission 字符串,确保生成器能够采集;移除任务、切片和发布状态通用编辑入口时同步清理过时资源。
# 页面与动作资源归属
首期同一状态变更动作只设置一个执行入口,其他页面只提供有权限的只读信息,避免同一权限编码重复归属多个 pageCode:
| 页面资源 | 执行动作与弹层 | 只读数据依赖 |
|---|---|---|
| knowledge_item | 主题增改;版本创建、草稿编辑、替换文件、提交审核;版本管理抽屉 | 主题、版本、标签、分类、当前发布选择、切片摘要 |
| knowledge_review | 审核详情抽屉、原文件下载、通过、驳回 | 版本、主题摘要、标签 |
| knowledge_task(知识处理) | 待处理版本的开始处理、任务详情抽屉、重试、取消 | APPROVED 版本队列、任务、关联版本、主题摘要;按知识名称和版本号定位 |
| knowledge_release(发布管理) | 待发布队列、首次发布初始化、发布、回滚确认弹窗 | READY_TO_PUBLISH 版本、主题、发布选择、历史版本;首次发布前无选择记录也能发现待办 |
| knowledge_search | 检索、问答 | 启用标签、启用模板、服务端证据 |
| 三个基础配置页面 | 各自 CRUD | 各自字典或模板数据 |
版本抽屉仅展示处理与发布状态,不重复执行审核、处理和发布。上述动作权限分别归属执行入口的 pageCode,knowledge_revision:* 可归属 knowledge_item 页面;命名空间不强制等于 pageCode。版本与切片作为嵌入能力保留相应数据访问授权,不为此强制保留独立页面资源。
只具有审核权限的用户应能读取审核所需版本、主题摘要、标签和原文件,无需获得主题编辑权限;其他角色同理按数据依赖授权。pageElements 的 pageCode 归属不自动提供 API 权限。P0 必须以生成器实际输出验证命名空间、pageCode、弹层子组件扫描和唯一编码;若工具只按命名空间推断归属或不能扫描组件,先明确工具调整方案,不生成重复编码或手工长期维护两套事实来源。
动作可用性由授权、业务状态、请求状态共同决定。现有指令会修改 DOM disabled,实施时避免其覆盖组件业务禁用状态,同时在处理函数复核前提。
当前前端 hasApiPermission 直接返回 true,build-config 的 apiEndpoints 为空;菜单隐藏不构成后端授权。细粒度限制须结合平台与 Gateway 验证,不在 knowledge 服务另建与现有边界冲突的权限体系。
# 8. 实施计划与验收
| 阶段 | 范围 | 完成标准 |
|---|---|---|
| P0 契约及双壳基线 | 保存 ID、详情适配、ID 精度、枚举、Gateway 路径、下载、首次发布、停用影响;待办查询与名称/版本定位、弹层、权限生成归属、激活通知及关闭前拦截 | 交付接口契约表、双壳接入契约、页面/动作/数据授权矩阵、首次发布时序和验收用例;明确停用语义与紧急撤回缺口,未支持的壳契约有明确实施范围 |
| P1 基础配置与主题 | 分类、标签、模板、主题与首批资源 | 无需填写机构或内部字段即可完成基础维护 |
| P2 版本及审核 | FILE/FAQ 草稿、上传下载、标签、审核 | 两类来源都能完成审核闭环;冲突和上传失败可恢复 |
| P3 处理及发布 | 任务、轮询、重试取消、切片、发布回滚 | 审核内容可处理发布,历史版本可回滚,inactive 停止轮询 |
| P4 效果验证 | 检索、问答、引用 | 可验证当前生效知识命中与证据,无证据正确拒答 |
| P5 反馈及运营 | 明确反馈处理契约后补页,再评估统计 | 反馈到知识修订形成闭环,不将任意 CRUD 当作已确认业务流程 |
每阶段同步菜单、route-map、资源、文档,在两个壳和独立模式分别验证。必要验证包括无权限、可见但禁用、业务禁用、重复点击、无记录、版本冲突、下载失败、保存后上传失败、首次发布初始化及并发恢复、任务失败、切 Tab、关闭 Tab、多实例、历史链接迁移和刷新返回列表。弹层打开不改变 URL,切 Tab 保留输入,刷新不恢复弹层;关闭 dirty 弹层或全局 Tab 必须按约定确认。主题/版本当前生效关系必须以服务端结果为准。
产品验收额外覆盖:各职责用户看到的菜单集合及首个授权入口;无权限分组隐藏且菜单顺序稳定;无任务的 APPROVED 版本出现在待处理;无发布选择的 READY_TO_PUBLISH 版本出现在待发布;每步成功后可根据名称和版本号在下一菜单找到同一内容;空待办、加载失败、无权限有不同反馈;效果验证默认无需理解检索参数即可使用。待办与名称查询优先组合现有接口,明确缺失条件后再登记接口补充,不用全租户无界全量拉取替代查询能力。
源码实施后执行 npm run build;路由或静态权限变更执行 npm run build:config 并 Review。构建成功不等于联调通过,真实 MySQL、文件存储、Docling、Embedding、Milvus、Rerank、模型及 Gateway 的验证结果分别记录。
生成器可能覆盖手写页面,后续运行前检查 Git 状态、使用临时输入验证并逐项 Review。沿用 views → runtime → platform → components → shared,业务公共逻辑通过稳定入口复用,不扩大已登记反向依赖。
# 9. 本次交付边界
本次只形成方案文档,不修改页面、路由、权限资源、数据库或壳实现,不执行资源生成和生产构建。推荐实施首批为 P0 + P1。