分层与模块边界
公开类型放 api,用例与端口放 core,HTTP、持久化与技术适配放 infrastructure;单体只做装配。
文档导航
本页目录
一项需求应该放在哪里?
当前单体在 单体应用 中装配 UMS、PMS、OMS、CMS;四域保留各自迁移与公开类型,共享单体数据源和本地事务管理器。
输入输出类型描述公开业务契约,core用例组织业务校验和事务,infrastructure将HTTP、数据库与外部技术实现适配到端口。持久化对象不能直接作为公开响应,单体启动层也不新增第二份业务规则。
依赖方向怎样检查?
- core不依赖具体HTTP控制器或Mapper。
- 同域公开类型不得暴露私有数据库结构。
- 其他域通过公开契约协作,不跨schema查询私有表。
- 跨域原子写入固定锁顺序并登记,避免持锁进行无界远程调用。
怎样表达失败?
公共错误对象包含 code 与 message;具体状态码、字段及登录要求须以对应接口实现和契约为准。
业务拒绝、系统失败、外部结果未知分别保留。异常记录traceId、类别和安全代码位置,不在普通日志中输出请求体、SQL参数或敏感身份。前端根据契约显示可理解反馈,同时保留用户输入。
变更后验证什么?
针对受影响模块编译,再核对公开响应、授权拒绝和持久回读。迁移与事务变更增加真实数据库检查;跨域测试应覆盖失败后无部分成功和锁顺序边界。相关范围通过后复用同版本证据,避免无依据重复全套测试。