paiban/CLAUDE.md
Asoka.Wang 21f044712c 1
2025-08-27 18:39:19 +08:00

130 lines
4.9 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.

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
### 代码开发规范
- **引用检查**编写代码时必须检查所有using引用是否正确确保引用的命名空间和类存在
- **编译验证**:完成一个功能时必须执行编译检查,发现错误立即修复,确保代码能够正常编译
### 深度思考与详细实现要求
- **深度思考原则**:对每个业务问题都要进行深度思考,分析所有可能的边界情况和业务场景
- **最终抉择要求**:在分析各种方案后,必须给出明确的最终决策和理由,不允许含糊其辞
- **详细实现标准**:所有功能都必须详细实现,不允许简化或省略关键逻辑
- **完整性验证**:实现功能时必须考虑所有相关的上下文和依赖关系
- **业务场景覆盖**:确保代码能够处理所有合理的业务场景,包括异常情况
- **错误处理完整性**:每个方法都必须包含适当的异常处理和错误信息
- **注释详细程度**:关键业务逻辑必须包含详细的业务思考过程注释
## 项目概述
NPP.SmartSchedue 是一个智能生产调度系统,基于 .NET 9.0 和中台Admin框架开发实现生产任务的智能排班和调度管理。
## 架构设计
### 项目结构
- **NPP.SmartSchedue.Api.Contracts**: 契约层包含实体、接口和DTO定义
- **NPP.SmartSchedue.Api**: 业务逻辑层包含Repository和Service实现
- **NPP.SmartSchedue.Host**: 宿主程序Web API启动入口
- **NPP.SmartSchedue.Tests**: 单元测试项目
### 核心领域模块
1. **Work**: 工作任务管理
- WorkOrderEntity: 工作任务实体(支持多租户)
- WorkOrderFLPersonnelEntity: 任务与FL人员关联
- ProcessEntity: 工序管理
- ProcessGroupEntity: 工序组管理
2. **Time**: 时间和班次管理
- ShiftEntity: 班次定义
- ShiftRuleEntity: 班次规则
- CalendarEntity: 日历管理
- EmployeeLeaveEntity: 员工请假
3. **Personnel**: 人员管理
- PersonnelQualificationEntity: 人员资质
- PersonnelWorkLimitEntity: 人员工作限制
- QualificationEntity: 资质定义
4. **Schedule**: 排班调度
- AutoScheduleInput: 自动排班输入
- ScheduleValidationService: 排班验证服务
- TaskIntegrationInput: 任务整合输入
### 技术栈
- **.NET 9.0**: 主要开发框架
- **FreeSql**: ORM框架支持MySQL
- **ZhonTai.Admin**: 中台管理框架
- **DotNetCore.CAP**: 事件总线支持RabbitMQ
- **xUnit**: 单元测试框架
## 常用命令
### 构建和运行
```bash
# 构建整个解决方案
dotnet build NPP.SmartSchedue.sln
# 运行Host项目
dotnet run --project NPP.SmartSchedue.Host
# 发布项目
dotnet publish NPP.SmartSchedue.Host -c Release
```
### 测试
```bash
# 运行所有测试
dotnet test NPP.SmartSchedue.Tests
# 运行特定测试文件
dotnet test NPP.SmartSchedue.Tests --filter ClassName=TestName
# 生成测试覆盖率报告
dotnet test NPP.SmartSchedue.Tests --collect:"XPlat Code Coverage"
```
### 数据库相关
```bash
# 项目使用FreeSql进行数据库操作支持Code First
# 数据库连接配置在 ConfigCenter/dbconfig.json
# 初始化SQL脚本位于 ConfigCenter/createdbsql.txt
```
## 开发规范
### 实体设计
- 工作任务相关实体继承 `EntityTenant`(支持多租户)
- 基础配置实体继承 `EntityBase`
- 使用 FreeSql 特性进行数据库映射
### 服务层架构
- Repository层数据访问继承自 `AppRepositoryBase<T>`
- Service层业务逻辑实现对应的Interface
- 输入输出模型使用Input/Output后缀命名
### 命名约定
- 实体类Entity后缀
- 仓储接口I前缀 + Repository后缀
- 服务接口I前缀 + Service后缀
- 数据库表名:使用 DbConsts.TableNamePrefix 前缀
### 排班业务逻辑要点
- 任务状态使用 `WorkOrderStatusEnum` 枚举管理
- 支持任务优先级、紧急程度、复杂度等多维度排序
- FL人员与任务为多对多关系通过 WorkOrderFLPersonnelEntity 关联
- 支持批量任务整合和验证功能
- 班次规则支持多种类型,通过 ShiftRuleTypeEnum 管理
### 多任务验证架构决策
- **单一验证原则**:所有冲突检查统一在 `ValidateWorkOrderWithBatchContextAsync` 中完成
- **批次上下文集成**:每个单任务验证都考虑批次内其他任务的影响
- **取消跨任务验证**:原有的 `CheckCrossTaskConflictsAsync` 已被移除,避免重复验证
- **全面冲突检查**:包含时间冲突、工作量限制、班次规则、时间段重叠等所有验证维度
- **性能优化**:减少重复查询,统一数据获取和验证逻辑
## 配置文件
- 应用配置ConfigCenter/appconfig.json
- 数据库配置ConfigCenter/dbconfig.json
- JWT配置ConfigCenter/jwtconfig.json
- 缓存配置ConfigCenter/cacheconfig.json
- CAP事件总线appsettings.json中的CAP节点