与源代码的链接 作为一个数据工程师,我花了我的日子 设计干净,优化的数据结构。
但是在家里,我面对的是更强硬的人群:我的家人。
为了优化预算,我们共同管理我们共享的资金,而且由于我们生活和工作的地方,我们必须用几种不同的货币(如美元、欧元、捷克克和乌阿)来做到这一点。
和任何开发者一样,我首先试图找到一个现成的应用程序来解决这个问题.
但我遇到了一个典型的问题:他们不是膨胀了无数个我们不关心的特征,就是错过了我们真正需要的特征。
因此,我们做了一个绝望的家庭所做的: 我们打开了一个谷歌表。
我们追踪我们的钱在那里一段时间, 不是因为它是完美的, 而是因为它帮助我们 找出我们真正需要的 一个真正的应用。
在我写单行代码之前 那是我们的"生活计划" 在文章中,我想向大家展示我是如何从两个方面看待这个问题的——作为一个沮丧的用户,他只想记录开支,以及作为一个沉迷于清洁数据库设计的数据工程师.
以下是我如何建造定制家庭会计服务器的故事。
第1部分:Django,一个"Star Schema",以及"2025年框架战",我准备取代我们的"Google Sheet".
我的主要编程语言是Python, 所以我有三个现实的选择: FastAPI, Flask, 或 Django.
FastAPI是高速API的酷孩子, 我们也需要一个友好的网络UI,FastAPI并不是自然而然的为它而建.
我刚刚用弗拉克来做我之前的项目 但我想挑战自己 学习一些新东西 强哥觉得自己是多年没见过的老朋友 它有惊人的内置工具(如管理面板和巨大的翻译支持),使用它是刷新我的技能并成长为开发者的完美方法.
数据库:为什么一个"星际争霸"实际上让理智 作为一名数据工程师,我不想要一个混乱的数据库。
我决定使用"Star Schema",它通常用于大数据仓库,但实际上非常适合交易记账.
像这样想:中央台是节目的明星,其他一切只是增加了上下文.
事实表(: 这就是所有行动发生的地方。
我用了一个简单的标志规则:收入记录为正数,支出记录为负数.
它简单,数学上干净, 使计算变得非常容易。
尺寸表 : 这些内容环绕交易表,并有如下细节:,,,,,,和.
到2025年末,我建立了数据库,一个简单的网络UI,一个API,测试和手册.
我把它包装成两个Django应用软件, 并在当地托管在运行Gunicorn的Ubuntu服务器上。
效果不错,但我还没完成 第2部分: 2026 Evolution ——去无服务器和放逐"博林手册" 2026年,我翻阅了为家人所写的10页文字手册.
老实说,没有人——尤其是你的家人——想读一本干燥的技术指南,只是为了找出如何登录信用卡转账。
我决定做两件事:让应用程序Server无所事事,取而代之的是无聊的手册,取而代之的是一位友好,对话的AI助手.
为了做到这一点,我建造了第三个Django应用软件。
但我不想要一个普通的聊天室 来解释一般的答案 我想要一个聪明的助手 完全知道用户想要什么 所以,我设计它是为了立刻将用户信息分为四个不同的意图: 通用:用于临时的财务聊天和友好问候。
文件(RAG):如果用户问"我该如何添加一款新货币",AI会通过我们的标记下手册进行搜索(Retrival-Augmented Generation),给出一个分步骤的答案.
数据(文本为SQL): 这是神奇的部分。
如果你问,"我这个月花了多少钱在食物上?",AI将你的自然语言问题翻译成一个干净的SQL查询,根据数据库运行,并给出准确的答案.
我想继续