A stray commit buried multiple levels deep cost me months2 months agohttps://www.droppedasbaby.com/posts/db-commits/程序员应负责混乱的事务处理;框架和需求不应受到指责。不要在数据库抽象层之外手动提交或使用事务;它应该拥有所有提交权。避免在数据库层之外传递数据库模型对象,以防止静默写入。使用AST分析或linter(如flake8)禁止在数据库层之外手动提交、访问会话和使用事务。可以在CI中使用LLM检查数据库层是否返回数据库模型而不是领域模型。考虑为原子性多写操作复制代码以保持原子性可见。推荐书籍:《领域驱动设计》。