ASSETORY返回介绍页

Assetory

Assets, Liabilities & Net Worth

Your complete financial story.

1. 简介

Assetory 是用于持续追踪个人或家庭资产价值的小工具。它把散落在不同银行、券商等平台的资产放进同一份月度视图中,帮你看清资产是如何分布和变化的。

可直接通过 https://lightbluelab.github.io/assetory/ 在线访问和使用。本工具采用本地优先方式,账本数据只保留在你的浏览器或由你自行导入、导出的 JSON 文件中,不会上传到 GitHub Pages 或本项目仓库。

主要能力包括:

2. 设计与运行原理

本工具由 LightBlue 设计,由 OpenAI Codex 实现。它采用本地优先的方式:每本账本是一份独立 JSON 文件,界面负责计算和展示,账本数据由用户自己掌控。

月度快照与同步

每个月保存月末资产清单 balance、本月流水 flows、汇率、期初快照和同步信息。新建月份时,系统从最近前月继承资产和汇率信息,但不会复制流水。

修改历史月份后,使用“同步到下月”或“同步到后续所有月份”重建后续月份的期初和受影响的数量、余额;后续月份已经维护的手工价格和自动报价状态会保留。资产和流水都以资产ID 关联,因此重命名、删除与同步能保持对应关系

盈亏计算

净资产的月度变化由收入、支出、资产收益、交易,以及资产和负债的价格与汇率变化共同构成。盈亏分析会分别归因:

因此,趋势图既能看资产规模,也能用于解释净资产变化来自哪一类资产或事件。

3. 操作指南

创建或打开账本

  1. 点击右上角“账本管理”。
  2. 选择“新建”,输入账本名称并选择本地目录;也可以“打开 JSON”导入既有账本。
  3. HTTPS 网页首次打开且没有真实账本时,会加载 assetory-demo-ledger.json 供体验;直接双击本地 HTML 时,浏览器不会自动读取演示文件。
  4. 编辑后通过“备份”下载一份最新 JSON。请定期保留备份,尤其在删除资产、删除月份或批量同步前。

维护月度资产与流水

  1. 添加月份。新月份继承最近前月的资产和汇率,但不复制流水。
  2. 在资产负债表点击“编辑”,通过资产详情维护分组、账户、自动报价配置、价格或估值。现金、负债和固定资产可直接做月度盘点或快速调整余额;系统会自动记一条“手工估值调整”流水,并在盈亏趋势中归入“其它贡献”,因此不会破坏流水解释或后续月份同步。基金、股票等投资资产仍可按价格/估值维护。
  3. 新增资产或流水建仓时,分组与账户会推荐历史值,也可以直接输入自定义值。
  4. 对自动更新的股票使用“更新股价和汇率”;警告标识表示需要在资产详情中手动调整价格。
  5. 收入可流入现金、股票、基金、固定资产或新建资产;流入股票时填写数量和价格。支出影响指定现金账户;转账不改变净资产;资产收益用于记录分红、利息和租金;买入、卖出与还款会联动现金、持仓或负债。流水金额和交易数量必须为正数;股票卖出可从零持仓或多头持仓建立空头,基金和固定资产不可超卖,还款不可超过负债余额。跨币种还款请先通过转账完成换汇。
  6. 金额字段支持 1000+200*3(1200-50)/2×÷ 等简单表达式。
  7. 修改历史月份后,根据“后续月份待同步”提示执行同步。

密码保护

在账本管理中可为账本设置密码。启用后,账本 JSON 会使用浏览器本地 AES-GCM 加密,密码和密钥不会写入 JSON。打开加密账本时需要输入对应账本的密码;修改密码时留空并确认,可取消密码保护并恢复明文 JSON。请自行妥善保管密码,遗失后无法恢复账本内容。

手机使用

当前仅提供网页/PWA 版。手机可通过浏览器打开或“添加到主屏幕”查看账本;编辑后请使用“备份”下载更新后的 JSON。iPhone Safari、Chrome 和 PWA 都不能自动回写从“文件”应用选择的 iCloud JSON。Android 建议以查看为主,修改后下载备份,或在电脑上维护后再通过手机打开。

未来如需手机自动读写文件

当前版本未实现以下方案,仅作为后续扩展记录:

  1. 原生 App:使用 Capacitor 或原生 iOS/Android 文件插件。iOS 通过系统文档选择器获得 iCloud 文件原地访问权限;Android 通过 Storage Access Framework 获得用户选择文件的写入权限。能写回原文件,但需维护原生工程、签名和发布流程。
  2. 服务端同步:将账本存到自建服务、WebDAV 或对象存储,手机自动上传下载。跨设备体验较好,但需维护账号、权限、服务器和数据安全。
  3. 浏览器文件权限:桌面 Chrome/Edge 的 HTTPS 页面可通过 File System Access API 写回用户授权的本地文件;iOS 浏览器不支持这一能力,仍需备份机制。

4. 本地使用与源码开发

线上或部署使用时,index.html 是默认的产品介绍页,负责引导新建、打开或查看样式账本。账本工作台位于 assetory.html

只想在本地独立记账时,下载 assetory.html 即可。它已内联账本所需的样式、脚本和样式账本数据,可以直接双击打开,不依赖介绍页或其他文件;也可以按需要重命名。

项目源码按职责放在 src/ 中:

assets/images/             页面和 PWA 图标
src/landing.template.html 产品介绍页模板
src/landing.css          产品介绍页样式
src/index.template.html  账本工作台模板
src/styles.css           账本工作台样式
src/js/core.js           公共状态、数据模型与基础计算
src/js/storage.js        文件、加密、导入导出与账本管理
src/js/transactions.js   流水、成本基础、对账与跨月同步
src/js/quotes.js         股价、汇率与首月价格基线
src/js/trends.js         盈亏归因与趋势图表
src/js/ui.js             页面、表格和对话框渲染
src/js/app.js            全局事件、PWA 与启动流程
scripts/build.mjs        双 HTML 构建及一致性检查
package.json             构建命令定义

修改源码后运行:

npm run build
npm run check

npm run build 不需要安装第三方依赖,会分别生成根目录的 index.html(介绍页)、assetory.html(独立账本工作台)和 guide.html(排版版使用说明)。npm run check 用于确认三个生成文件都与源码完全一致。开发时不要直接修改生成后的 HTML。

Git 提交范围

应提交:assets/src/scripts/index.htmlassetory.htmlguide.htmlpackage.jsonmanifest.webmanifestservice-worker.jsREADME.mdPROJECT_CONTEXT.mdassetory-demo-ledger.json

不要提交:个人账本(_ledger_data.json)、下载的备份(_backup_*.json)、.DS_Storenode_modules/.env 或任何密码、令牌和私钥。项目已通过 .gitignore 忽略常见本地文件;提交前仍应检查 git status

将源码目录、PROJECT_CONTEXT.mdassetory-demo-ledger.json 和清晰的修改需求交给 AI Agent 即可继续定制。请明确要求 Agent 保持 JSON 兼容、不上传真实账本;涉及流水或跨月同步时,同时检查应用、回滚、同步和对账逻辑。