# CNC机床数据采集分析系统 - 开发规范

## 🚀 项目概述

CNC机床多品牌统一化分布式数据采集分析系统，实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理，及BI大屏实时展示。

## 📋 技术栈

- **Backend**: .NET 6.0 WebApi (IIS部署)
- **Frontend**: Vue.js 管理后台 + BI大屏
- **Database**: MariaDB 10.6+ (本地部署，双库分离)
- **Real-Time**: SignalR WebSocket
- **Testing**: xUnit + Moq
- **Caching**: Memory Cache + Redis

## 🏗️ 项目结构

```
src/
├── Haoliang.Api/           # API接口层 (.NET 6.0)
│   ├── Controllers/       # API控制器
│   ├── Hubs/             # SignalR Hub
│   ├── Middleware/       # 中间件
│   └── Filters/          # 过滤器
├── Haoliang.Core/        # 业务逻辑层 (.NET 6.0)
│   └── Services/         # 业务服务
├── Haoliang.Data/        # 数据访问层 (.NET 6.0)
│   └── Repositories/     # 数据仓储
├── Haoliang.Models/      # 数据模型层 (.NET 6.0)
└── Haoliang.Tests/       # 单元测试 (.NET 6.0)
```

## 🔧 开发环境要求

### 必需组件
- .NET 6.0 SDK
- Visual Studio 2022 或 VS Code
- MySQL/MariaDB 10.6+
- Git
- Redis (可选，用于分布式缓存)

### IDE推荐配置
- C# Dev Kit 扩展
- IntelliCode C# 扩展
- GitLens 扩展
- Docker 扩展

## 📝 代码规范

### C# 代码规范
- 使用 PascalCase 命名空间和类名
- 使用 camelCase 参数和局部变量
- 使用 PascalCase 公共方法和属性
- 使用 _ 前缀表示私有字段

### API 设计规范
- RESTful API 设计
- 统一响应格式：`{ success, data, message, timestamp }`
- API 版本化：`/api/v1/`
- 状态码：200(成功), 400(客户端错误), 500(服务器错误)

### 注释规范
- 使用 XML 文档注释
- 公共接口必须注释
- 复杂业务逻辑需要注释
- 使用英文注释

## 🔄 Git 工作流

### 强制要求：每次修改必须提交到Git仓库

**仓库信息**:
- **仓库地址**: https://git.cjy.net.cn/jcl/haoliang.git
- **用户名**: 821644@qq.com
- **密码**: 123465a

### 提交规范

#### 1. 每次修改完成后必须执行以下步骤：

```bash
# 1. 查看当前状态
git status

# 2. 添加所有修改的文件
git add .

# 3. 查看即将提交的变更
git status

# 4. 创建提交（根据修改内容选择合适的类型）
git commit -m "类型: 简短描述

详细说明（可选）"

# 5. 推送到远程仓库
git push origin main
```

#### 2. 提交信息规范

**提交类型**:
- `feat`: 新功能
- `fix`: 修复bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 代码重构
- `test`: 测试相关
- `chore`: 构建或辅助工具变动

**示例**:
```bash
git commit -m "feat: 添加生产统计功能
- 实现OEE计算
- 添加生产趋势分析
- 集成实时数据更新"

git commit -m "fix: 修复设备状态同步问题
- 解决WebSocket连接异常
- 优化状态机逻辑"
```

#### 3. 分支管理策略

**主分支**:
- `main`: 生产环境代码

**开发流程**:
```bash
# 创建功能分支
git checkout -b feature/user-management

# 开发完成后合并到main
git checkout main
git merge feature/user-management

# 删除分支
git branch -d feature/user-management
```

## 🧪 测试要求

### 单元测试
- 所有核心服务必须有单元测试
- 测试覆盖率不低于80%
- 使用 Moq 进行模拟测试
- 测试文件命名: `[ClassName]Tests.cs`

### 集成测试
- API端点必须有集成测试
- 使用 TestHost 进行测试
- 测试数据库连接和事务

### 测试命令
```bash
# 运行所有测试
dotnet test

# 运行特定测试
dotnet test --filter "ProductionServiceTests"

# 生成测试报告
dotnet test --collect:"XPlat Code Coverage"
```

## 🚀 部署要求

### 开发环境
- 使用 Docker Compose 快速启动
- 配置文件：`docker-compose.yml`
- 数据库迁移：`dotnet ef database update`

### 生产环境
- Windows Server 2019+
- IIS 10.0+
- .NET 6.0 运行时
- MariaDB 10.6+

### 性能要求
- 支持100+设备同时采集
- API响应时间 < 500ms
- WebSocket延迟 < 100ms
- 7×24小时稳定运行

## 🔒 安全要求

### 认证授权
- JWT Token 认证
- 角色基础访问控制(RBAC)
- 密码加密存储

### 数据安全
- 数据库连接字符串加密
- 敏感信息配置化
- 审计日志记录

### 网络安全
- HTTPS强制加密
- CORS跨域配置
- API限流保护

## 📊 监控和日志

### 日志级别
- **Error**: 系统错误和异常
- **Warning**: 警告和潜在问题
- **Information**: 重要业务操作
- **Debug**: 调试信息

### 性能监控
- 使用 Application Insights
- 关键指标监控
- 告警规则配置

## 🔄 代码审查流程

1. **开发完成** → 提交到Git
2. **自动构建** → CI/CD流水线
3. **自动化测试** → 单元测试+集成测试
4. **代码审查** → 团队成员Review
5. **部署上线** → 生产环境发布

## 📚 相关文档

- [API接口文档](https://git.cjy.net.cn/jcl/haoliang.git/blob/main/docs/api.md)
- [数据库设计文档](https://git.cjy.net.cn/jcl/haoliang.git/blob/main/docs/database.md)
- [部署运维文档](https://git.cjy.net.cn/jcl/haoliang.git/blob/main/docs/deployment.md)
- [用户操作手册](https://git.cjy.net.cn/jcl/haoliang.git/blob/main/docs/user-manual.md)

## 🆘 常见问题

### Git操作问题
```bash
# 解决Git认证问题
git config --global user.name "821644@qq.com"
git config --global user.password "123465a"

# 清理Git缓存
git rm -r --cached .
git add .
```

### 构建问题
```bash
# 清理解决方案
dotnet clean
dotnet restore

# 重新生成项目文件
dotnet build --force
```

### 数据库问题
```bash
# 更新数据库迁移
dotnet ef database update

# 创建新的迁移
dotnet ef migrations add MigrationName
```

---

**注意**: 本文档将随着项目发展持续更新，请定期查看最新版本。