ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Actual Budget 24.7.0 版本特性深度解读:自定义报表转正、规则拆分与交易标签全面落地

Actual Budget 24.7.0 版本特性深度解读:自定义报表转正、规则拆分与交易标签全面落地 Actual Budget 24.7.0 版本特性深度解读自定义报表转正、规则拆分与交易标签全面落地【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actualActual Budget下称 Actual在 24.7.0 版本Docker 镜像标签24.7.0发布于 2024-07-02中完成了多项重量级功能的正式发布与大量体验优化自定义报表Custom Reports与规则拆分Splits in Rules双双脱离实验性状态交易标签、交易合并/拆分、账户备注悬停提示等高频功能同步落地Actual Server 侧则新增多家银行处理与同步健壮性修复。本文将结合仓库源码逐一拆解这些特性的设计意图、底层实现与使用要点帮助你理解这一版本对 Actual 日常记账与预算工作流的具体影响。一、自定义报表Custom Reports正式发布1.1 从实验特性走向正式功能24.7.0 最核心的变化之一是自定义报表正式从 feature flag 的experimental状态中移除对应 Overview.tsx 所在报表模块体系。此前用户需要通过实验开关开启该功能本版本后它成为面向所有用户的标准能力。与自定义报表配套的还有一个新特性Year Spending Comparison年度支出对比可对跨年度的支出趋势进行直观比较。从源码结构看报表功能已在 packages/desktop-client/src/components/reports 目录下形成了完整组件体系包括Overview.tsx报表总览与仪表盘容器负责将各类型报表卡片自定义报表、净资产、现金流、预算分析等按网格布局渲染并支持拖拽与增删CustomReport.tsx自定义报表主体渲染CustomReportListCards.tsx自定义报表在仪表盘上的卡片列表ReportTopbar.tsx 与 SaveReport.tsx报表顶部工具栏与保存逻辑。1.2 Net 数值逻辑重做与 Show Activity 加固本版本对自定义报表做了两项关键的行为修正Net 数值重做net数字的统计口径被重新设计使其更符合直觉并支持更高程度的自定义见 CustomReport.tsx。例如区分按周、按月等不同时间粒度的净值计算方式避免之前口径混淆带来的困惑。Show Activity 元素加固将 showActivity 元素的数据来源切换到inflow/outflow过滤器修复了按周查看活动时点击后日期过滤不准确的问题——此前点击某周的活动明细过滤出的日期范围可能与所点周不一致。此外还修复了自定义报表卡片独立菜单回归、支出报表中预算外off-budget项目未被过滤等问题后者见 SpendingCard.tsx 的过滤逻辑相关实现。1.3 Live 范围支持增删当前区间配套增强是用户自定义的 live动态时间范围现在可以选择包含或排除当前区间。这对于做本季度至今与上一完整季度对比这类需求非常实用由报表范围选择器见 ReportSidebar.tsx提供交互入口。二、规则拆分Splits in Rules正式发布2.1 功能含义规则Rules是 Actual 自动分类与自动填写的核心机制。24.7.0 将Splits in Rules正式发布规则的动作Actions部分现在可以按多个子交易拆分即一条规则命中后自动把一笔交易拆成多笔子交易每笔子交易可分别指定类别、金额方式如固定金额、剩余金额 remainder等。2.2 源码级实现规则编辑器的拆分能力集中实现在 RuleEditor.tsx核心要点包括动作拆分模型编辑器把规则动作按splitIndex分组管理getActions与getUnparsedActions负责把多个 split 的动作扁平化/反序列化见RuleEditor.tsx中splits.flatMap(s s.actions)的实现set-split-amount操作当向某个非首个 split 添加动作时编辑器会自动补一条set-split-amount动作默认方法为remainder剩余金额归入该子交易这是主交易 拆分余量模式的默认形态UI 操作支持添加拆分交易Add split transactions、删除指定 splitonRemoveSplit会同时校正后续 split 的索引、以及在指定 split 后插入动作addActionToSplitAfterIndex兼容旧规则即使某用户之后关闭了该功能已保存的拆分规则仍可继续编辑源码注释明确写着Enable editing existing split rules even if the feature has since been disabled避免旧数据不可维护。配合发布还调整了拆分规则的文案Fix wording of split rule并在规则页使用AmountInput统一金额输入的格式化与正负切换按钮见 AmountInput 相关实现大幅提升金额编辑体验。三、交易标签在备注中用 # 打标3.1 使用方式24.7.0 引入**交易标签Tags**功能在交易的备注notes中直接书写#标签名即可为该交易打上标签例如备注写午餐 #餐饮后#餐饮会以可点击标签的形式高亮渲染点击即可按该标签筛选/查看所有相关交易。3.2 底层实现标签的解析与去重逻辑在 tags.ts 中实现extractTagsForFilter从备注字符串中提取唯一标签集合。规则是以空白分隔的单词只保留一个前置 #例如one #one ##one ##two three会被解析为[#one, #two, #three]双重 ## 转义##tag不会被打成标签#与#之间、空白均是标签边界标签匹配区分大小写——这与标签在其他场景颜色、发现机制中大小写敏感的语义保持一致renameTagInNotes重命名标签时同步改写所有备注中的对应标签使用(?!#)负向后行断言避免误伤已被转义的##tag。标签的完整管理增删改、颜色、批量选择由 packages/desktop-client/src/components/tags 目录下的组件承担包括 ManageTags.tsx、TagEditor.tsx、TagsList.tsx 等并在搜索/规则条件中通过extractTagsForFilter支持标签过滤见 transaction-rules.ts 与 condition.ts。自动补全方面提供 TagAutocomplete.tsx 与 TagMultiAutocomplete.tsx 支持单选/多选标签输入。四、交易的合并与拆分4.1 功能说明24.7.0 支持将多笔交易合并为一笔拆分交易或将一笔拆分交易还原为多笔独立交易由此统一了手工拆分与事后合并两种整理方式。移动端在拆分交易时会自动创建两个子交易而非仅创建一个空子交易减少重复操作。4.2 后端实现拆分交易的服务端组装逻辑位于 sync.ts其中makeSplitTransaction(trans, subtransactions)负责把父交易与若干子交易组装成最终落库形态。交易表对拆分交易父子关系的维护、金额校验等均由该模块协同完成确保合并/拆分后的金额合计与父交易一致。在桌面端交易列表提供了对应的批量操作入口选中多笔交易后合并、选中拆分交易后拆分相关的行级上下文动作可参见 useTransactionRowContextActions.ts 与 TransactionsTable.tsx。五、账户备注侧边栏悬停提示现在可以在侧边栏为账户维护备注当鼠标悬停到账户名称上时以 Tooltip 形式显示该备注——适合记录账户用途、银行网点等补充信息避免占用侧边栏空间。对应 PR 还修复了可视化回归测试VRT期间误弹出账户 Tooltip 的问题以及侧边栏账户名被压缩显示的问题保证该提示在测试与生产环境中表现一致。六、交互与输入体验增强本版本还包含一批提升日常操作效率的改进自动补全全面优化带重音符号的语言如葡萄牙语搜索不再受重音影响——无论输入cafe还是café都能命中对应条目自动补全列表现在遵守用户在设置中自定义的账户排序顺序类别自动补全支持在优先子类别下方包含其子类别的联想结果。移动端预算页改版重构了移动端预算页面Mobile budget page revamp修复预算列/支出列在较小屏幕上的自动宽度问题并让移动端预算着色正确显示模板颜色。移动端交易列表加载指示器加载时给出明确的进度反馈。AmountInput 推广移动端余额转账与 hold buffer 弹窗改用AmountInput金额输入支持自动补小数点。预算类别下划线为预算类别增加下划线视觉标记提升可读性。Cover over-budgeted 动作新增覆盖超预算操作余额转移等菜单只在相关条件成立时出现例如仅当存在剩余余额时才显示转移到其他类别菜单。预算 Tooltip 条件化预算面板未折叠时不再弹出 Tooltip仅折叠状态下展示减少干扰。七、银行同步Bank Sync相关改进SimpleFIN统一并简化了银行同步密钥secrets的重置流程同步调用增加60 秒超时避免无响应挂起修复了未发送组织域名时导致bank_id为 null 的问题。按钮文案将同步按钮标签统一为 Bank Sync提升新用户的可发现性。八、值得关注的 Bugfix 精选修复项影响CSV 导入无法匹配category is (nothing)规则导入时未分类规则现在能正确命中69 位小数的金额解析错误高精度金额可被正确解析超过 100 万的金额显示被截断大额数字完整显示nYNAB 导入无法处理名为 Income 的类别组支持导入同名类别组Safari 16 下压缩脚本抛 SyntaxError启用压缩compress规避该问题支出报表未过滤预算外项目报表口径更准确拓扑排序递归导致栈溢出移除递归实现避免大数据量崩溃Report Budget 中设为 3 个月平均值导致收入类别显示为负收入类别金额方向修正定期交易周循环卡在 Paid 状态回退日期过滤改动Linux Electron 导出数据不保存文件修复导出流程桌面端正则过滤失效恢复正则筛选交易表频繁自动改变尺寸修复列宽抖动此外维护层面将多处原生Tooltip组件迁移到 react-aria 的 Tooltip/Popover 实现并发布了 api 包 6.8.1 版本。九、Actual Server 侧更新Actual Server独立的同步/银行同步服务在本版本同样有实质更新新增银行处理器ABANCA_CAGLESMM从remittanceInformationStructured字段提取 creditorName / debtorName提升收款人识别准确度VIRGIN_NRNBGB22Virgin Money更精确的收款人解析NATIONWIDE_NAIAGB21Nationwide更准确的日期处理并修复重复交易问题。SimpleFIN 错误处理对同步失败给出更合理的错误反馈。GoCardless修复使用bnp-be-gebabebbBNP Paribas Fortis账户时的同步失败将银行代码重构去重并将各银行接入银行工厂测试套件依赖升级以修复 CVE-2023-42282。十、升级与验证方式如果你是自托管用户可以通过 Docker 直接使用 24.7.0 版本镜像标签升级docker pull actualbudget/actual-server:24.7.0升级后即可在报表页面使用自定义报表、在规则编辑器中创建拆分动作、在交易备注中输入#标签体验新能力。需要说明的是标签功能依赖较新的数据库迁移如add_tags.sql、tags_tombstone.sql等见 loot-core/migrations首次启动会自动执行迁移无需手工干预。小结24.7.0 是 Actual 在可定制性与数据整理效率两个方向上的一次集中发力——自定义报表与规则拆分正式化意味着高级用户无需实验开关即可使用交易标签与合并/拆分则让日常账目维护更灵活。若你正使用 24.7.0 之前的版本建议关注上述迁移兼容性若你是自托管用户按上文 Docker 方式即可平滑升级。【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表