后端服务

后端使用 FastAPI 提供异步 API,通过 SQLAlchemy 访问 MySQL,并使用 Alembic 管理数据库结构变更。所有业务接口统一位于 /api/v1 路径下。

技术栈

  • Python 3.12+
  • FastAPI 与 Uvicorn
  • SQLAlchemy AsyncIO 与 asyncmy
  • MySQL 9.0
  • Alembic 数据库迁移
  • JWT 身份认证
  • Pydantic 数据校验与配置管理
  • openpyxl 账本数据导出

服务结构

1
2
3
4
5
6
7
8
app/
├── api/v1/endpoints/ # API 路由
├── core/ # 配置、数据库、认证和公共依赖
├── models/ # SQLAlchemy 数据模型
├── schemas/ # Pydantic 请求与响应模型
├── services/ # 业务逻辑
├── templates/admin/ # 管理后台模板
└── main.py # FastAPI 应用入口

接口层、业务层和数据模型相互分离,数据库会话在请求成功后自动提交,发生异常时自动回滚。

API 模块

模块 能力
用户 微信登录、资料查询与修改
账本 创建、查询、修改和解散账本
账单 管理收入、支出及分摊参与人
行程 创建和维护旅行日程
成员 添加、移除成员及维护别名
统计 汇总账本和分类支出
分账 生成个人或团队结算方案
导出 将账本数据导出为 Excel
上传 上传头像和账本封面
反馈与系统 收集意见并提供系统配置

分账方式

后端提供两种结算模式:

  • smart:计算成员净余额,通过匹配债权人与债务人减少转账链路
  • traditional:按每笔账单的参与人数均分,逐笔生成转账关系

开发支持

未配置微信 AppID 时,服务会使用基于登录 code 生成的开发 OpenID,便于本地联调。启动后可通过以下地址查看自动生成的接口文档:

  • Swagger UI:http://localhost:8000/docs
  • ReDoc:http://localhost:8000/redoc