paiban/AGENTS.md
Developer caba7e68b3 feat(algorithm): 优化线性规划引擎的负载均衡逻辑
在负载均衡计算中引入历史任务数据,改进平均工作负载计算方式并修复相关语法错误。
2025-09-23 01:32:11 +08:00

3.0 KiB

Repository Guidelines

Project Structure & Module Organization

Source lives under the solution NPP.SmartSchedue.sln. NPP.SmartSchedue.Host hosts the ASP.NET Core app, with environment settings in appsettings*.json, seed scripts in ConfigCenter and InitData, and static assets in wwwroot. Domain services sit in NPP.SmartSchedue.Api, organized into Core (attributes, constants), Services (business logic), and Repositories (data access). Shared contracts, DTOs, and interfaces reside in NPP.SmartSchedue.Api.Contracts; keep cross-project types there. Tests are in NPP.SmartSchedue.Tests, with reusable fixtures in BaseTest and service-focused integration suites under Services.

Build, Test, and Development Commands

  • dotnet restore NPP.SmartSchedue.sln restores all project dependencies.
  • dotnet build NPP.SmartSchedue.sln -c Release validates compilation; use -c Debug during local iteration.
  • dotnet run --project NPP.SmartSchedue.Host boots the API with the default profile; add --launch-profile Development when you need local CAP setups.
  • dotnet test NPP.SmartSchedue.Tests/NPP.SmartSchedue.Tests.csproj --logger "trx;LogFileName=test-results.trx" exercises the xUnit suites and saves artifacts for PR review.

Coding Style & Naming Conventions

Target .NET 9 defaults: four-space indentation, braces on new lines, and explicit namespaces. Use PascalCase for classes, public members, and DTOs, camelCase for locals and private fields, and prefix interfaces with I as seen in Api.Contracts. Suffix asynchronous methods with Async, and keep request/response models in the Contracts project. Run dotnet format before committing to enforce spacing and using-order consistency.

Testing Guidelines

Write xUnit tests alongside existing patterns such as EquipmentMaintenanceIntegrationTest. Name new files {Feature}Test.cs or {Feature}IntegrationTest.cs, group helper logic in BaseTest, and rely on Microsoft.AspNetCore.Mvc.Testing for host bootstrapping. Aim to cover new service paths and repository edge cases; add mocks via Moq where external systems (CAP, RabbitMQ, MySQL) would otherwise be required.

Commit & Pull Request Guidelines

Prefer descriptive commits (feat(scheduling): add notification workflow) instead of numeric placeholders seen in recent history. Bundle related changes, include migration or config adjustments in the same commit, and reference tracking IDs where relevant. Pull requests should outline the change, list manual or automated test evidence, mention configuration impacts (CAP, FreeSql, message queues), and supply screenshots for any UI updates under wwwroot.

Configuration & Environment Notes

Keep secrets out of appsettings.json; use user secrets or environment variables for connection strings and CAP brokers. Document any required RabbitMQ or MySQL endpoints in the PR. When adding assets or scripts, mirror the structure under ConfigCenter, InitData, and wwwroot so the publish targets continue copying them correctly.