# CNC机床数据采集分析系统

## 项目概述

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

## 技术栈

- **后端**: .NET 6 Web API
- **数据库**: MySQL 8.0+ (使用 Pomelo.EntityFrameworkCore.MySql)
- **ORM**: Entity Framework Core 6.0
- **测试**: xUnit
- **API文档**: Swagger/OpenAPI

## 项目结构

```
haoliang/
├── Haoliang.Api/           # Web API 项目
│   ├── Controllers/       # API 控制器
│   ├── Program.cs         # 应用程序入口
│   └── appsettings.json   # 配置文件
├── Haoliang.Core/         # 核心业务逻辑项目
├── Haoliang.Data/         # 数据访问层项目
│   ├── Entities/          # 实体类
│   └── Repositories/      # 数据仓储
├── Haoliang.Models/       # 数据模型项目
├── Haoliang.Tests/        # 单元测试项目
├── database/             # 数据库脚本
├── src/                  # 源代码备份
└── test-reports/         # 测试报告
```

## 快速开始

### 环境要求

- .NET 6.0 SDK
- MySQL 8.0+
- Visual Studio 2019 或更高版本

### 安装步骤

1. 克隆项目
```bash
git clone <repository-url>
cd haoliang
```

2. 还原 NuGet 包
```bash
dotnet restore
```

3. 配置数据库连接
打开 `Haoliang.Api/appsettings.json`，修改数据库连接字符串：
```json
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=cnc_business;Uid=root;Pwd=your_password;"
  }
}
```

4. 更新数据库
```bash
dotnet ef database update
```

5. 运行项目
```bash
dotnet run --project Haoliang.Api
```

### 运行测试

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

# 运行特定项目测试
dotnet test Haoliang.Tests

# 生成测试报告
./test.sh
```

## 核心功能

### 1. 设备管理
- CNC设备信息管理
- 设备状态监控
- 设备模板配置

### 2. 生产统计
- 零件产量自动统计
- 加工过程分析
- 程序切换处理逻辑

### 3. 用户管理
- 用户信息管理
- 权限控制
- 设备绑定管理

### 4. 系统管理
- 系统配置
- 日志管理
- 告警管理

## API 文档

启动项目后，访问以下地址查看 API 文档：
- Swagger UI: `https://localhost:5001/swagger`

## 开发规范

### 代码提交规范

**重要**: 每次代码修改，经过测试通过之后，提交到git，并写清楚修改内容

#### 提交信息格式

```
<type>: <description>

[optional body]

[optional footer]
```

#### Type 类型说明

- `feat`: 新功能
- `fix`: 修复bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 代码重构
- `test`: 测试相关
- `chore`: 构建工具或依赖管理

#### 提交示例

```
feat: 添加设备批量导入功能

- 实现Excel文件上传和解析
- 添加设备数据验证逻辑
- 批量插入优化，减少数据库查询次数

fix: 修复设备状态更新失败的问题

- 修复并发更新时的竞态条件
- 添加重试机制
- 优化错误处理逻辑
```

### 测试规范

- 所有新功能必须包含单元测试
- 测试覆盖率要求达到 80% 以上
- 测试用例需要覆盖正常和异常情况
- 运行测试命令：`dotnet test`

### 代码规范

- 遵循 C# 编码规范
- 使用异步编程模式
- 添加适当的 XML 注释
- 避免硬编码，使用配置文件

## 数据库设计

### 业务库 (cnc_business)
存储业务数据：设备、员工、模板、产量、配置、告警等

### 日志库 (cnc_log)
存储原始采集数据、系统日志、异常日志

## 部署说明

### 开发环境
- 使用 IIS 或 Kestrel 服务器
- 配置开发数据库连接

### 生产环境
- 配置生产数据库连接
- 设置适当的日志级别
- 启用 HTTPS
- 配置反向代理

## 故障排除

### 常见问题

1. **数据库连接失败**
   - 检查 MySQL 服务是否运行
   - 验证连接字符串配置
   - 确保数据库用户权限正确

2. **编译错误**
   - 确保 .NET 6.0 SDK 已安装
   - 运行 `dotnet restore` 更新包依赖
   - 检查项目引用是否正确

3. **测试失败**
   - 确保测试数据库配置正确
   - 检查测试数据是否准备充分
   - 运行 `dotnet test --verbosity detailed` 查看详细错误信息

## 版本历史

- v1.0.0 - 初始版本，实现基础功能模块

## 贡献指南

1. Fork 项目
2. 创建功能分支
3. 提交变更
4. 推送到分支
5. 创建 Pull Request

## 许可证

本项目采用 MIT 许可证