独立开发,完整替换遗留 C#/.NET 4.8 经销商门户 —— 新旧系统共用同一生产数据库,处理实际订单,零停机、零 schema 变更。

新 Django API 和旧 .NET ERP 同时读写相同的 SQL Server 表。Django 用 managed = False 映射 42 张遗留表 —— ORM 正常使用,但 Django 不会尝试创建、修改或迁移这些表。另外 2 张新 managed 表用于 ERP 不涉及的资产分类功能。两套系统在互不感知的情况下并行处理订单。
澳洲、英国、美国的经销商各自有独立的 SQL Server 数据库,包含区域定价、库存和订单。没有为每个区域单独部署后端,而是让一个 Django 实例根据 JWT 中的 region 字段,通过自定义中间件 + 数据库路由,将每个 ORM 查询路由到对应数据库。
三个仓库,一个人 —— 后端 API 变了,前端必须立刻报错。后端 CI 生成 OpenAPI 规范,自动同步到前端仓库并生成 TypeScript 类型。契约偏差是构建失败,而非经销商发现的运行时 bug。
SQL Server 在另一台 AWS 实例上,每次认证查询都要跨网络。API 服务器上的 5 分钟 LocMemCache 消除了重复请求的网络往返 —— 足够短,ERP 侧的用户变更(禁用账号、修改权限)几分钟内仍能生效。
2 MB 的 CI 硬限制在合并前拦截体积退化 —— 不依赖人工 review 来发现臃肿的引入。
9 个功能模块很容易变成依赖蜘蛛网。ESLint 规则编码了依赖方向(types → services → hooks → features),禁止跨模块引用。架构违规直接构建失败 —— 不会以"以后再改"的 TODO 存活。