编辑 | blame | 历史 | 原始文档

Repository Guidelines

项目结构与模块组织

本仓库包含两个核心应用:
- WIDESEAWCS_Client/:Vue 3 + Vite 前端,主要目录包括 src/viewssrc/componentssrc/apisrc/routersrc/store
- WIDESEAWCS_Server/:ASP.NET Core 后端解决方案(WIDESEAWCS_Server.sln),按分层组织为 WIDESEAWCS_*ServiceWIDESEAWCS_*RepositoryWIDESEAWCS_CoreWIDESEAWCS_Domain,调度与设备相关代码在 WIDESEAWCS_TasksWIDESEAWCS_QuartzJob

测试主要位于 WIDESEAWCS_Server/WIDESEAWCS_Tests(xUnit),另外还有领域与集成测试项目。

构建、测试与本地开发命令

  • 前端(在 WIDESEAWCS_Client/ 执行):
  • npm install:安装依赖。
  • npm run serve:启动本地开发服务(Vite)。
  • npm run build:构建生产资源。
  • npm run lint:执行 ESLint 检查。
  • 后端(在 WIDESEAWCS_Server/ 执行):
  • dotnet restore WIDESEAWCS_Server.sln:还原 NuGet 依赖。
  • dotnet build WIDESEAWCS_Server.sln:编译全部后端项目。
  • dotnet run --project WIDESEAWCS_Server:本地启动 API。
  • dotnet test WIDESEAWCS_Tests/WIDESEAWCS_Tests.csproj:运行单元测试。

开发流程强制规范

  • 所有任务必须在 Code/WCS/.worktrees/<task-name> 独立 worktree 中开发,不直接在主工作区改动。
  • 分支命名统一:feat/<模块>-<主题>fix/<模块>-<问题>refactor/<模块>-<主题>docs/<主题>
  • 每次提交前至少执行与改动相关的最小验证(前端改动跑 npm run lint;后端改动跑 dotnet test 或最小可运行验证)。
  • 禁止一次提交混入无关重构、格式化噪声或大面积文件移动。

代码风格与命名规范

  • C#:4 空格缩进;类型/方法/属性使用 PascalCase;局部变量和参数使用 camelCase;接口使用 I 前缀。
  • Vue/JS:遵循现有 ESLint 配置与项目既有模式;文件名应与功能一致(如 TaskController.cs、功能目录下 index.vue)。
  • 默认要求:对新增或修改的代码添加详细中文注释,至少包含方法目的、参数含义、返回值、关键逻辑步骤和异常处理说明。
  • 注释要求可读、可维护,禁止“重复代码字面意思”的无效注释。

数据一致性与事务规范

  • 同一业务操作涉及多个数据对象(多表、多仓储、跨服务写入)同时改动时,必须使用数据库事务(Transaction)保证原子性。
  • 事务范围只覆盖必要写操作,禁止将长耗时 IO/网络调用放入事务内,避免长事务锁表。
  • 发生异常时必须回滚事务,并记录事务上下文(业务单号、关键主键、调用链标识)。
  • 若涉及分布式或跨边界写入,需在 PR 中明确一致性策略(补偿、重试、幂等键)。

接口、日志与异常规范

  • API 返回结构保持统一,字段命名与现有后端序列化策略一致,避免随意变更响应字段。
  • Service 层抛出的业务异常需包含可定位上下文(任务号、设备号、关键参数)。
  • 日志级别规范:调试细节用 Debug,业务关键路径用 Information,可恢复异常用 Warning,不可恢复错误用 Error
  • 严禁吞异常;捕获后必须记录上下文并决定重抛或转换为业务错误。
  • 涉及外部系统调用、IO、网络通信、设备通信、数据库访问的关键路径必须使用 try-catchcatch 中至少记录错误信息与关键参数,并保留原始堆栈(throw;),禁止仅 throw ex;

测试规范

  • 主要测试框架为 xUnit,项目已引入 MoqFluentAssertionscoverlet.collector
  • 测试命名建议:MethodName_ShouldExpectedBehavior
  • 涉及行为变化的改动,必须同步新增或更新测试后再合并。

提交与 Pull Request 规范

  • 提交历史以聚焦型前缀为主:feat:fix:refactor:docs:chore:(中文摘要)。
  • 每条提交信息必须包含详细提交内容:至少说明改了什么、为什么改、影响了哪些模块/文件;禁止仅写“修改代码”“优化”这类模糊描述。
  • PR 必须说明:改动内容、改动原因、影响路径、验证方式与结果、潜在风险与回滚方案。
  • 仅在前端界面变更时附截图;接口变更需附请求/响应示例。

安全与配置规范

  • 禁止提交密钥、令牌、连接串明文;敏感配置必须放入环境变量或本地受控配置。
  • appsettings*.json 的环境差异项需文档化,避免把开发机配置带入测试/生产。
  • 涉及权限、鉴权、中间件顺序的改动,必须在 PR 中单独标注。