优化结构

This commit is contained in:
Yvan
2026-08-21 00:31:43 +08:00
parent d2fb5c11b8
commit c968f9f24e
8 changed files with 164 additions and 159 deletions
-31
View File
@@ -1,31 +0,0 @@
# Internal Architecture
本项目采用参考 Kratos beer-shop 的模块化单体结构:先按业务边界垂直拆分,再在
模块内部保持 Kratos 的 `service -> biz <- data` 依赖方向。
```text
internal/
app/ 应用组合根,只决定启用哪些模块
conf/ 运行配置
logging/ 公共日志基础设施
modules/
system/ 稳定的后台系统能力
biz/ 领域对象、用例、仓储接口
data/ PO、仓储实现、系统持久化
service/ DTO 与 DO 转换
transport/ HTTP handler、router、middleware
initialize/ system 首次安装编排
integration/ 外部服务适配器
worker/ system 后台任务
platform/ 不含业务语义的跨模块机制
database/
module/
task/
```
依赖方向:`cmd -> app -> modules -> platform`。`platform` 不得引用业务模块;业务
模块之间优先通过 `biz` 接口协作,不直接引用对方的 `data` 或 `transport`。
新增模块时,在 `internal/modules/<name>` 内完成自己的分层,并在
`internal/app/catalog.go` 注册迁移、菜单/API、默认任务、任务实现和路由。组合根
是唯一允许同时知道多个模块具体类型的位置。
-32
View File
@@ -1,32 +0,0 @@
# Internal Modules
参考 Kratos beer-shop 的垂直业务拆分方式,业务代码按模块组织在
`internal/modules/<name>` 下。当前项目是模块化单体,因此共享一个进程和组合根,
但每个模块仍独立拥有 `biz`、`data`、`service`、`transport` 和初始化贡献。
## 当前模块
`system` 是模板自带的后台管理模块,包含用户、权限、菜单、API、公告、部门、
字典、文件、审计、定时任务、支付和系统初始化等现有表与逻辑。
## 新增业务模块
新增业务请创建 `internal/modules/<business>`,不要把领域模型、仓储或 HTTP
处理器继续添加到 `internal/biz`、`internal/data`、`internal/service` 等根目录。
数据库表和迁移由业务模块自己的 `data` 包负责;只有数据库连接生命周期和通用
迁移执行器属于 `internal/platform/database`。
模块通过 `internal/app/catalog.go` 接入组合根:
- `module.Definition.Migrations`:模块自己的表结构迁移
- `module.Definition.Surface`:菜单和 API 元数据,首次初始化时统一写入系统表
- `module.Definition.TimedTasks`:模块默认定时任务记录
- `module.Definition.Tasks`:无状态的进程内任务方法
- `module.RouteRegistrar`:需要依赖 Handler 的路由注册器,在 `app.Runtime` 中组合
无依赖的任务方法可以放进 `Definition.Tasks`。需要仓储或用例依赖的任务方法由
模块实现 `task.Contributor`,再由 `internal/app` 激活。新增模块只修改应用组合根,
不修改 `system` 的初始化、worker、路由或数据层。
`integration` 是外部系统适配器,不是通用工具;只有实现了稳定跨模块协议的能力
才上移到 `platform`。`utils` 仅保留无状态、无业务语义且确实被本模块复用的函数。