From fd18eaba5e1c086a588509371f91310e7aafff9c Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 08 四月 2026 22:06:59 +0800
Subject: [PATCH] refactor: 升级多个项目目标框架至.NET 8.0
---
Code/WCS/WIDESEAWCS_Server/CLAUDE.md | 299 ++++++++++++++++++-----------------------------------------
1 files changed, 93 insertions(+), 206 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/CLAUDE.md b/Code/WCS/WIDESEAWCS_Server/CLAUDE.md
index 90f1178..9518b9c 100644
--- a/Code/WCS/WIDESEAWCS_Server/CLAUDE.md
+++ b/Code/WCS/WIDESEAWCS_Server/CLAUDE.md
@@ -1,245 +1,132 @@
# CLAUDE.md
-鏈枃浠朵负 Claude Code (claude.ai/code) 鍦ㄦ浠g爜搴撲腑宸ヤ綔鏃舵彁渚涙寚瀵笺��
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
-## 鏋勫缓鍛戒护
+## 椤圭洰姒傝堪
+
+**WIDESEAWCS** 鏄竴涓粨搴撴帶鍒剁郴缁燂紝鍩轰簬 ASP.NET Core 6.0 鏋勫缓銆傜敤浜庣鐞嗚嚜鍔ㄥ寲鐗╂枡澶勭悊璁惧锛堝爢鍨涙満銆佽緭閫佺嚎銆佹満鍣ㄤ汉銆佺┛姊溅绛夛級鐨勫伐涓氫粨鍌ㄧ幆澧冦��
+
+## 鏋勫缓涓庤繍琛屽懡浠�
```bash
# 鏋勫缓鏁翠釜瑙e喅鏂规
dotnet build WIDESEAWCS_Server.sln
-# 鏋勫缓骞惰繍琛屾湇鍔″櫒
-cd WIDESEAWCS_Server
-dotnet run
+# 杩愯鏈嶅姟鍣紙绔彛 9292锛�
+dotnet run --project WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
# 杩愯娴嬭瘯
-cd WIDESEAWCS_Tests
-dotnet test
+dotnet test WIDESEAWCS_Tests/WIDESEAWCS_Tests.csproj
```
-## 鏋舵瀯姒傝堪
+## 鏋舵瀯
-杩欐槸涓�涓熀浜� ASP.NET Core 6.0 鏋勫缓鐨� **WCS锛堜粨搴撴帶鍒剁郴缁燂級**锛屼娇鐢ㄤ互涓嬫妧鏈細
+### 椤圭洰缁撴瀯
-- **Autofac** - 閫氳繃 `IDependency` 鏍囪鎺ュ彛瀹炵幇鑷姩鏈嶅姟鍙戠幇鐨勪緷璧栨敞鍏�
-- **Quartz.NET** - 瀹氭椂浠诲姟鎵ц锛堣澶囬�氫俊寰幆锛�
-- **SqlSugar ORM** - 鏁版嵁搴撹闂�
-- **Redis**锛堥�氳繃 `WIDESEAWCS_RedisService`锛�- 閲囩敤 L1+L2 娣峰悎妯″紡鐨勫垎甯冨紡缂撳瓨
-- **StackExchange.Redis** - Redis 鎿嶄綔
-- **TCP Socket Server** - 瀹炴椂璁惧閫氫俊
-- **HslCommunication** 搴� - PLC/纭欢閫氫俊
+| 椤圭洰 | 鐢ㄩ�� |
+| ------------------------- | ----------------------------------- |
+| `WIDESEAWCS_Server` | 涓� Web API 鍏ュ彛锛堢鍙� 9292锛� |
+| `WIDESEAWCS_Core` | 妗嗘灦宸ュ叿锛堟暟鎹簱銆佺紦瀛樸�佷緷璧栨敞鍏ャ�佹棩蹇椼�佽璇侊級 |
+| `WIDESEAWCS_Common` | 甯搁噺銆佹灇涓俱�丷edis 閿畾涔� |
+| `WIDESEAWCS_Model` | 鏁版嵁搴撳疄浣撴ā鍨� |
+| `WIDESEAWCS_DTO` | 鏁版嵁浼犺緭瀵硅薄 |
+| `WIDESEAWCS_Communicator` | 宸ヤ笟璁惧閫氫俊鍗忚锛圡odbus銆丼iemens S7銆丱mron 绛夛級 |
+| `WIDESEAWCS_Tasks` | 鍚庡彴璁惧鎺у埗浣滀笟 |
+| `WIDESEAWCS_QuartzJob` | Quartz.NET 璋冨害鍜屾淳鍙戦�昏緫 |
+| `WIDESEAWCS_RedisService` | L1+L2 娣峰悎缂撳瓨鏈嶅姟 |
-## 椤圭洰缁撴瀯
+### 鍏抽敭璁捐妯″紡
-```
-WIDESEAWCS_Server/ # 涓� ASP.NET Core API 鏈嶅姟鍣�
-WIDESEAWCS_Core/ # 鏍稿績鍩虹璁炬柦锛氬熀绫汇�丏I銆佹墿灞曘�佷腑闂翠欢
-WIDESEAWCS_Model/ # 鏁版嵁妯″瀷鍜� DTO
-WIDESEAWCS_Communicator/ # 纭欢閫氫俊椹卞姩锛圫iemens銆丱mron銆丮odbus 绛夛級
-WIDESEAWCS_QuartzJob/ # 浠诲姟璋冨害鍩虹璁炬柦鍜岃澶囨娊璞�
-WIDESEAWCS_Tasks/ # Quartz 浠诲姟瀹炵幇锛堣澶囬�氫俊寰幆锛�
-WIDESEAWCS_RedisService/ # Redis 鏈嶅姟锛氱紦瀛樸�侀攣銆佽鏁板櫒銆佸彂甯冭闃呯瓑
-WIDESEAWCS_*Repository/ # 鏁版嵁璁块棶灞傚疄鐜�
-WIDESEAWCS_*Service/ # 涓氬姟鏈嶅姟灞�
-WIDESEAWCS_Tests/ # 鍗曞厓娴嬭瘯
-```
+- **浠撳偍妯″紡**锛氭暟鎹闂娊璞★紙`WIDESEAWCS_*Repository` 椤圭洰锛�
+- **鏈嶅姟灞�**锛氫笟鍔¢�昏緫灏佽锛坄WIDESEAWCS_*Service` 椤圭洰锛�
+- **Autofac 渚濊禆娉ㄥ叆**锛氶�氳繃 `AutofacModuleRegister` 妯″潡娉ㄥ唽
+- **AOP 鎷︽埅**锛氶�氳繃 `UseServiceDIAttribute` 瀹炵幇缂撳瓨鍜屾棩蹇楀垏闈�
+- **SqlSugar ORM**锛氭敮鎸� MySQL銆丼QL Server銆丼QLite銆丱racle銆丳ostgreSQL
-## 渚濊禆娉ㄥ叆 - IDependency 妯″紡
+### 鏁版嵁娴佸悜
-鏈嶅姟閫氳繃瀹炵幇绌虹殑 `IDependency` 鏍囪鎺ュ彛琚� Autofac **鑷姩娉ㄥ唽**锛�
+1. API Controllers 鈫� Services 鈫� Repositories 鈫� SqlSugar 鈫� SQL Server
+2. Quartz Jobs锛堝畾鏃惰皟搴︼級 鈫� 璁惧鎺у埗浣滀笟 鈫� Communicators 鈫� 鐗╃悊璁惧
+3. Redis L1锛堝唴瀛橈級 + L2锛圧edis锛夌紦瀛樺眰浣嶄簬鏁版嵁搴撳墠鏂�
-```csharp
-// 鍦� WIDESEAWCS_Core/IDependency.cs 涓�
-public interface IDependency { }
+## 鍏抽敭閰嶇疆锛坅ppsettings.json锛�
-// 鎮ㄧ殑鏈嶅姟浼氳鑷姩娉ㄥ唽
-public class MyService : IDependency // 鑷姩娉ㄥ唽涓� scoped
-{
- // ...
-}
-```
+- **Web API锛�** `http://*:9292`
+- **WebSocket锛�** `http://localhost:9296`
+- **TCP Socket 鏈嶅姟鍣細** `0.0.0.0:2000`
+- **鏁版嵁搴擄細** SQL Server锛屽疄渚� `.\WIDESEAWCS_ShanMei`
+- **Redis锛�** `127.0.0.1:6379`锛屽瘑鐮� `P@ssw0rd`
+- **JWT 杩囨湡鏃堕棿锛�** 120 鍒嗛挓
+- **Quartz锛�** 鑷姩鍚姩
-娉ㄥ唽鍦� `AutofacModuleRegister` 涓繘琛岋紝瀹冧細鎵弿鎵�鏈夐」鐩▼搴忛泦鏌ユ壘 `IDependency` 瀹炵幇銆�
+## 璁惧閫氫俊
-**閲嶈鎻愮ず**锛氬悜 `IServiceCollection` 娣诲姞鏈嶅姟鏃讹紙渚嬪鍦� `Program.cs` 涓級锛屽畠浠彲鑳戒細琚� Autofac 鐨勬敞鍐岃鐩栥�備娇鐢� `Remove()` 鏉ユ浛鎹㈢幇鏈夋敞鍐岋細
+`WIDESEAWCS_Communicator` 椤圭洰瀹炵幇浜嗗绉嶅伐涓氬崗璁細
-```csharp
-// 鍦� RedisServiceSetup.cs 涓� - 娣诲姞 HybridCacheService 涔嬪墠绉婚櫎 MemoryCacheService
-var existing = services.FirstOrDefault(d => d.ServiceType == typeof(ICacheService));
-if (existing != null) services.Remove(existing);
-```
+- `ModbusTcpCommunicator`
+- `SiemensS7Communicator`銆乣SiemensS7200SmartCommunicator`
+- `OmronEtherNetCommunicator`
+- `AllenBrandlyEtherNetCommunicator`
+- `InovanceTcpCommunicator`銆乣InovanceAMTcp`
+- `SerialPortCommunicator`
-## 缂撳瓨 - ICacheService
+鍩虹鎺ュ彛锛歚IBaseCommunicator`
-绯荤粺閫氳繃 `ICacheService` 浣跨敤 **L1锛堝唴瀛橈級+ L2锛圧edis锛夋贩鍚堢紦瀛�**妯″紡銆傚瓨鍦ㄤ笁绉嶅疄鐜帮細
+## 鍚庡彴浣滀笟
-- `MemoryCacheService` - 浠呭唴瀛�
-- `RedisCacheService` - 浠� Redis
-- `HybridCacheService` - L1+L2 甯﹂檷绾э紙鍚敤 Redis 鏃剁殑榛樿閫夐」锛�
+璁惧鎺у埗浣滀笟浣嶄簬 `WIDESEAWCS_Tasks/`锛�
-**甯哥敤鏂规硶**锛�
+- `StackerCraneJob` - 鍫嗗灈鏈烘帶鍒�
+- `ConveyorLineJob`銆乣ConveyorLineNewJob` - 杈撻�佺嚎绠$悊
+- `RobotJob` - 鏈烘鎵嬫帶鍒�
+- `ShuttleCarJob` - 绌挎杞︽帶鍒�
+- `SocketServer` - 璁惧閫氫俊 TCP 鏈嶅姟鍣�
-- `Add/AddObject` - 娣诲姞缂撳瓨
-- `Get/Get<T>` - 鑾峰彇缂撳瓨鍊�
-- `Remove` - 鍒犻櫎鍗曚釜閿�
-- `RemoveByPrefix/RemoveByPattern` - 鎸夋ā寮忔壒閲忓垹闄�
-- `GetOrAdd<T>` - 鑾峰彇鎴栨坊鍔狅紙甯﹀伐鍘傛柟娉曪級
-- `TryAdd/TryUpdate/TryUpdateIfChanged` - ConcurrentDictionary 椋庢牸鐨勬搷浣�
+## API 缁撴瀯
-**閰嶇疆**锛堝湪 `appsettings.json` 涓級锛�
+- `QuartzJob/Controllers/` - 璁惧淇℃伅銆佸崗璁�佹淳鍙戙�佽皟搴﹀櫒
+- `System/Controllers/` - 鐢ㄦ埛銆佽鑹层�佽彍鍗曘�佸瓧鍏搞�佹棩蹇�
+- `Task/Controllers/` - 浠诲姟绠$悊鍜屾満鍣ㄤ汉浠诲姟
+- `BasicInfo/Controllers/` - 璺敱閰嶇疆
-```json
-"RedisConfig": {
- "Enabled": true,
- "ConnectionString": "127.0.0.1:6379,password=P@ssw0rd,...",
- "KeyPrefix": "wcs:"
-}
-```
+## 鏃ュ織
-## Quartz 浠诲姟 - 璁惧閫氫俊
+浣跨敤 Serilog锛屾寜澶╂粴鍔ㄤ繚鐣� 30 澶╂棩蹇楁枃浠讹紝鍚屾椂闆嗘垚 Seq锛坄http://localhost:5341`锛夈��
-浠诲姟缁ф壙 `JobBase` 骞跺疄鐜� Quartz 鐨� `IJob`锛�
+## 閲嶈瀹炵幇娉ㄦ剰浜嬮」
-```csharp
-public class MyDeviceJob : JobBase, IJob
-{
- public async Task Execute(IJobExecutionContext context)
- {
- ExecuteJob(context, async () => {
- // 浠诲姟閫昏緫
- WriteDebug("MyDevice", "璋冭瘯淇℃伅");
- WriteInfo("MyDevice", "淇℃伅");
- });
- }
-}
-```
+1. **鍚姩鍒濆鍖栭『搴忓緢閲嶈**锛歊edis 灏辩华鍚庢墠鑳借繍琛� `ApiRouteCacheWarmupHostedService`
+2. **Quartz 浠诲姟琛�** 閫氳繃 `QuartzJobDataTableHostedService` 鍦ㄥ惎鍔ㄦ椂鑷姩鍒涘缓
+3. **Socket 鏈嶅姟鍣�** 浣滀负鍗曚緥 `TcpSocketServer` 鐢辨墭绠℃湇鍔¤繍琛�
+4. **Redis 缂撳瓨鍚屾**锛氬彲閰嶇疆 `EnableAutoSync` 閫夐」锛屽畾鏈熷皢 Redis 鍚屾鍒� L1 鍐呭瓨缂撳瓨
+5. **璁惧鍗忚閰嶇疆** 瀛樺偍鍦ㄦ暟鎹簱锛坄Dt_DeviceProtocol` 琛級锛岃�岄潪閰嶇疆鏂囦欢涓�
-浠诲姟閫氳繃 `SchedulerCenterServer` 浣跨敤 `Dt_DeviceInfo` 琛ㄤ腑鐨勮澶囦俊鎭姩鎬佹敞鍐屻��
+## 娉ㄩ噴涓庢枃妗� (寮哄埗)
-**璁惧绫诲瀷**锛�
+- **XML 鏂囨。娉ㄩ噴**: 鎵�鏈� `public` 绫汇�佹帴鍙c�佹柟娉曘�佸睘鎬�**蹇呴』**鍖呭惈 XML 鏂囨。娉ㄩ噴 (`/// <summary>...</summary>`)锛岃В閲婂叾鐢ㄩ�斻�佸弬鏁板拰杩斿洖鍊笺��
+- **琛屽唴娉ㄩ噴**: 瀵逛簬澶嶆潅鐨勪笟鍔¢�昏緫銆佺畻娉曞疄鐜版垨闈炵洿瑙傜殑浠g爜鍧楋紝**蹇呴』**娣诲姞 `//` 琛屽唴娉ㄩ噴瑙i噴鈥滀负浠�涔堣繖涔堝仛鈥濄��
+- **TODO 鏍囪**: 濡傛灉浠g爜鏈畬鎴愭垨鏈変复鏃舵柟妗堬紝蹇呴』浣跨敤 `// TODO: 璇存槑` 鏍囪銆�
-- `IStackerCrane` - 鍫嗗灈鏈�
-- `IConveyorLine` - 杈撻�佺嚎
-- `IShuttleCar` - 绌挎杞�
-- `IRobot` - 鏈烘鎵�
+## 閫氱敤瑙勮寖
-## 纭欢閫氫俊
+- **寮傛缂栫▼**: 鎵�鏈� I/O 鎿嶄綔蹇呴』浣跨敤 `async/await`銆傚簱浠g爜璇蜂娇鐢� `ConfigureAwait(false)`銆�
+- **鍛藉悕**:
+ - 鎺ュ彛浠� "I" 寮�澶� (渚嬪: `IUserService`)銆�
+ - 绫诲悕銆佹柟娉曞悕浣跨敤 **PascalCase**銆�
+ - 绉佹湁瀛楁銆佸眬閮ㄥ彉閲忎娇鐢� **camelCase**銆�
+- **鍛藉悕绌洪棿**: 浣跨敤 **鏂囦欢浣滅敤鍩熷懡鍚嶇┖闂�** (`namespace MyApp.Api;`)銆�
-閫氫俊鍣ㄧ被灏佽 `HslCommunication` 搴擄細
+## 馃毇 涓ョ浜嬮」
+- **涓ョ** 鐢熸垚娌℃湁娉ㄩ噴鐨勪唬鐮� (灏ゅ叾鏄叕鍏辨柟娉�)銆�
+- **涓ョ** 浣跨敤 `Task.Result` 鎴� `Task.Wait()`銆�
+- **涓ョ** 鍦ㄥ紓姝ヤ笂涓嬫枃涓娇鐢� `.ToList()` (蹇呴』鐢� `.ToListAsync()`)銆�
+- **涓ョ** 鐩存帴鏆撮湶瀹炰綋 (Entity)锛屽繀椤讳娇鐢� DTO銆�
+- **涓ョ** 鎹曡幏 `Exception` 鑰屼笉璁板綍鏃ュ織銆�
-- `SiemensS7Communicator` / `SiemensS7200SmartCommunicator` - 瑗块棬瀛� PLC
-- `OmronEtherNetCommunicator` - 娆у榫� PLC
-- `ModbusTcpCommunicator` - Modbus TCP
-- `SerialPortCommunicator` - 涓插彛璁惧
-
-## TCP Socket 鏈嶅姟鍣�
-
-`TcpSocketServer`锛堢鍙� 2000锛夊鐞嗗疄鏃惰澶囬�氫俊锛�
-
-- 閫氳繃 `SocketServerHostedService` 浣滀负 Singleton 绠$悊
-- 瀹㈡埛绔繛鎺ュ瓨鍌ㄥ湪 `ConcurrentDictionary<string, TcpClient>` 涓�
-- 閫氳繃 `OnDataReceived` 浜嬩欢澶勭悊娑堟伅
-
-## 鏈烘鎵嬮�氫俊绯荤粺
-
-鏈烘鎵嬬郴缁熼噰鐢ㄦā鍧楀寲鏋舵瀯锛屽寘鍚笓闂ㄧ殑缁勪欢銆�
-
-**缁勪欢**锛�
-
-- `RobotClientManager` - 绠$悊 TCP 瀹㈡埛绔繛鎺ュ拰璁㈤槄
-- `RobotStateManager` - 绠$悊鏈烘鎵嬬姸鎬佺紦瀛橈紝鏀寔瀹夊叏鐨勫苟鍙戞洿鏂�
-- `RobotMessageHandler` - 澶勭悊鏉ヨ嚜鏈烘鎵嬬殑 TCP 娑堟伅
-- `RobotTaskProcessor` - 澶勭悊浠诲姟鎵ц鍜岀姸鎬佽浆鎹�
-- `RobotBarcodeGenerator` - 鐢熸垚鎵樼洏/鏉$爜鏍囪瘑绗�
-
-**浠诲姟绫诲瀷**锛堟潵鑷� `RobotTaskTypeEnum`锛夛細
-
-- `GroupPallet (500)` - 缁勭洏浠诲姟
-- `ChangePallet (510)` - 鎹㈢洏浠诲姟
-- `SplitPallet (520)` - 鎷嗙洏浠诲姟
-
-**鐘舵�佹祦杞�**锛�
-
-1. 鏈烘鎵嬮�氳繃 TCP 杩炴帴 鈫� ClientManager 璺熻釜杩炴帴
-2. 浠诲姟杞鑾峰彇浠诲姟 鈫� TaskProcessor 鑾峰彇寰呭鐞嗕换鍔�
-3. 鎺ユ敹娑堟伅 鈫� MessageHandler 瑙f瀽骞舵洿鏂扮姸鎬�
-4. 鐘舵�佽浆鎹� 鈫� TaskProcessor 鍚戞満姊版墜鍙戦�佸懡浠�
-
-## 閫氱敤甯搁噺
-
-**閫氫俊瓒呮椂**锛坄CommunicationConst`锛夛細
-
-- `WaitIntervalMs: 500` - 璁惧绛夊緟闂撮殧
-- `WaitTimeoutBaseMs: 6000` - 瓒呮椂鍩烘暟
-- `WaitTotalTimeoutMs: 60000` - 鎬昏秴鏃舵椂闂达紙10 脳 鍩烘暟锛�
-- `PingIntervalMs: 100` - Ping 妫�娴嬮棿闅�
-- `HttpDefaultTimeoutSeconds: 60` - HTTP 瓒呮椂
-
-**绯荤粺闆嗘垚 URL**锛坄BaseAPI`锛夛細
-
-- `WMSBaseUrl: "http://localhost:9291/api/"` - WMS 绯荤粺
-- `WCSBaseUrl: "http://localhost:9292/api/"` - WCS 绯荤粺锛堟湰鏈嶅姟鍣級
-- `MESBaseUrl: "http://localhost:9293/api/"` - MES 绯荤粺
-- `ERPBaseUrl: "http://localhost:9294/api/"` - ERP 绯荤粺
-
-**Redis 缂撳瓨鍓嶇紑**锛坄RedisPrefix`锛夛細
-
-- `System: "System"` - 绯荤粺绾х紦瀛�
-- `User: "User"` - 鐢ㄦ埛鐗瑰畾缂撳瓨
-- `Code: "Code"` - 浠g爜/閰嶇疆缂撳瓨
-
-浣跨敤杩欎簺鍓嶇紑閰嶅悎 `ICacheService.RemoveByPrefix()` 杩涜鎵归噺缂撳瓨澶辨晥銆�
-
-## 閰嶇疆璁剧疆
-
-`appsettings.json` 涓殑鍏抽敭璁剧疆锛�
-
-- `"urls": "http://*:9292"` - 鏈嶅姟鍣ㄧ鍙�
-- `"QuartzJobAutoStart": true` - 鑷姩鍚姩瀹氭椂浠诲姟
-- `"SocketServer:Enabled": true` - 鍚敤 TCP 鏈嶅姟鍣�
-- `"RedisConfig:Enabled": true` - 鍚敤 Redis 缂撳瓨
-- `"LogAOPEnable": false` - 鍚敤 AOP 鏃ュ織
-- `"DBType": "SqlServer"` - 鏁版嵁搴撶被鍨�
-
-## 鏈嶅姟灞傛ā寮�
-
-鏈嶅姟閬靛惊鍒嗗眰妯″紡锛�
-
-- **鎺ュ彛**鍦� `WIDESEAWCS_IService/` 涓紙渚嬪 `ITaskInfoService`锛�
-- **瀹炵幇**鍦� `WIDESEAWCS_Service/` 涓紙渚嬪 `TaskInfoService`锛�
-- 涓よ�呴兘瀹炵幇 `IDependency` 浠ヨ繘琛岃嚜鍔ㄦ敞鍐�
-
-## 鍩虹被
-
-- `ServiceBase<T, TKey>` - 甯︽湁 CRUD 鎿嶄綔鐨勫熀纭�鏈嶅姟
-- `RepositoryBase<TEntity>` - 鍩轰簬 SqlSugar ORM 鐨勫熀纭�浠撳偍
-- `ApiBaseController` - 甯︽湁閫氱敤鍔熻兘鐨勫熀纭� API 鎺у埗鍣�
-- `JobBase` - 甯︽湁鏃ュ織杈呭姪鏂规硶鐨勫熀纭� Quartz 浠诲姟
-
-## 娣诲姞鏂板姛鑳�
-
-1. **鏂版湇鍔�**锛氬湪 `I*Service/` 涓垱寤烘帴鍙o紝鍦� `*Service/` 涓垱寤虹被锛屽疄鐜� `IDependency`
-2. **鏂颁换鍔�**锛氬湪 `WIDESEAWCS_Tasks/` 涓户鎵� `JobBase` 鍜� `IJob`
-3. **鏂拌澶囩被鍨�**锛氬湪 `WIDESEAWCS_QuartzJob/Device/` 涓坊鍔犳帴鍙e苟瀹炵幇
-
-## 閲嶈璇存槑
-
-- 搴旂敤绋嬪簭浣跨敤 **CamelCase** JSON 搴忓垪鍖�
-- 鎵�鏈夋湇鍔¢粯璁ら�氳繃 Autofac 浣跨敤 **scoped** 鐢熷懡鍛ㄦ湡
-- Redis 杩炴帴浣跨敤 **寤惰繜鍒濆鍖�** - 棣栨璁块棶鏃惰Е鍙戣繛鎺�
-- 鍦ㄤ换鍔′腑浣跨敤 `ConsoleHelper.WriteSuccessLine()` / `WriteErrorLine()` 杩涜鎺у埗鍙拌緭鍑�
-- TCP Socket 鏈嶅姟鍣ㄧ嫭绔嬩簬 HTTP API 杩愯
-
-## 浠g爜椋庢牸涓庡懡鍚嶈鑼�
-
-- 璇█锛欳#锛屽悇椤圭洰宸插惎鐢ㄥ彲绌哄紩鐢紙nullable锛夈��
-- 缂╄繘锛�4 涓┖鏍硷紱澶ф嫭鍙锋崲琛岋紙涓庣幇鏈変唬鐮佷繚鎸佷竴鑷达級銆�
-- 鍛藉悕锛氱被鍨�/鏂规硶/灞炴�т娇鐢� `PascalCase`锛屽眬閮ㄥ彉閲�/鍙傛暟浣跨敤 `camelCase`锛屾帴鍙d互 `I` 鍓嶇紑鍛藉悕銆�
-- 鏂囦欢鍛藉悕涓庣被鍨嬪悕淇濇寔涓�鑷达紙渚嬪 `Sys_UserService.cs`銆乣TaskController.cs`锛夈��
-- `.editorconfig` 褰撳墠瀵� `*.cs` 鎶戝埗 CS8618锛涙湭缁忓洟闃熺‘璁や笉瑕佹柊澧炲ぇ鑼冨洿璀﹀憡鎶戝埗銆�
-- 涓烘柊鐢熸垚鎴栬�呬慨鏀圭殑浠g爜鐨勬瘡涓�琛屾坊鍔犺缁嗘敞閲婏紝鍖呮嫭锛�
- - 鏂规硶鐨勭洰鐨勮鏄�
- - 鍙傛暟璇存槑
- - 杩斿洖鍊艰鏄�
- - 姣忎竴琛屼唬鐮佺殑浣滅敤
- - 寮傚父鎯呭喌鐨勮鏄�
+## 馃洜 鎶�鏈爤
+- **妗嗘灦**: .NET 8.0 (LTS)
+- **璇█**: C# 12
+- **ORM**: SqlSugar
+- **鏁版嵁搴�**: SQL Server
+- **楠岃瘉**: FluentValidation
+- **搴忓垪鍖�**: Newtonsoft.Json
\ No newline at end of file
--
Gitblit v1.9.3