4.9 KiB
4.9 KiB
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: 单元测试项目
核心领域模块
-
Work: 工作任务管理
- WorkOrderEntity: 工作任务实体(支持多租户)
- WorkOrderFLPersonnelEntity: 任务与FL人员关联
- ProcessEntity: 工序管理
- ProcessGroupEntity: 工序组管理
-
Time: 时间和班次管理
- ShiftEntity: 班次定义
- ShiftRuleEntity: 班次规则
- CalendarEntity: 日历管理
- EmployeeLeaveEntity: 员工请假
-
Personnel: 人员管理
- PersonnelQualificationEntity: 人员资质
- PersonnelWorkLimitEntity: 人员工作限制
- QualificationEntity: 资质定义
-
Schedule: 排班调度
- AutoScheduleInput: 自动排班输入
- ScheduleValidationService: 排班验证服务
- TaskIntegrationInput: 任务整合输入
技术栈
- .NET 9.0: 主要开发框架
- FreeSql: ORM框架,支持MySQL
- ZhonTai.Admin: 中台管理框架
- DotNetCore.CAP: 事件总线,支持RabbitMQ
- xUnit: 单元测试框架
常用命令
构建和运行
# 构建整个解决方案
dotnet build NPP.SmartSchedue.sln
# 运行Host项目
dotnet run --project NPP.SmartSchedue.Host
# 发布项目
dotnet publish NPP.SmartSchedue.Host -c Release
测试
# 运行所有测试
dotnet test NPP.SmartSchedue.Tests
# 运行特定测试文件
dotnet test NPP.SmartSchedue.Tests --filter ClassName=TestName
# 生成测试覆盖率报告
dotnet test NPP.SmartSchedue.Tests --collect:"XPlat Code Coverage"
数据库相关
# 项目使用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节点