问题所在
意大利的医学继续教育受到严格监管:每一门课程、每一次报名、每一个学分都必须在多年内可追溯。客户此前一直用一套多年前开发的管理系统处理这一切,而这套系统已经成了业务发展的绊脚石—运行缓慢、难以修改,而且只要一扩展就会牵一发而动全身。重写系统意味着要迁移二十年的真实数据,且不能丢失任何一条记录。
我开发了什么
从零开始,完整重建管理平台:
- 课程与学分管理,面向经认证的继续教育,并提供监管机构要求的各类报表。
- 报名、学员与证书,完整保留每位专业人员的全部历史记录。
- 在用数据的迁移:从旧系统迁入20,445 个联系人和 39,970 条报名记录,并逐条核验。
- 一个独立的科研数据平台(SESP Data),服务于一个欧盟资助的科研项目;在该项目中,平台本身就是项目的交付成果之一,而不仅仅是一个工具。
技术栈
前端采用 React,后端采用 NestJS 和 PostgreSQL,部署在独立服务器上。科研平台是一个 Next.js 应用。没有任何框架是为了赶时髦而选的:旧系统之所以失败,是因为无法安全地修改,所以新系统从头到尾都是强类型的,数据模型也有明确的书面文档,而不是靠心照不宣。
为什么这样做
重建工作与旧系统并行推进,而不是一夜之间直接替换。继续教育的截止日期由法律规定:一次失败的切换不只是停机一天,而是专业人员会失去他们已经获得的学分。数据先完成迁移,并与旧系统自身的统计总数逐一核对,确认无误后才开始切换。


