spec.md 6.0 KB

ADDED Requirements

Requirement: 展示当前版本信息

系统 SHALL 在「版本更新维护」页面顶部展示当前版本信息(版本号、更新日期、版本说明、发布人、影响模块),数据 MUST 与导航栏版本号同源(均来自根目录 VERSION.md 的「① 当前版本信息」区与对应版本段落)。

Scenario: 正常展示当前版本

  • WHEN 用户打开「版本更新维护」页面
  • THEN 页面展示当前版本号、更新日期、版本说明,以及该版本段落中的发布人、影响模块,版本号与左侧导航底部显示一致

Scenario: 发布人与影响模块为空

  • WHEN 当前版本段落未写「发布人」或「影响模块」
  • THEN 对应项 MUST 隐藏(不显示空值或占位"-"以外的内容)

Scenario: 版本号缺失兜底

  • WHEN VERSION.md 的「① 当前版本信息」区为空或解析不到版本号
  • THEN 页面展示"未获取到版本信息"提示,且不得报错白屏

Requirement: 查看历史版本更新内容

系统 SHALL 按版本号倒序(最新在最上)展示 VERSION.md「② 版本更新内容」区中所有版本的更新明细,并按「新增 / 优化 / 修复」分类显示。

Scenario: 展开查看某版本明细

  • WHEN 用户在历史版本列表中展开某个版本
  • THEN 该版本的「新增 / 优化 / 修复」条目全部列出,并显示该版本的发布人与影响模块;条目为"无"的分类 MUST 被隐藏而不显示为"无"

Scenario: 无历史记录

  • WHEN 「② 版本更新内容」区没有任何版本记录
  • THEN 列表区域展示"暂无版本更新记录"空状态

Requirement: 录入新版本更新内容

系统 SHALL 提供「新增版本」表单,允许录入版本号、更新日期、版本说明、发布人、影响模块与「新增 / 优化 / 修复」三类更新条目(每类支持动态增删多条)。

Scenario: 发布人默认当前登录用户

  • WHEN 用户打开「新增版本」弹窗
  • THEN 「发布人」MUST 默认填充当前登录用户的用户名,且允许修改

Scenario: 影响模块多选与自由输入

  • WHEN 用户填写「影响模块」
  • THEN 可从预置模块(DRG分组 / DIP付费 / 医保控费预警 / 盈亏分析 / 基础数据 / HIS数据 / 特例单议 / 系统管理 / 接口服务 / 其它)中多选,也 MUST 允许输入列表外的模块名

Scenario: 自动推算下一个版本号

  • WHEN 用户打开「新增版本」弹窗
  • THEN 版本号 MUST 自动填充为 v + 今天日期(YYYY.MM.DD)+ 当日已有最大序列号 + 1(当天无记录则为 01)

Scenario: 修改日期后重算版本号

  • WHEN 用户修改「更新日期」
  • THEN 版本号 MUST 同步重算为 v + 所选日期 + 该日已有最大序列号 + 1

Scenario: 动态增删更新条目

  • WHEN 用户在某一分类下点击"添加一条"或删除某条
  • THEN 该分类下输入项相应增加/减少,允许只填写部分分类

Scenario: 空内容拦截

  • WHEN 用户提交时版本号为空,或三类更新内容全部为空
  • THEN 系统 MUST 拦截提交并给出中文提示,不生成 Markdown

Scenario: 版本号重复拦截

  • WHEN 用户提交的版本号在历史记录中已存在
  • THEN 系统 MUST 拦截提交并提示"版本号已存在"

Requirement: 生成并输出 VERSION.md 内容

系统 SHALL 根据表单内容生成符合规范的 Markdown:① 用新版本信息替换「① 当前版本信息」区三行;② 将新版本段落(含 - 发布人:、- 影响模块: 两行,值为空时省略)插入到「② 版本更新内容」区最顶部;其余原文 MUST 原样保留。

Scenario: 生成含发布人与影响模块的段落

  • WHEN 用户填写了发布人与影响模块并提交
  • THEN 生成的新版本段落标题下 MUST 依次包含 - 发布人:<值> 与 - 影响模块:<值1>、<值2> 两行,再输出 ### 新增 等分类

Scenario: 生成完整文件并提供复制

  • WHEN 用户提交新增版本表单
  • THEN 系统生成完整 VERSION.md 文本并展示预览,提供「复制全文」按钮,复制成功后提示"已复制"

Scenario: 下载完整 VERSION.md

  • WHEN 用户点击「下载 VERSION.md」
  • THEN 浏览器下载 VERSION.md 文件(UTF-8,内容为生成的完整文本),提示操作成功

Scenario: 仅下载新增片段

  • WHEN 用户点击「下载新增片段」
  • THEN 浏览器下载仅含本次新增版本段落的 Markdown 片段文件,供手动粘贴到 VERSION.md

Scenario: 标记区缺失降级

  • WHEN VERSION.md 原文缺少 CURRENT_VERSION_START/END 或 CHANGELOG_START/END 标记
  • THEN 系统 MUST 提示"版本文件标记区缺失,请检查 VERSION.md",并降级为仅生成新增版本片段供人工粘贴

Requirement: 页面生效提示

系统 SHALL 在页面显著位置提示:生成的内容需覆盖项目根目录 VERSION.md 并重新打包(npm run build)后,导航栏版本号才会更新。

Scenario: 展示生效提示

  • WHEN 用户查看「版本更新维护」页面
  • THEN 页面常驻提示"版本号来源于项目根目录 VERSION.md,替换文件后需重新打包生效"

Requirement: 菜单与路由注册

系统 SHALL 注册菜单 key system-version(标题「版本更新维护」,路径 /system/version),并在 keyToPath、menuTitleMap、MENU_RENDERERS 三处同时登记,dev 启动时三处一致性校验 MUST 通过。

Scenario: 通过菜单打开页面

  • WHEN 用户在左侧导航点击「版本更新维护」
  • THEN 页面正常渲染,URL 归一到 #/system/version,顶部 Header 与 Tab 标题显示「版本更新维护」

Scenario: 三处一致性校验通过

  • WHEN dev 模式启动
  • THEN validateMenuRoutes() 不输出 system-version 相关的缺失告警