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

Repository Guidelines

Project Structure & Module Organization

This repository is a .NET 6 + Vue 3 split-stack S7 PLC simulator.

  • WIDESEAWCS_S7Simulator.Core: domain entities, memory regions (M/DB/I/Q/T/C), simulator runtime, persistence.
  • WIDESEAWCS_S7Simulator.Application: application-layer abstractions and protocol/application services.
  • WIDESEAWCS_S7Simulator.Server: ASP.NET Core Web API (Controllers/, Program.cs), runtime data under Data/.
  • WIDESEAWCS_S7Simulator.Web: Vue 3 + TypeScript frontend (src/views, src/api, src/router, src/types).
  • WIDESEAWCS_S7Simulator.UnitTests: xUnit tests for core/application behavior.
  • docs/: design and protocol notes.

Build, Test, and Development Commands

Run from repository root unless noted.

  • dotnet restore WIDESEAWCS_S7Simulator.slnx: restore NuGet packages.
  • dotnet build WIDESEAWCS_S7Simulator.slnx: build backend projects.
  • dotnet test WIDESEAWCS_S7Simulator.UnitTests: run xUnit tests.
  • dotnet run --project WIDESEAWCS_S7Simulator.Server: start API (default http://localhost:5137).
  • cd WIDESEAWCS_S7Simulator.Web && pnpm install: install frontend deps.
  • cd WIDESEAWCS_S7Simulator.Web && pnpm dev: start Vite dev server (typically http://localhost:3000 or 5173).
  • cd WIDESEAWCS_S7Simulator.Web && pnpm build: type-check + production build.

Coding Style & Naming Conventions

  • C#: 4-space indentation, PascalCase for types/methods, camelCase for locals/parameters, interfaces prefixed with I.
  • TypeScript/Vue: PascalCase for view components (e.g., DetailsView.vue), camelCase for variables/functions, keep API DTO types in src/types.
  • Keep controllers thin; put business rules in Core/Application services.
  • Prefer small, focused files over large mixed-responsibility classes.

Testing Guidelines

  • Framework: xUnit (Microsoft.NET.Test.Sdk, coverlet.collector).
  • Name tests by behavior, e.g., MemoryStoreTests.ReadBit_ReturnsExpectedValue.
  • Add/update tests for any change to memory parsing, protocol templates, persistence, or instance lifecycle.
  • Run dotnet test before opening a PR.

Commit & Pull Request Guidelines

  • Follow Conventional Commit style seen in history: feat: ..., fix: ..., refactor: ... (Chinese summaries are acceptable).
  • Keep one logical change per commit; avoid bundling unrelated files.
  • PRs should include: purpose, key changes, test evidence (dotnet test, pnpm build), and screenshots/GIFs for UI changes.
  • Link related issue/task IDs and call out any config/data migration impacts.