视图全解析:内置报表、净资产与现金流、自定义报表实战指南)
Actual 报表Reports视图全解析内置报表、净资产与现金流、自定义报表实战指南【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actualActual 的 Reports报表视图是这款本地优先个人财务应用中进行交易数据深度分析的统一入口它既聚合了内置的净资产Net Worth、现金流Cash Flow等仪表盘报表也承载了完全由用户自定义的报表体系。本文将带你理解该视图的平铺展示与全屏交互结合 Reports Dashboard 与 Custom Reports 两份配套文档详解每个内置报表的定义与自定义报表的完整配置项并通过 服务端报表模型 与 前端报表数据层 的源码揭示报表从点击保存到落库、排序、读取的完整链路。Reports 视图一次点击从平铺到全屏Reports 视图是整个 Actual 应用中同时承载内置报表与自定义报表的单一入口。所有报表在视图中都以平铺tiled形式展示点击任意一张平铺卡片即可进入该报表的全屏版本获得完整的阅读与交互空间。该视图本身只是入口真正详细的功能说明分散在两条文档链路上内置报表及其仪表盘能力详见 Reports Dashboard报表仪表盘自定义报表的完整操作手册见 Custom Reports自定义报表。内置报表净资产Net Worth与现金流Cash Flow净资产Net Worth净资产表示你所有账户随时间变化的总体余额。它的计算方式是用现金与资产的总值减去所有负债其中包含全部投资账户。从本质上讲净资产就是「如果你卖掉所有资产并还清所有债务之后手中还能剩下的钱」。在 Reports Dashboard 中净资产图有两种展示模式Trend趋势模式展示净资产总额随时间变化的整体曲线Stacked堆叠模式按账户分别展示余额随时间的变化例如储蓄账户与投资账户分开呈现。需要注意的是当正余额账户与负余额账户混合存在时堆叠模式会比较难以解读。现金流Cash Flow现金流专注于追踪预算账户的余额随时间的变化以此反映你的支出情况。它包含收入与支出两套独立的可视化视图让你可以快速看出收入与支出如何影响你的可用资金。由于预算账户被视为「手头现金cash on hand」现金流图表能够清晰地展示可用资金的波动轨迹。仪表盘上的更多内置报表根据 Reports Dashboard 文档Actual 内置的报表与小组件还包括报表/组件作用Spending Analysis支出分析在指定时间段内追踪并对比支出突出趋势、波动以及超支或节省的区域Summary Card汇总卡片概览所选时间段内的全部交易支持总金额或月均两种统计口径Calendar Card日历卡片以日历形式展示指定时间段内每日的收入与支出Text Widget文本组件使用 Markdown 生成文本框用作报表标题或组织性标签Crossover Point交叉点借鉴《Your Money or Your Life》方法论的财务规划工具可视化「被动收入覆盖预计支出」的财务独立时点其中 Crossover Point 需要四类关键输入参数费用类别退休后仍会持续的开支分类、收入账户401k、IRA 等退休与投资账户、安全提款率默认 4%源自 Trinity Study 的「4% 法则」、费用预测类型Hampel 滤波中位数 / 中位数 / 均值以及可选的预计回报率不填时按收入账户余额随时间的变化推算历史回报。当被动收入增长到超过预测费用时即意味着达成财务独立。此外以下报表以实验性功能形式提供Budget Analysis report、Balance Forecast report、Sankey report 与 Monte Carlo Analysis。自定义报表对支出与收入的深度分析内置报表之外Actual 的自定义报表让你创建针对消费习惯与收入的深度分析。完整操作手册见 Custom Reports共支持五种展示形式Table View数据表Bar Graph柱状图Line Graph折线图Area Graph面积图Donut Graph环形图左侧菜单类型、拆分与时间模式左侧的Type类型菜单决定报表统计的交易口径Payment支出预算账户的流出Deposit存入预算账户的流入Net净额预算账户流入与流出的总和即预算页 Spent 与 Received 列所显示的数值。此口径当前仅完整支持 Data Table、Area GraphBar Graph 与 Donut Graph 为部分支持。统计结果可以按Category分类、Group分组、Payee收款方、Account账户或 Month月份进行Split拆分。注意按账户拆分显示的是预算账户的交易金额总和而非账户的周期性余额。将Mode模式从 Total 切换为 Time即可获得按月拆分的月度明细。日期筛选Live Date 与 Static Date交易可以按时间段过滤Live Date动态日期让交易数据随当前时间动态变化例如「本月This month」Static Date静态日期则在两个固定日期之间展示交易。Options 选项隐藏分类、空行与预算外账户在 Options 下可以调整报表行为Show hidden categories启用预算页中被标记为隐藏的分类Show empty rows显示 Split 所选维度中数值为 0 的项目Show off budget启用两类内容——Transfers包含预算账户间的全部转账预算内账户转往预算外账户的转账不计入Off budget包含预算外账户中的全部交易预算内转往预算外的转账不计入Show uncategorized显示未分配分类的交易。此外可以通过左下角的列表单独排除某个分类或整个分组下拉菜单中呈灰色不可选的选项表示当前报表类型尚不支持该功能。中间菜单图例、汇总、标签与过滤器中间菜单的第一组图标用于切换报表显示类型第二组用于控制图例legend、汇总summary与标签label的显隐漏斗形图标用于过滤交易最右侧的菜单则用于将自定义报表保存到 Reports 页面。保存报表覆盖、另存与恢复自定义报表可通过右侧菜单保存。已保存的报表被修改后可以选择覆盖原报表或将修改另存为新报表同一菜单还提供恢复为默认值reset to default可快速回到已保存版本。如果未做任何保存操作离开当前报表时改动会被自动丢弃。已保存的报表在 Reports 页面中按字母顺序排列。示例过去六个月的「每日支出」官方文档给出一个覆盖过去六个月的《Daily Expenses每日支出》示例一个版本以图表呈现另一个以数据表呈现。数据表版本还会额外显示各个分类的总和sum与六个月平均值average便于在观察趋势之外直接读取统计口径。更复杂的组合玩法可参考 Custom Reports 文档中的进阶示例选择 Bar Graph 并切换 Time 模式、按 Group 拆分、使用 Live Date 的 Year to date 范围、勾选排除 Savings 分类、用过滤器排除指定 Payee最后开启图例、汇总与标签即可构建一张「按月 X 轴、按分组堆叠」的柱状图。源码视角报表的存储、校验与 CRUD 链路报表功能在源码中是一条完整的前后端链路理解它能帮助你把握自定义报表的行为边界。服务端报表模型与字母序排序loot-core 服务端报表模块 定义了reportModel包含校验与字段映射两个核心部分app.ts#L13-L56校验规则conditionsOp条件组合操作符为必填字段且只能是and或or否则抛出ValidationError(Invalid filter conditionsOp: ...)字段映射toJS将数据库行snake_case如start_date、date_static、group_by、show_offbudget转换为前端实体camelCasefromJS负责反向转换。可见报表持久化的字段非常完整日期范围、静态/动态日期标志、分组维度、排序、间隔、余额类型、空行/预算外/隐藏分类/未分类展示开关、趋势线、包含当前周期、图表类型以及过滤条件等。报表读取时按名称排序sort函数使用localeCompare且开启ignorePunctuation进行不区分标点的字母序排序app.ts#L85-L94这与文档中「已保存报表按字母顺序展示」的行为完全对应。getReports通过 AQL 查询custom_reports表并在服务端完成反序列化例如自动解析 JSON 列conditions。前端查询与变更前端在 desktop-client 的 reports 模块 下拆分为查询与变更两层queries.ts 中reportQueries.list通过send(report/get)拉取全部自定义报表dashboardQueries则通过 AQL 查询dashboard、dashboard_pages等表支撑多仪表盘页与各组件的按页筛选mutations.ts 封装了report/create、report/update、report/delete以及一系列仪表盘操作dashboard-create、dashboard-rename、dashboard-update-widget、dashboard-add-widget、dashboard-copy-widget、dashboard-import等每个变更成功后都会通过invalidateQueries使对应查询缓存失效从而让 Reports 页面与仪表盘即时刷新。由此可以推断你在界面上点击「保存报表」时前端会调用report/create或report/update服务端经reportModel校验与字段映射后写入custom_reports表并在下一次进入 Reports 视图时按字母序平铺展示——这正是本文开头「平铺视图 全屏交互」体验背后的完整实现链路。总结Reports 视图把内置报表与自定义报表统一在同一个平铺入口中净资产、现金流等内置报表负责回答「我整体有多少钱、钱怎么流动」的总览问题而支持五种图形、动态/静态日期、多维度拆分与细致 Options 的自定义报表则负责回答「我的钱花在哪、趋势如何」的深度分析问题。配合 Reports Dashboard 与 Custom Reports 两份文档以及 服务端报表模型 与 前端报表数据层 的源码你可以从使用到实现全面掌握 Actual 的报表体系。【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考