云阶学堂 · 课程系统开发记录

记录课程编辑、审核、学习进度和历史订单这些模块之间的数据关系。

Vue 3, TypeScript, FastAPI, Alembic, Docker

从一条课程记录开始

云阶学堂使用 Vue 3 和 FastAPI。课程编辑看起来是表单,往下做就会遇到课时、审核状态、学习记录和订单之间的关系。

页面使用 Pinia 和 Element Plus,服务端通过 SQLAlchemy 管理数据,Alembic 负责增量迁移。项目中的订单流程使用测试支付,方便检查状态流转。

配置变了,旧记录怎么办

订单用快照保留当时的分成配置。这让我更关注一个问题:哪些字段应该跟着当前配置变化,哪些必须留下发生时的值。历史记录如果总是引用今天的配置,回头看就很难解释。

改数据结构时留下迁移

新增字段和更新课时信息时,需要保留已有课程、订单和学习记录。迁移文件比重新建一套库更繁琐一些,但也让修改过程有迹可循。这里会继续整理这些数据与接口上的取舍。