ERPTurbo_Server/openspec/project.md
shenyifei 676539ae5c feat(docs): 添加OpenSpec规范文档和AI代理配置
- 新增OpenSpec规范文档,包含变更提案、任务清单和设计文档模板
- 添加AI代理配置文件,包括文档维护、代码分析和开发专家代理
- 更新.gitignore文件,排除Claude相关的临时文件和目录
- 添加项目上下文文档,定义技术栈、代码规范和架构模式
- 创建完整的OpenSpec指令文档,指导AI编码助手进行规范驱动开发
- 配置多端开发代理,支持Java、React、Taro/NutUI等技术栈
- 建立代码质量和工程规范,确保团队协作的一致性
- 定义微服务架构下的领域驱动设计模式和COLA架构规范
2025-11-24 23:29:15 +08:00

185 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Project Context
## Purpose
ERPTurbo_Server 是一个现代化的企业资源规划(ERP)系统后端服务,专注于供应链管理和业务流程自动化。系统采用微服务架构,支持采购管理、产品管理、订单管理、经销商管理、用户权限管理等核心业务功能。
## Tech Stack
### 核心技术栈
- **Java版本**: Java 21 (LTS)
- **框架**: Spring Boot 3.4.5, Spring Cloud 2024.0.1, Spring Cloud Alibaba 2023.0.3.3
- **架构模式**: DDD (领域驱动设计) + COLA架构
- **微服务**: Apache Dubbo 3.2.10
- **服务发现**: Nacos
- **数据库**: MySQL 8.0.28
- **ORM**: MyBatis Plus 3.5.10.1, MyBatis 3.0.4
- **连接池**: Druid 1.2.20
- **缓存**: Redis, Redisson
- **认证授权**: Sa-Token
- **API文档**: Swagger/OpenAPI
- **构建工具**: Maven
- **日志**: Logback
### 开发工具
- **代码生成**: Lombok
- **对象映射**: MapStruct
- **参数校验**: Validation
- **数据库连接池**: Druid
- **分布式事务**: Seata (可选)
## Project Conventions
### Code Style
#### 命名规范
- **实体类**: `Product` (领域实体), `ProductDO` (数据对象)
- **服务接口**: `功能名+ServiceI`
- **服务实现**: `功能名+ServiceImpl`
- **查询执行器**: `功能名+QryExe`
- **命令执行器**: `功能名+CmdExe`
- **网关实现**: `功能名+GatewayImpl`
- **转换器**: `功能名+Convert`
- **控制器**: `功能名+Controller`
#### 代码注解规范
- 使用Lombok简化代码 (`@Data`, `@RequiredArgsConstructor`, `@Builder`)
- MapStruct进行对象转换 (`@Mapper`)
- 统一的异常处理
- Spring注解: `@Service`, `@Component`, `@DubboService`, `@DubboReference`
- 权限注解: `@SaCheckLogin`, `@SaCheckRole`, `@SaCheckPermission`
- API文档注解: `@Tag`, `@Operation`, `@Schema`
#### 包结构规范
```
com.xunhong.erp.turbo/
├── api/ # API接口定义
│ ├── dto/ # 数据传输对象
│ │ ├── cmd/ # 命令对象
│ │ ├── qry/ # 查询对象
│ │ ├── vo/ # 视图对象
│ │ └── enums/ # 枚举类
│ └── api/ # 服务接口
├── biz/ # 业务逻辑层
│ ├── app/ # 应用服务
│ │ ├── service/ # 服务实现
│ │ └── executor/ # 执行器
│ ├── domain/ # 领域层
│ │ ├── entity/ # 领域实体
│ │ └── gateway/ # 网关接口
│ └── infrastructure/ # 基础设施层
│ ├── entity/ # 数据实体
│ ├── mapper/ # 数据访问
│ └── convert/ # 对象转换
```
### Architecture Patterns
#### 分层架构
项目采用严格的分层架构遵循DDD和COLA架构原则
1. **API层**: 接口定义包括DTO、Command、Query、VO
2. **应用层**: Service服务实现Executor执行器
3. **领域层**: Entity实体Gateway网关接口
4. **基础设施层**: DO数据对象Mapper数据访问Convert转换器
#### 微服务架构
- 基于Dubbo的RPC通信
- Nacos作为注册中心和配置中心
- 模块化设计,职责单一
#### 数据访问模式
- 使用MyBatis Plus进行数据库操作
- DO与领域实体分离
- 通过MapStruct进行对象转换
- 支持多数据源
### Testing Strategy
#### 测试框架
- **单元测试**: JUnit
- **集成测试**: Spring Boot Test
- **内存数据库**: H2 (用于测试)
#### 测试规范
- 测试类命名: `被测试类+Test`
- 单元测试覆盖核心业务逻辑
- 集成测试验证API接口
- 使用H2内存数据库进行测试
### Git Workflow
#### 分支策略
- **master**: 主分支,稳定版本
- **develop**: 开发分支
- **feature/xxx**: 功能分支
- **hotfix/xxx**: 热修复分支
#### 提交规范
基于Conventional Commits规范
- `feat`: 新功能
- `fix`: 修复
- `refactor`: 重构
- `docs`: 文档
- `style`: 格式调整
- `test`: 测试
- `chore`: 构建或辅助工具变动
## Domain Context
### 核心业务领域
1. **采购管理**: 供应商管理、采购订单、采购成本控制
2. **产品管理**: 产品信息维护、成本费用关联、分类管理
3. **订单管理**: 订单处理、订单供应商关联、包装发货
4. **经销商管理**: 经销商信息、仓库管理、返利客户
5. **权限管理**: 用户、角色、权限的完整RBAC模型
6. **基础设施**: 字典、平台、渠道、物料、协议等基础数据
### 业务规则
- 严格的权限控制体系
- 多租户支持 (基于平台维度)
- 审计日志记录
- 数据一致性要求高
## Important Constraints
### 技术约束
- 必须使用Java 21 LTS版本
- 严格遵循DDD和COLA架构
- 微服务间通信必须使用Dubbo
- 数据库操作必须通过MyBatis Plus
- 权限控制必须集成Sa-Token
### 业务约束
- 数据一致性要求高,特别是财务相关数据
- 需要支持高并发访问
- 严格的审计要求
- 多租户数据隔离
### 安全约束
- 所有API接口必须进行权限校验
- 敏感数据必须加密存储
- 审计日志必须完整记录
- 防止SQL注入和XSS攻击
## External Dependencies
### 核心依赖
- **Spring生态**: Spring Boot, Spring Cloud, Spring Security
- **数据库**: MySQL 8.0.28
- **缓存**: Redis
- **消息队列**: 可选RocketMQ/RabbitMQ
- **服务治理**: Nacos, Dubbo
- **监控**: Micrometer, Prometheus (可选)
### 外部服务
- **第三方支付**: 支付宝、微信支付 (如需要)
- **物流服务**: 快递公司API接口 (如需要)
- **短信服务**: 阿里云短信、腾讯云短信 (如需要)
### 开发工具
- **构建工具**: Maven 3.8+
- **IDE**: IntelliJ IDEA (推荐)
- **版本控制**: Git
- **API测试**: Postman/Swagger UI