尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口

手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口 手机优先的 Personal Ledger把账目、学习和复盘放到同一个入口很多个人记录工具只能解决一个问题记账、打卡或写笔记。真正使用一段时间后我更想要的是一个轻量的统一入口今天花了什么、学习投入了多久、某个项目有什么进展都能用同一套方式留下来月底还能重新查到。因此我整理了一个面向个人使用的自托管项目Personal Ledger。它采用FastAPI SQLite前端是静态页面重点放在手机操作。本文不只介绍技术选型也直接展示项目的实际界面和一条完整使用路径。文中的界面图均使用移动端390 × 844视口截取示例数据已经脱敏。先看实际使用一句话记录两类内容打开“记录”页后核心交互只有一个输入区。例如输入今天午餐 32 元晚上听英语 30 分钟后端会把一句话拆成一笔消费和一条学习积累并在页面中列出解析结果。金额、日期和分类仍然会显示出来提交前后都可以核对。从手机上看这个流程可以概括为三步输入、提交、检查结果。如果内容比较明确项目优先使用本地规则处理复杂文本可以接入可选的模型服务但模型只负责辅助整理最终数据仍由用户确认。历史页先看总量再定位分类历史页适合回答“这个月大概花了多少”这类问题。页面会给出支出、收入和结余并用趋势图展示每天的变化。下面的分类汇总可以快速看到餐饮、生活开支、交通和数码服务等项目的金额。点击分类后还可以继续查看对应的明细。这样做的好处是先用总量判断整体情况再用明细解释数字而不是只留下一个月底总额。账目记录保存日期、标题、金额、收支方向、分类、备注和货币单位。项目另外维护交易标签用于支持更细的语义筛选同时不改变原始金额和标题。本月页把日历当成记录索引如果想知道某一天发生了什么本月页会更直观。它把有记录的日期标记在月历上选中日期后显示当天明细。对于经常需要回看账目的场景日历比连续滚动一长串列表更容易定位。本月页还保留本月支出和结余两个关键数字。用户可以先看月度状态再点击某天检查具体记录。Ac 页面记录时间而不只是记录金额很多工具能够回答“花了多少钱”却很难回答“这个月投入了多少时间”。项目用accumulation_entries保存学习、阅读、听书、课程、实践项目、笔记复盘和运动等积累记录。一条记录包含日期、标题和活动类型时长、页数和备注主领域、子领域和标签例如英语听力会归入“英语语言 / 听力”羽毛球会归入“健康运动 / 羽毛球”。同一天、同一活动和同一领域的重复记录可以合并累计减少碎片数据。Ac 页面提供日历、当天明细、活动方式汇总、领域汇总、每日时间线和月度占比。月末复盘时可以看到时间主要投入在编程、运动、英语还是阅读上。Id 页面把复盘从长文本变成可检索记录项目复盘、灵感和生活记录通常不是结构化表格而是一段完整文本。Id 页面会按月份展示这些记录内容包括标题、正文摘要、日期和标签。SQLite 的 FTS5 全文检索表负责建立索引后续可以结合关键词、主题和时间范围重新找到内容。知识记录采用“先整理、后确认”的流程输入一段复盘或口述内容。应用生成标题、主题、事件和标签等结构化草稿。用户检查并修改草稿。确认后再写入知识库。这一步很重要。模型或规则的分类结果不应该直接覆盖用户数据先让用户确认才能兼顾自动化和可控性。这个项目的核心设计1. 一个入口多个数据结构输入入口保持简单但后端并不把所有内容塞进一张表。账目进入transactions学习和运动进入accumulation_entries复盘内容进入knowledge_notes统一入口降低了记录成本分开的数据结构又保留了各自的查询和展示方式。2. 先判断意图再选择处理流程分析页会区分几类输入消费入库例如“今天午餐 32 元”消费查询例如“这个月餐饮花了多少”积累入库例如“昨天阅读 40 分钟”积累查询例如“本月运动投入了多久”知识整理例如“总结一下这周项目进展”不同意图对应不同的解析器和 API。这样可以避免把“查询问题”误当成一笔新记录。3. 规则优先模型可选明确的金额、日期、时长和活动类型优先由本地规则处理只有复杂文本才需要模型辅助。模型服务不可用时应用仍能完成基础记录。对于个人工具来说稳定的基础路径比所有功能都依赖外部服务更重要。技术实现FastAPI、SQLite 和静态前端后端使用 FastAPI并用 Pydantic 定义请求和响应结构。当前主要接口包括POST /api/records/ingest混合记录入库GET /api/transactions查询账目明细GET /api/monthly-summary读取月度汇总GET /api/accumulation/summary读取学习与积累统计POST /api/knowledge/summarize生成知识草稿POST /api/knowledge/drafts/{draft_id}/confirm确认知识草稿POST /api/analyze执行账目、积累或知识分析SQLite 适合这个项目的原因很实际部署只需要一个数据库文件备份可以直接复制文件容器重建时也能通过目录挂载保留数据。数据库连接开启了外键约束、WAL 模式、同步写入和忙等待时间。知识检索使用 SQLite FTS5 虚拟表交易标签和积累批次则用于保留更完整的处理信息。本地运行与 Docker 部署本地运行需要 Python 环境python-mvenv .venv..venv/bin/activate pipinstall-rrequirements.txt uvicorn app.main:app--reload生产环境可以使用 Docker Composeservices:ledger:build:.ports:-18888:8000environment:APP_DB_PATH:/data/app.dbvolumes:-/srv/personal-ledger/data:/data部署时建议把应用代码、数据目录和备份目录分开管理。SQLite 文件放在宿主机持久化目录容器更新不会直接删除数据。项目还提供数据库备份脚本可以按天生成快照并保留固定周期。涉及个人消费和复盘内容时服务器访问控制、备份文件权限和模型服务密钥都需要单独配置。适合哪些人这个项目更适合想把个人账目、学习和运动记录放到同一个页面的人希望自己部署和维护数据的人想学习 FastAPI、SQLite、FTS5 和 Docker Compose 的开发者需要一个可以继续二次开发的个人效率工具它的边界也很明确这是单用户、自托管的个人记录应用不是多人财务系统也不替代专业财务、医疗或投资工具。结语我做这个项目的出发点不是再增加一个复杂平台而是让日常记录更容易坚持。手机上输入一句话应用负责把它整理成账目、积累或复盘需要回看时用历史、月历、Ac 和 Id 四个入口分别查看。如果你也在多个工具之间分散记录生活和学习可以从一个小型自托管应用开始先保留最常用的记录再根据真实习惯逐步扩展。
返回列表