青戈AI小栈
会员限时8折

实战教程 / FastAPI 异步开发实战:个人账单管理工作台

FastAPI 异步开发实战:个人账单管理工作台

开通会员

下载脚手架

开通会员后可下载本课程脚手架。

查看会员权益
  • 类型 体系课
  • 难度 进阶
  • 视频+图文 · 24节课
  • 4 小时 20 分钟
  • 30 人学过
  • 更新中
  • 会员专享

从用户登录到 AI 辅助记账,用 FastAPI 逐步开发一个可以管理自己收支的异步 API 应用。

本课程以个人账单管理工作台为项目,围绕异步数据库、认证权限、关联查询、统计、后台任务和实时通知展开。每节结合一个具体需求,引入新的技术点,完成实现后在页面中操作并核对结果。

课程将按章节更新,大纲会结合实际带敲与联调情况调整,具体安排以站内更新为准。

项目预览

个人账单管理工作台:收入、支出、结余与最近账单。

前端 Mock 演示页面,课程中将逐步接入真实后端接口。

做一个管理自己账单的工作台

午饭花了多少钱、这个月有哪些收入、餐饮支出占了多少,不必只停留在表格里。我们将从用户注册和登录开始,逐步接通一套个人账单管理页面:新增收支、设置分类和标签,按日期筛选,查看收入、支出、结余与分类统计。

再加入一个 AI 录入入口。例如输入“昨天午饭花了 28 元”,模型将文本整理为金额、日期、分类和备注候选;缺少信息时提示补齐,由用户核对并确认后才入账。模型负责理解文本,业务代码负责校验、权限和实际保存。

AI 辅助记账流程:输入文本、提取候选、用户核对确认、服务端校验与事务入账;校验失败返回提示并重新核对。

项目中的每个账号只管理自己的账单。管理员可以维护用户,但不会因为管理员身份就默认获得所有人的私人收支数据。

从会写 CRUD,走向异步应用开发

异步执行与资源管理

理解 def 与 async def 的执行差异,识别会阻塞请求的调用。通过 lifespan 管理应用级资源,区分数据库引擎、连接池、会话和事务,为请求与后台任务创建独立会话。

认证、权限与文件接口

实现密码哈希、JWT 登录、当前用户与管理员依赖,处理资料修改、密码修改后的登录失效,以及头像上传、校验和旧文件清理。

关联查询与收支统计

从单笔账单开始,逐步实现分类联查、组合筛选、多标签关联、显式关系加载、去重分页和聚合统计。结合实际数据解释 JOIN 与关系加载的区别,避免多对多查询产生重复记录或重复累计金额。

异步 AI 调用与结构化校验

通过 LangChain 统一接入模型,使用异步调用和结构化输出提取账单,复用模型客户端并设置超时和并发限制,用 Pydantic 校验提取结果。切换模型时核对结构化输出能力和提取效果。区分允许缺项的候选模型与必须完整合法的账单模型,不把格式正确直接当成可以入账。

后台任务与可靠确认

先让页面查询后台处理状态,再通过 WebSocket 接收完成通知。处理失败、重启中断和重复提交;确认入账时使用事务、状态条件与唯一约束,避免同一候选重复确认产生多笔账单。

定时维护与问题定位

通过定时任务清理过期候选,保留已入账数据。结合请求日志、异常反馈和数据库记录,观察处理过程,理解进程内后台任务的适用边界。

后端从零带敲,React 页面直接提供

课程提供带 Mock 数据的 React 工作台,可以先运行页面,体验登录、记账、统计和 AI 录入,再逐步替换成自己实现的真实接口。

FastAPI 后端从空工程逐步编写,React 页面和样式不带敲。 课堂重点是接口输入输出、身份凭据、数据库操作与前后端联调。还未实现的操作不会用 Mock 成功提示冒充真实结果。

知识点按照实际开发顺序引入:先完成手动记账和统计,再接 AI;先获得候选结果,再加入后台处理、确认入账和通知。已有实现随课复用,简单内容合并,复杂内容保留足够的解释与操作时间。

学习路线

阶段 学习重点 阶段成果
异步基础与用户中心 工程、异步数据库、迁移、注册登录、依赖权限、个人资料与头像 接通可以真实注册登录的用户中心
账单管理与关联数据 用户管理、分类标签、精确金额、账单 CRUD、联表、多对多和统计 手动管理自己的收支,并核对统计结果
AI 辅助录入 异步调用、结构化校验、缺项处理与后台状态 一句话生成可核对的账单候选
确认入账与实时反馈 事务、幂等、失败处理、WebSocket 和定时清理 确认后保存账单,查询处理结果并接收通知

技术栈

技术 在项目中的用途
FastAPI + Pydantic 接口、参数校验、响应模型、依赖注入与权限
PostgreSQL + SQLAlchemy 2.x + asyncpg 异步数据访问、关联查询、事务和收支统计
Alembic 随功能演进维护数据库迁移
LangChain + 模型供应商集成包 统一模型接入、异步调用与结构化账单提取;控制超时与并发
BackgroundTasks + APScheduler 进程内后台处理与周期清理
WebSocket 向当前用户推送任务完成或失败通知
React + TypeScript + Vite 构建和运行带 Mock 数据的工作台,逐步接入真实后端
Ant Design 表单、表格、弹窗、分页及上传等交互组件
Axios 统一封装 HTTP 请求、携带登录凭据、处理响应与错误
React Router + Zustand 页面路由、登录会话与偏好状态管理

适合谁学习

  • 学过 FastAPI 基础接口和简单 CRUD,希望继续学习异步开发的同学。
  • 有 Python 基础,希望通过一个连续项目理解认证、数据库关系、事务与后台任务的开发者。
  • 想把 AI 能力接入已有业务,并理解模型结果如何经过校验再保存的学习者。

需要了解 Python 函数、类、模块、异常、HTTP 接口和基础数据库操作。没有 FastAPI 基础,可以先学习站内免费入门课程;React 无需提前掌握。

项目主线在本机运行。AI 章节通过模型 API 调用,需要自备对应账号和 API Key,调用费用由模型服务商计费,不要求本地显卡。

学完能收获什么

你将完成一套包含用户体系、个人收支、分类标签、统计与 AI 辅助录入的后端应用,并在 React 页面中演示整个操作过程。

更重要的是,能够解释:为什么异步会话不能随意共享、怎样控制关联查询和事务边界、模型等待期间为什么不应占用长事务、重复确认怎样返回同一笔账单,以及页面断开后怎样重新查询真实结果。

这些实现可以作为后续个人工具、管理后台和 AI 应用的开发基础。项目部署、多进程运行和异步接口排错预留为加餐,在主线完成后再安排。

访问课程源码

此链接指向 GitHub 私有仓库。请登录已获授权的 GitHub 账号,并接受仓库邀请后访问;否则可能显示 404。

尚未获得权限?有效 VIP 会员可联系站长,提供 GitHub 用户名申请加入。

设置你的昵称

在讨论中,使用你自己的名字。

2–12 个字符0 / 12