模块化服务层的边界设计
Nov 3, 2026VrmMate Team
模块的价值不在于目录整齐,而在于删掉一个功能时不需要动别处。
模块层的价值不在于目录整齐,而在于删除一个功能时不需要动其他模块。
允许的依赖
模块只能依赖 core、config、lib 和 drizzle-orm。跨模块调用是被禁止的,只有支付到积分、订阅,以及 AI 任务到积分这几条链路例外,因为它们必须处在同一次结算里。
为什么要这么严
模块互相 import 之后,测试要拖起整张依赖图,删功能会牵扯到无关文件,权限与计费的副作用也会扩散到不可预期的地方。
路由应该多薄
API 路由只做三件事:验证身份、解析参数、调用服务并返回统一响应。业务判断留在服务层,路由不做第二套规则。
落地建议
如果两个模块确实要共享逻辑,把它下沉到 lib 或 core,而不是让模块之间互相引用。