tasks.md 5.2 KB

1. 版本解析工具扩展(utils/version.ts)

  • 1.1 新增导出 VERSION_FILE_RAW(VERSION.md 原文,取自 __APP_VERSION_FILE__,为空时返回空串)
  • 1.2 新增 suggestNextVersion(date?: string, logs?: VersionLog[]):按 v + YYYY.MM.DD + 当日最大序列号+1 推算下一个版本号(当天无记录为 01,历史为空为 v<今天>.01)
  • 1.2a VersionLog 增加 publisher(发布人)与 modules: string[](影响模块)字段;解析版本段落中的 - 发布人:X、- 影响模块:A、B(分隔符支持 、 / , / ,),为空时字段为空串/空数组
  • 1.3 新增 buildVersionFile({ version, date, desc, publisher, modules, groups }):用新三行替换 CURRENT_VERSION_START/END 之间内容;在 <!-- CHANGELOG_START --> 之后插入新版本段落(含 - 发布人:、- 影响模块:,值为空则省略该行);其余原文原样保留
  • 1.3a 新增 buildVersionSection(...):仅生成新增版本段落文本,供「下载新增片段」使用
  • 1.4 buildVersionFile 增加标记区存在性校验:缺失时抛出明确中文错误,供页面降级为"仅生成片段"
  • 1.5 保留既有导出 APP_VERSION / APP_VERSION_DATE / APP_VERSION_DESC / VERSION_LOGS / CURRENT_VERSION_LOG,解析行为不变

2. 新增「版本更新维护」页面(pages/System/VersionMaintenance.tsx)

  • 2.1 页面骨架:Card + 顶部当前版本信息(Descriptions,3 列,labelStyle={{ width: 100 }})+ 常驻生效提示 Alert("版本号来源于项目根目录 VERSION.md,替换文件后需重新打包生效")
  • 2.2 历史版本列表:按版本号倒序展示,使用 Collapse 展开显示「新增 / 优化 / 修复」条目与发布人、影响模块;条目为"无"的分类隐藏;无记录时 Empty 空状态
  • 2.3 「新增版本」按钮 + Modal 表单:版本号(自动预填 suggestNextVersion(),可编辑)、更新日期(DatePicker 中文:import 'dayjs/locale/zh-cn'; dayjs.locale('zh-cn') + locale={zhCN} + format="YYYY年MM月DD日",改动日期时重算版本号)、版本说明(Input)
  • 2.3a 表单新增「发布人」(Input,默认当前登录用户 localStorage.userInfo.userName,可改)与「影响模块」(Select mode="tags",预置 DRG分组/DIP付费/医保控费预警/盈亏分析/基础数据/HIS数据/特例单议/系统管理/接口服务/其它,允许自由输入)
  • 2.4 更新内容录入:三类(新增/优化/修复)各一组 Form.List,支持"添加一条"/删除,条目过滤空值与"无"
  • 2.5 提交校验:版本号必填、三类内容不可全空、版本号不得与历史重复(重复/为空时 message.warning 拦截)
  • 2.6 提交后生成结果区:只读预览(<pre> 固定高度滚动)+「复制全文」「下载 VERSION.md」「下载新增片段」三个按钮
  • 2.7 下载实现:Blob + a.download(纯前端零依赖),文件 UTF-8;复制优先 navigator.clipboard,失败降级 document.execCommand('copy');成功/失败均 message 提示
  • 2.8 antd v6 规范:不使用 Select.Option 子组件(用 options 属性)、Modal 用 destroyOnHidden、日期组件中文本地化

3. 路由与菜单注册

  • 3.1 frontend/src/routes/menuRoutes.ts:keyToPath 新增 'system-version': '/system/version';menuTitleMap 新增 'system-version': '版本更新维护'
  • 3.2 frontend/src/routes/menuRouteRegistry.tsx:导入 VersionMaintenance(../pages/System/VersionMaintenance),MENU_RENDERERS 新增 'system-version': () => <VersionMaintenance />
  • 3.3 本地 npm run dev 验证:控制台 [menuRoutes] 一致性校验通过,无 system-version 缺失告警;点击菜单可打开页面、URL 归一到 #/system/version

4. BS_DrgSystemMenu 菜单配置(在「菜单配置」页「编辑菜单」弹窗中新增)

  • 4.1 菜单编码:system-version
  • 4.2 菜单名称:版本更新维护
  • 4.3 上级菜单:系统管理(与「菜单配置」system-menu 同级)
  • 4.4 排序号:置于系统管理末位(如现有最大排序号 + 1)
  • 4.5 菜单图标:HistoryOutlined(或 TagsOutlined)
  • 4.6 状态:启用
  • 4.7 菜单路径-路由:/system/version
  • 4.8 在「角色权限/角色管理」中把该菜单授权给需要使用的角色

5. 验证与发布

  • 5.1 页面验证:当前版本卡片(含发布人、影响模块)与左侧导航底部版本号一致;历史记录倒序且明细完整
  • 5.2 录入验证:自动推算版本号正确(同日 +1 / 跨天归 01);改日期重算;发布人默认当前用户;空内容与重复版本号被拦截
  • 5.3 产物验证:下载/复制得到的文本包含① 区新三行与② 区顶部新段落(含 - 发布人:、- 影响模块:),标记行完整、历史内容未被破坏(已用脚本验证 v2026.09.14.02 生成结果正确)
  • 5.4 端到端验证:用生成内容覆盖根目录 VERSION.md → npm run build → 导航栏版本号更新为新版
  • 5.5 打包部署:npm run build 后部署 dist 到生产目录(E:\DRG\dist)