后端服务
后端使用 FastAPI 提供异步 API,通过 SQLAlchemy 访问 MySQL,并使用 Alembic 管理数据库结构变更。所有业务接口统一位于 /api/v1 路径下。
技术栈
- Python 3.12+
- FastAPI 与 Uvicorn
- SQLAlchemy AsyncIO 与 asyncmy
- MySQL 9.0
- Alembic 数据库迁移
- JWT 身份认证
- Pydantic 数据校验与配置管理
- openpyxl 账本数据导出
服务结构
1 | app/ |
接口层、业务层和数据模型相互分离,数据库会话在请求成功后自动提交,发生异常时自动回滚。
API 模块
| 模块 | 能力 |
|---|---|
| 用户 | 微信登录、资料查询与修改 |
| 账本 | 创建、查询、修改和解散账本 |
| 账单 | 管理收入、支出及分摊参与人 |
| 行程 | 创建和维护旅行日程 |
| 成员 | 添加、移除成员及维护别名 |
| 统计 | 汇总账本和分类支出 |
| 分账 | 生成个人或团队结算方案 |
| 导出 | 将账本数据导出为 Excel |
| 上传 | 上传头像和账本封面 |
| 反馈与系统 | 收集意见并提供系统配置 |
分账方式
后端提供两种结算模式:
smart:计算成员净余额,通过匹配债权人与债务人减少转账链路traditional:按每笔账单的参与人数均分,逐笔生成转账关系
开发支持
未配置微信 AppID 时,服务会使用基于登录 code 生成的开发 OpenID,便于本地联调。启动后可通过以下地址查看自动生成的接口文档:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc