Skip to content

v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Nov 09:56
· 77 commits to main since this release
2871256

这一版的主要内容

1.0 之后第一个功能版本。主角是数据变更审计:谁、什么时候、从哪来,把哪个对象的哪个字段从什么改成了什么。兼容承诺没有破坏(镜像改名期间新旧两个名字都推)。

数据变更审计(#260 · #281)

  • 字段级前后对比,在会话层统一拦截,不靠各写路径自己记(#262)
  • 接入的对象:用户(含二次验证、第三方账号)· 部门 · 角色 · 菜单 · 参数配置 · 开放应用 / Webhook 端点 · 群机器人 / 通知策略 · 短信配置 · 存储 · 模型密钥 / MCP 凭据 · 数据范围 / 规则 · 定时任务 · 字典 · 流程定义(#262 · #267 · #284 · #286 · #291)
  • 密钥、令牌、Webhook 地址这类只记「改过」,不记值
  • 各页行操作里的「变更记录」抽屉 · 「日志管理 → 数据变更」页(按对象 / 操作人 / 来源 / 字段 / 时间筛)· 单字段历史 · 导出 · 和操作日志按请求互跳(#262 · #271 · #280)
  • 防篡改链:每行带序号和签名,超管可「校验完整性」,配 DATA_CHANGE_CHAIN_KEY 后防得住能改库的人(#271 · #278)
  • AI 助手能查变更记录(「谁改了张伟的部门」)(#272)

安全

  • 操作日志漏打码的凭据(#283):参数配置里像密钥的那几行(如 EMAIL_PASSWORD)、批量保存的请求体、登录 / 刷新响应里的 access_token、模型密钥的 api_key 等原来会原样进操作日志。现在一律打码,并加了守卫扫全部接口的字段名;迁移会清掉已经写进去的旧记录
  • 短信配置的凭据不能再从 options 绕进库,已经存进去的由迁移删掉(#284)
  • 登录日志记下「账号被锁」「IP 被锁」「被强制下线」(#273 · #275)
  • 按上游 FBA 补的四处:连接串密码、操作日志关停丢批、IPv6 属地、热重载锁(#277)
  • 依赖安全告警清零:桌面端 Electron 升到 42.11.18(装进安装包的运行时)· Pillow 13 / tornado 6.6 等 · 前端单测换 vitest 4 · Expo SDK 57 补丁版(#294)

其他

  • 登录 / 操作日志默认保留期 30 天 → 180 天(《网络安全法》六个月下限)(#261 · #282)
  • 写接口的事务在响应发出之前提交(#268)
  • 日期选择:跳年月、草稿、区间重选、时间滚动列、手输、按月按年(#269 · #274)
  • 从抽屉 / 菜单里的链接跳去别的页签,浮层不再残留(#280)
  • AI 对话落库、Redis 重启后限流 500、macOS 开发环境 beat 崩溃等修复(#263 · #279)
  • fba init 在最后提交时报「雪花算法未初始化」、整条回滚 —— 快速开始第一步就失败;pnpm db:reset 的向导里填了别的 Redis 时同样失败。CI 现在对新库补跑一遍 fba init(#292 · #296)
  • 移动端审批:办理失败(别人先办了)时面板和原因不再一起消失 · 服务端没装审批插件时首页不再一直报错 · 发起页的流程预告改成对发起人说话(#258)
  • 文档站:19 个功能页(每页配截图)· 开发者工具页 · 侧边栏按领域分组(#285)

升级说明

  • 数据库迁移:照常 pnpm db:upgrade,或者让 compose 里的 migrate 服务自动跑。其中两条会改写旧数据:清理操作日志里漏打码的凭据(aq000000operalogsecret,逐行提交、可重复跑)、删掉短信配置 options 里混进去的凭据(ar000000smsoptcreds)
  • 🔴 建议升级后更换 SMTP 授权码和模型的 API Key:迁移清得掉表里的记录,清不掉已经导出、备份或被人看过的。访问令牌会自己过期,不用管
  • 日志保留期默认改成 180 天,日志表会比原来大(本机实测操作日志平均每条约 2 KB)。管理员自己调过天数的不受影响
  • 想让防篡改链防得住能改库的人,在 .env 配 DATA_CHANGE_CHAIN_KEY(不配也能用,只防手滑改库)
  • 镜像名改成 fra-api / fra-web,1.1.x 期间旧名字 fba-api / fba-web 照常推送
  • 🔴 后端不再支持 Python 3.10,最低 3.11(官方镜像和 CI 一直是 3.13,不受影响;自己在 3.10 上跑的要先升 Python)。从上游带过来的 apps/api/Dockerfile 基础镜像也换成了 3.13

桌面客户端

fastapi-react-admin 的桌面客户端 —— 把 web 后台装进 Electron 外壳,
提供浏览器给不了的四件事:静默打印、本地硬件、凭据托管、自动更新。
后台本身(页面、权限、多页签)和浏览器版是同一份代码。

下哪个

平台 文件 说明
Windows 10/11 x64 admin-desktop-<版本>-setup.exe NSIS 安装向导,装到当前用户(%LOCALAPPDATA%\Programs),不需要管理员
macOS Apple Silicon ...-arm64.dmg M1 及以后
macOS Intel ...-x64.dmg(文件名不带 arm64)
Linux x64 ...-x86_64.AppImage chmod +x 后直接运行,不用装

.blockmap 与 latest*.yml 是自动更新用的,人不需要下载。

装完第一件事:填后端地址

首次启动会让你填服务器地址(如 https://admin.example.com)。它是运行期配置,
存在用户目录里 —— 所以同一个安装包可以连不同环境,不用为每个环境各打一版。

已知限制(都是刻意的取舍,不是漏做)

  • 🔴 所有平台的包都没有代码签名。
    • Windows:SmartScreen 会拦一次 →「更多信息」→「仍要运行」
    • macOS:Gatekeeper 会说**「已损坏,应移到废纸篓」**。这不是包坏了,是没有公证:
      右键 →「打开」,或者 xattr -dr com.apple.quarantine /Applications/Admin\ Desktop.app
    • Linux:AppImage 不需要签名
    • 想去掉这些提示:Windows 侧有面向开源项目的免费证书方案(SignPath Foundation),
      macOS 侧没有免费路,需要 Apple Developer Program($99/年)
  • 🔴 macOS 上的自动更新不工作(未签名)。electron-updater 要校验运行中应用的代码签名,
    拿不到就拒绝安装更新。Windows 与 Linux(AppImage) 的自动更新正常
  • 读卡器等本地硬件是桩模式:厂商的原生助手不在仓库里(那是现场的东西),
    所以这个包里没有。界面上相关功能会走模拟数据
  • 打印:Windows 上是真的静默打印;macOS/Linux 上打印链路能跑,但没有在真机标签机上验过

更新从哪来

默认读这个仓库的 Release。内网部署(客户出不去公网)可以在客户机的 config.json 里
填 updateUrl,指向自己的静态目录 —— 不用为内网单独打一版。


What's Changed

  • fix(mobile): 审批评审的四条 —— 409 后面板不消失 · 没装插件不报错 · 发起页预告对发起人说话 · 规则两端共用一份(#257) by @ita201125 in #258
  • docs: README 照 vben / Ant Design Pro 的写法 —— 顶部加语言切换行 by @yilecoding in #259
  • fix: AI 对话落库 · Redis 重启后限流 500 · Windows 开发流程 · 删除弹窗 · 审批系统意见多语言 by @ita201125 in #263
  • feat: 数据变更审计 —— 谁、什么时候、从哪来,把哪个字段从什么改成了什么(#260) by @yilecoding in #262
  • fix(ui): 日历能跳年月、能选明年、跟界面语言 —— «‹ 年 月 ›» 表头 + 年/月面板(#264 #265) by @ita201125 in #269
  • chore(gitignore): .claude/ 只放行技能 / 子代理 / 命令,本机配置不进仓库 by @ita201125 in #270
  • feat(audit): 数据变更审计二期 —— 用户的二次验证 · 第三方账号(#260) by @yilecoding in #267
  • fix(db): 写接口的事务在响应发出之前提交 by @yilecoding in #268
  • feat(audit): 数据变更审计二期 —— 单字段历史 · 导出 · 防篡改链(#260) by @yilecoding in #271
  • chore(deploy): 镜像改名 fba-api / fba-web → fra-api / fra-web,1.1.x 期间两个名字都推 by @yilecoding in #276
  • feat(ai): AI 助手查数据变更记录 —— 「谁改了张伟的部门」(#260) by @yilecoding in #272
  • fix(audit): 防篡改链按评审修(#271 合并时这个提交还没进去) by @yilecoding in #278
  • feat(auth): 登录日志记下「账号被锁」「IP 被锁」「被强制下线」(#273) by @yilecoding in #275
  • fix(api): 按上游 FBA 54 个提交审下来要补的 4 处 —— 连接串密码 · 操作日志关停丢批 · IPv6 属地 · 热重载锁 by @yilecoding in #277
  • feat(ui): 日期选择补齐草稿 / 区间重选 / 时间滚动列 / 手输 / 按月按年(#266 的 P2+P3) by @ita201125 in #274
  • fix: 修复 macOS 开发环境 Beat 启动崩溃 by @yilecoding in #279
  • fix(platform): 从抽屉 / 菜单里的链接跳去别的页签,浮层跟着走掉 by @yilecoding in #280
  • fix(task): 登录 / 操作日志默认保留 30 天 → 180 天(网络安全法的六个月下限) by @yilecoding in #282
  • fix(api): 操作日志漏打码的凭据 —— 参数配置的 value · 列表请求体 · access_token / api_key 等 · 迁移清理旧记录 by @yilecoding in #283
  • feat(audit): 数据变更审计接入带密钥的对象 —— 开放应用 · Webhook · 群机器人 · 短信 · 存储 · 模型密钥 · MCP 凭据(#281 第一批) by @yilecoding in #284
  • docs(site): 功能页第一批 —— 登录与安全样板页 · 侧边栏按领域分组 · 总览对齐 README · 源码链接进闸门(#285) by @yilecoding in #287
  • docs(site): 功能页第二批 —— 导入导出 · 用户角色部门菜单 · 日志与审计三个新页 + 五个旧页补界面入口与开关(#285) by @yilecoding in #288
  • docs(site): 功能页第三批 —— 工作台 · 定时任务 · 监控 · 插件 · 参数配置与字典五个新页 + 剩余旧页补全(#285) by @yilecoding in #289
  • docs(site): 开发者工具页 + 更正「接口对不上类型检查就报错」的对外说法(#285) by @yilecoding in #290
  • docs(site): 功能页首图 —— 19 个功能页都配上截图(#285 最后一项) by @yilecoding in #293
  • feat(audit): 数据变更审计接入数据权限 · 通知策略(#281 第二批) by @yilecoding in #286
  • feat(audit): 数据变更审计接入定时任务 · 字典 · 流程定义(#281 第三批) by @yilecoding in #291
  • chore(deps): 依赖安全告警一次清掉 —— Python 下限 3.11 · electron · vitest 4 · Expo 补丁版(#294) by @yilecoding in #295
  • fix(cli): fba init 提交时报「雪花算法未初始化」整条回滚 —— 快速开始第一步失败 · CI 补跑 fba init by @yilecoding in #292
  • fix(cli): #292 评审 —— 雪花节点包在事务外 · --auto 用新填的 Redis · 自增模式不占 · 释放失败不冒 by @yilecoding in #296

Full Changelog: v1.0.1...v1.1.0