第二层级配置(权重: 75),作用于当前代码仓库。定义项目级技术栈、架构约定、构建命令和团队协作规范,优先于 L1 公司统一配置生效。
设计原则:本文件声明项目的技术事实(用了什么、怎么组织)和团队共识(代码风格、架构决策)。L1 已覆盖的通用规则此处不重复。
| 层面 | 技术 | 版本要求 | 说明 |
|---|---|---|---|
| 后端语言 | Java | >= 17 (LTS) | 优先使用最新 LTS |
| 后端框架 | Spring Boot / Spring Cloud | Alibaba 2022.x / 3.x | 微服务架构 |
| 前端框架 | Vue 3 | ^3.3+ | Composition API |
| UI 组件库 | Ant Design Vue | ^4.x | antdv |
| 前端语言 | TypeScript | strict 模式 | 新组件强制 TS |
| 构建工具(前端) | Vite | ^5.x | — |
| 辅助语言 | Python | >= 3.10 | 脚本/工具/数据处理 |
| 数据库 | PostgreSQL / MySQL | — | 按项目选择 |
| ORM | MyBatis-Plus / JPA | — | 按项目选择 |
| 缓存 | Redis | — | — |
| 消息队列 | RabbitMQ / RocketMQ / Kafka | — | 按场景选择 |
| 容器化 | Docker + Docker Compose | — | 本地开发统一 |
| CI/CD | GitHub Actions / Jenkins | — | 按团队基础设施 |
lodash(用 lodash-es 或原生替代)、moment.js(用 dayjs)、jquery 及其插件project-root/
├── java/ # Java 后端服务
│ ├── src/main/java/
│ │ └── com/company/project/
│ │ ├── config/ # 配置类
│ │ ├── controller/ # REST API 接口层
│ │ ├── service/ # 业务逻辑层(接口 + impl 分离)
│ │ ├── repository/ # 数据访问层
│ │ ├── entity/ # 数据库实体 / DO
│ │ ├── dto/ # 数据传输对象
│ │ ├── common/ # 公共模块(异常、常量、工具、枚举)
│ │ └── util/ # 工具类
│ ├── src/main/resources/
│ │ ├── mapper/ # MyBatis XML 映射文件
│ │ └── application*.yml # 配置文件
│ └── pom.xml
│
├── web/ # Vue 前端应用
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── views/ # 页面视图
│ │ ├── components/ # 公共组件
│ │ ├── composables/ # 组合式函数
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── utils/ # 工具函数
│ │ ├── assets/ # 静态资源
│ │ ├── styles/ # 全局样式
│ │ ├── layout/ # 布局组件
│ │ └── App.vue
│ ├── package.json
│ ├── vite.config.ts
│ └── tsconfig.json
├── app/ # Vue 前端应用
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── views/ # 页面视图
│ │ ├── components/ # 公共组件
│ │ ├── composables/ # 组合式函数
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── utils/ # 工具函数
│ │ ├── assets/ # 静态资源
│ │ ├── styles/ # 全局样式
│ │ ├── layout/ # 布局组件
│ │ └── App.vue
│ ├── package.json
│ ├── vite.config.ts
│ └── tsconfig.json
│
├── scripts/ # Python / Shell 脚本工具
├── docker-compose.yml
├── Dockerfile
└── docs/ # 项目文档
Result<T> 包装@ControllerAdvice + 自定义异常体系,禁止 try-catch 吞掉异常/api/v1/xxx<script setup lang="ts">components/api/ 封装请求方法,组件中直接调用mvn clean compile # 编译
mvn clean package -DskipTests # 打包(跳过测试)
mvn clean install # 安装到本地仓库
mvn test # 运行单元测试
mvn verify # 运行集成测试
mvn checkstyle:check # 代码风格检查
mvn spring-boot:run # 启动应用
pnpm --filter frontend dev # 启动开发服务器
pnpm --filter frontend build # 生产构建
pnpm --filter frontend lint # ESLint 检查
pnpm --filter frontend typecheck # TypeScript 类型检查
pnpm --filter frontend test # 单元测试
pnpm --filter frontend test:coverage # 覆盖率报告
docker compose up -d postgres redis rabbitmq # 启动基础中间件
docker compose down # 停止并清理
docker compose logs -f [service] # 查看日志
AI 执行任务后,若涉及代码变更:
- 后端变更:应确认 Maven 编译通过(
mvn compile)- 前端变更:应运行
lint+typecheck验证
基础 Git 规范(提交格式、分支命名)已在 L1 §四 中定义,以下为本仓库的补充约定。
| 分支 | 命名 | 说明 | 合入目标 |
|---|---|---|---|
| 主分支 | main |
生产环境代码 | — |
| 开发分支 | develop |
开发集成分支 | → main(发布时) |
| 功能分支 | feature/xxx |
新功能开发 | → develop |
| 修复分支 | fix/xxx |
Bug 修复 | → develop(普通)/ main(紧急) |
| 发布分支 | release/x.x.x |
发版准备 | → main + develop |
[type] 简短描述| 测试类型 | 工具 | 要求 |
|---|---|---|
| 单元测试 | JUnit 5 + Mockito | Service 层核心逻辑必须有单测 |
| 集成测试 | Spring Boot Test + Testcontainers | 关键 API 端点需集成测试 |
| 覆盖率目标 | JaCoCo | 行覆盖率 >= 60%(新增代码) |
| 测试类型 | 工具 | 要求 |
|---|---|---|
| 单元测试 | Vitest | composables / utils 必须有单测 |
| 组件测试 | @testing-library/vue | 核心业务组件需组件测试 |
| 测试文件命名 | *.test.ts |
与源文件同目录 |
| Mock 策略 | vitest.mock | 优先 mock API 请求层,不 mock 内部实现 |
公司统一配置 (L1, 权重25) ← 安全红线、技术选型、编码底线
↓ 被覆盖
仓库共享配置 (L2, 权重75) ← 本文件(项目技术栈、架构约定、构建命令)
↓ 被覆盖
本地私有配置 (L3, 权重100) ← 最高优先级,本地环境 + 个人偏好
| 内容 | 为什么只在 L2 |
|---|---|
| 具体技术栈声明(Java 17 / Vue 3 / Spring Cloud / antdv) | 这是项目事实,非通用规则 |
| 分层架构约定(Controller→Service→Repository) | 项目特定的架构决策 |
| 多语言构建命令(Maven + pnpm + Docker) | 项目特定的工具链 |
| PR/MR 的项目级补充要求 | 团队协作特定约定 |
| 测试约定和覆盖率目标 | 项目级质量要求 |
| 业务领域知识和常见坑点 | 项目独有上下文 |
最后更新:2026-04-18 版本:4.0.0(3层架构版)