☰
Actual Budget 25.9.0 版本解析:移动端规则管理、Pluggy.ai 银行连接与自动化后端落地
2026/9/27 6:02:53 网站建设 项目流程

Actual Budget 25.9.0 版本解析:移动端规则管理、Pluggy.ai 银行连接与自动化后端落地

【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual

Actual 25.9.0 是 Actual Budget(本地优先的个人理财应用)在 2025 年 9 月发布的稳定版本,核心围绕三大能力展开:为移动端补齐规则(Rules)页面并提供独立编辑页、在报表中显示实验性预算货币、正式发布实验性的 Pluggy.ai 银行连接器。本文基于 官方 25.9.0 发布说明 展开,并结合仓库源码(desktop-client、loot-core、sync-server)逐项剖析新特性、增强与修复的底层实现,帮助读者理解每个功能的落地位置与使用方式。

版本概览与升级方式

本版本对应的 Docker 标签为25.9.0,发布说明明确该版本包含若干新功能与大量修复。升级时按仓库根目录的 Dockerfile 与 docker-compose.yml 构建或拉取25.9.0镜像即可;自托管用户也可直接使用actualbudget/actual-server:25.9.0镜像(在 sync-server 目录下同样提供了 docker-compose.yml 与 Ubuntu/Alpine 两套 Dockerfile)。

核心新特性

1. 移动端规则页面:查看、管理、编辑一体化

自 25.9.0 起,Actual 在移动端正式提供了规则(Rules)页面,用户可以在手机上查看、筛选、创建、编辑和删除规则。这一系列改动由多个 PR 组成:

  • #5390:新增移动端规则页面,用于在移动设备上查看和管理规则;
  • #5516:将移动端规则编辑抽取为独立页面,优化导航体验;
  • #5556:移动端规则编辑支持通过确认弹窗删除规则;
  • #5587:移动端新建规则的默认阶段由pre改为default。

从源码看,移动端规则列表页面位于 packages/desktop-client/src/components/mobile/rules/MobileRulesPage.tsx,其核心流程为:

  • 通过send('rules-get')拉取全部规则,并监听undo-event在撤销后自动刷新列表;
  • 支持按文本过滤(内部使用getNormalisedString归一化后匹配ruleToString生成的描述文本);
  • 列表会过滤掉已完成(completed)的排期关联规则;
  • 点击规则跳转到/rules/{rule.id}编辑页(MobileRuleEditPage.tsx);
  • 删除规则调用rule-delete-all,若规则与排期关联导致删除失败,会弹出 warning 通知;成功删除则展示可撤销(Undo)提示。

配套的 UI 组件还包括 AddRuleButton.tsx、RulesList.tsx 与 RulesListItem.tsx。

在桌面端,#5543),为移动端独立编辑页提供了组件基础。

2. 报表页面显示实验性预算货币

#5283 为报表(Reports)页面增加了货币显示能力,使实验性预算(experimental budget)中的货币得以展示。该功能与实验性功能开关联动,用户需先在设置中启用相关实验选项,报表才会体现对应的货币单位。

3. 正式发布实验性 Pluggy.ai 银行连接器

#5628 将 Pluggy.ai 银行同步集成正式纳入实验性发布。Pluggy.ai 是面向拉丁美洲金融市场的银行连接服务,作为 GoCardless 之外的又一银行数据源选项。

从 sync-server 源码可以看到完整的服务端接入:

  • 路由挂载于/pluggyai,见 sync-server/src/app.ts(app.use('/pluggyai', pluggai.handlers));
  • 处理器实现位于 app-pluggyai/app-pluggyai.js,提供三个接口:
    • POST /pluggyai/status:返回当前凭据来源(per-budget-file/global/ 未配置);
    • POST /pluggyai/accounts:按 itemId 拉取账户列表;
    • POST /pluggyai/transactions:按账户与起始日期拉取交易,区分已入账(booked)与待处理(pending)交易,并计算起始余额。
  • SDK 封装位于 pluggyai-service.js,基于pluggy-sdk的PluggyClient实现,凭据通过 secrets-service.js 存储,支持"全局"与"按预算文件"两种凭据作用域。

代码中还有若干细节值得注意:

  • 信用卡(CREDIT)账户的金额会做符号反转(trans.amount *= -1),起始余额同样取负;
  • 信用卡分期(installment)交易会通过addMonthsClamped按分期期数修正交易日期,避免 31 日加月跳月的边界问题;
  • Pluggy 沙箱数据(账户 owner 为John Doe)会将起始日期强制设为2000-01-01以便拉取全部历史数据。

需要说明的是,Pluggy.ai 连接器目前仍为实验性功能,其可用性、机构覆盖范围与稳定程度以官方后续发布为准;在使用前请确认你的银行机构是否在 Pluggy 覆盖范围内。

4. 自动化的后端基础与 UI 连接

25.9.0 还为预算自动化(Automations)功能埋下了地基:

  • #5532 增加支持自动化 UI 的后端逻辑;
  • #5533 将自动化 UI 与后端打通。

从源码看,loot-core 侧暴露了budget/get-category-automations与budget/set-category-automations两个方法(见 loot-core/src/server/budget/app.ts),分别对应goalActions.getTemplatesForCategory与goalActions.storeTemplates;桌面端则在 BudgetAutomationsModal 目录下实现了完整的自动化编辑界面(AutomationEditorPane、AutomationListRow、CleanupListRow、ConflictBanner 等),并配套 BudgetAutomationsModal.test.ts 测试。该功能同样属于实验性范畴,需在设置中开启后使用。

增强项解读

25.9.0 包含多项面向使用体验的增强:

  • 报表时间范围:#5419,通过getLiveRange以priorYearToDate模式计算范围,与已有的 "Year to date"、"Last month"、"Current quarter" 等预设并列展示在报表日期范围选择器中。
  • 排期相关:#5482 在即将到来的交易(upcoming transactions)备注中显示排期名称;#5580 将其限定为仅在即将到来的交易中展示。
  • 对账体验:#5521 对账窗口同时展示绝对日期(如08/08/2025)与相对日期(如3 days ago);#5528 修复了对账窗口中的数学计算错误(Bug #5527)。
  • 余额历史图开关:#5452 为侧边栏账户悬停提示中的余额历史图新增显隐开关。
  • 银行同步细节:#5458 银行同步页面对最近一次同步时间提供更详细的悬停提示;#5479 新增瑞典银行 Länsförsäkringar(有限历史)的 GoCardless 解析支持;#5383 为慕尼黑 Stadtsparkasse 的 GoCardless 交易解析补充了交易信息到备注。
  • 货币扩展:新增卡塔尔里亚尔(#5456)、波兰兹罗提(#5472)、瑞典克朗与土耳其里拉(#5477)、印度卢比(#5483)、菲律宾比索(#5507)。
  • 导入:#5461 支持从 nYNAB 导入分类备注。
  • 移动端:#5605 预算横幅显示未分类/超支总额;#5607 移动端友好的 DateSelect 组件;#5604 子交易支持 "Make Transfer" 菜单;#5574 提升标签(tags)可读性。
  • 工具提示:#5475 为 Tooltip 组件增加可配置的关闭延迟。

重要修复一览

发布说明列出了数十项 Bug 修复,按主题归纳如下:

移动端:

  • #5072 修复多账户视图中预览交易不加载、未分类拆分交易不加载的问题;
  • #5415 修复移动端交易钩子与交易加载体验;
  • #5126 通过 AutoTextSize 增强移动预算表格的响应式文本缩放;
  • #5589 移动端未分类交易视图隐藏转账交易;
  • #5429 修复移动导航的响应式布局以适配更长文本/翻译。

规则与排期:

  • #5529 修复 "link schedules" 条件的显示;
  • #5600 补充规则页面对排期的描述条件;
  • #5406 排期日期选择中 "add specific days" 换行并动态调整数字输入宽度;
  • #5519 修复日期失焦导致其他按钮全部禁用的问题。

报表与预算:

  • #5520 修复汇总报表中负数显示;
  • #5495 修复实时报表日期模式不支持两个月窗口的问题;
  • #5573 修复日历报表卡片渲染循环;
  • #5608 修复按金额过滤时崩溃;
  • #5526 修复交易表中偶尔选中隐藏分类的问题;
  • #5496 当 "to budget" 为负时隐藏 "hold for next month" 选项;
  • #5594 修复部分堆叠模板条件下 by template 计算不正确的问题;
  • #5541 修复 SpendingCard 崩溃。

账户与交易:

  • #5462 阻止账户关闭到自身;
  • #5438 允许基于已关闭账户的转账收款人进行过滤;
  • #5485 与 #5523 修复合并时旧收款人名称显示;
  • #5460 自定义映射字段缺失时收款人回退到默认值;
  • #5418 收款人列超长名称用省略号截断防溢出;
  • #5464 移除批量前置/追加备注时自动添加的空格,与规则动作保持一致。

翻译与本地化(主要贡献者 milanalexandre):#5396、#5411、#5421、#5471、#5486、#5514、#5549、#5565、#5634 等,补齐了规则、报表、排期状态、关闭账户、导入交易弹窗等界面文本的多语言支持。

其他:

  • #5457 修复系统默认浅色主题下标签颜色异常;
  • #5398 标签颜色默认改为 null(回退到主题色),并加强标签校验;
  • #5579 相同 redux action 已 pending 时避免重复调用数据库;
  • #5623 修复 sync server 在 arm64 Mac 上启动失败;
  • #5631 修复 Docker 健康检查脚本;
  • #5643 支持 webRoot 位于隐藏目录(如.cache);
  • #5659 修复收入弹窗余额不显示。

维护与工程化进展

  • #5379);
  • #5566、#5567 移除未使用的依赖包 reselect、sourcemap、process;
  • Redux 状态重构(contributor: joel-jeremy):#5581 账户状态迁入 accountsSlice、#5592 收款人状态迁入 payeesSlice、#5593 分类状态迁入 budgetSlice、#5597 标签状态迁入 tagsSlice、#5598 queriesSlice 更名为 transactionsSlice;
  • #5576 修复 AutoTextSize 警告;#5591 为 Command bar 增加视觉回归测试(VRT);
  • #5544 文件,为仓库目录分配维护负责人;
  • #5404 允许 fork 仓库通过 workflow dispatch 触发 Docker edge 镜像构建;#5480 合并自动包版本号 workflow;#5497 升级 sync-server 依赖。

小结与升级建议

25.9.0 是 Actual 在移动端体验、银行连接生态与自动化功能储备上的一个关键版本:移动端规则页让手机端也具备完整的规则管理能力;Pluggy.ai 连接器为拉美用户提供了新的银行同步选项;自动化后端与 UI 的打通则为后续版本的完整自动化功能铺路。升级前建议先备份预算文件(可参考 backup-restore 文档),并在实际银行环境验证 Pluggy.ai 的可用性后再启用相关实验性开关。

【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询