项目结构
后端仓库
text
yeah-boot
├── yeah-admin 管理后台启动工程
├── yeah-app App 独立启动工程
├── yeah-biz-common
│ ├── yeah-biz-data 跨业务实体、Mapper 与 Repo
│ └── yeah-biz-service 跨业务服务
├── yeah-biz-module
│ ├── yeah-basic 地区、文件、存储
│ ├── yeah-public 公开文件访问
│ └── yeah-upms 用户、角色、资源、组织等
└── yeah-framework
├── yeah-auth 认证鉴权与 Token
├── yeah-common-core 返回、异常、日志、校验等
├── yeah-common-data 系统通用数据层
├── yeah-flowcontrol 接口限流
├── yeah-generator 代码生成
├── yeah-mq 消息队列抽象
├── yeah-notification 通知能力
├── yeah-storage 存储抽象与实现
└── yeah-websocket WebSocket放置原则
- 启动类与入口组合放在
yeah-admin或yeah-app。 - 具体业务 Controller、DTO 和 Service 放在对应
yeah-biz-module。 - 跨多个业务模块共享的实体与查询放在
yeah-biz-common。 - 与业务无关、可复用的框架能力放在
yeah-framework。 - 不要为了复用一行代码制造跨模块反向依赖。
管理后台仓库
text
src
├── api 接口请求封装
├── assets 全局样式与静态资源
├── components 可复用组件
├── composables 可复用组合式逻辑
├── constants 资源类型等常量
├── layouts 页面整体布局
├── router 固定路由、动态路由和守卫
├── stores Pinia 状态
├── types 请求与响应类型
├── utils 请求、Token、下载和会话处理
└── views 页面模块页面调用链
text
View
→ src/api
→ src/utils/request.ts
→ /api 代理或生产 API 地址
→ 后端 Controller新增页面时应同时考虑 TypeScript 类型、API 封装、资源路径、按钮视图权限和后端接口权限,而不是只创建一个 .vue 文件。
三个入口的边界
/admin/**:管理后台接口。/app/**:App 业务接口。/public/**:明确允许匿名访问的接口。
公开接口必须显式使用公开访问标记;其他接口默认进入认证链路。管理接口还应根据功能增加权限表达式。