| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "version": "1.0.0", |
| | | "lastScanned": 1774319550302, |
| | | "projectRoot": "D:\\Git\\ShanMeiXinNengYuan", |
| | | "techStack": { |
| | | "languages": [], |
| | | "frameworks": [], |
| | | "packageManager": null, |
| | | "runtime": null |
| | | }, |
| | | "build": { |
| | | "buildCommand": null, |
| | | "testCommand": null, |
| | | "lintCommand": null, |
| | | "devCommand": null, |
| | | "scripts": {} |
| | | }, |
| | | "conventions": { |
| | | "namingStyle": null, |
| | | "importStyle": null, |
| | | "testPattern": null, |
| | | "fileOrganization": null |
| | | }, |
| | | "structure": { |
| | | "isMonorepo": false, |
| | | "workspaces": [], |
| | | "mainDirectories": [], |
| | | "gitBranches": { |
| | | "defaultBranch": "master", |
| | | "branchingStrategy": null |
| | | } |
| | | }, |
| | | "customNotes": [], |
| | | "directoryMap": { |
| | | "Code": { |
| | | "path": "Code", |
| | | "purpose": null, |
| | | "fileCount": 0, |
| | | "lastAccessed": 1774319550279, |
| | | "keyFiles": [] |
| | | }, |
| | | "项ç®èµæ": { |
| | | "path": "项ç®èµæ", |
| | | "purpose": null, |
| | | "fileCount": 0, |
| | | "lastAccessed": 1774319550280, |
| | | "keyFiles": [] |
| | | } |
| | | }, |
| | | "hotPaths": [ |
| | | { |
| | | "path": "Code\\WCS\\CLAUDE.md", |
| | | "accessCount": 4, |
| | | "lastAccessed": 1774319832508, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\CLAUDE.md", |
| | | "accessCount": 4, |
| | | "lastAccessed": 1774320014175, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS", |
| | | "accessCount": 2, |
| | | "lastAccessed": 1774319685208, |
| | | "type": "directory" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\package.json", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319589861, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Server\\CLAUDE.md", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319589915, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\README.md", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319589977, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\main.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319604017, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\router\\index.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319604071, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319604091, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\store\\index.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319611661, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\api\\http.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319611675, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSClient\\package.json", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319652164, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSClient\\vite.config.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319656371, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\main.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319656381, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319656394, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319656456, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\WIDESEA_Core.csproj", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319664837, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319668135, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\router\\index.js", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319668167, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\IService.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319668191, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\MaterielInfoController.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319671555, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319671580, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\WIDESEA_Model.csproj", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319671631, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319685049, |
| | | "type": "file" |
| | | }, |
| | | { |
| | | "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseController\\ApiBaseController.cs", |
| | | "accessCount": 1, |
| | | "lastAccessed": 1774319685114, |
| | | "type": "file" |
| | | } |
| | | ], |
| | | "userDirectives": [] |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "timestamp": "2026-03-24T02:39:49.050Z", |
| | | "backgroundTasks": [], |
| | | "sessionStartTimestamp": "2026-03-24T02:33:23.593Z", |
| | | "sessionId": "4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | {"session_id":"4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66","transcript_path":"C:\\Users\\29028\\.claude\\projects\\D--Git-ShanMeiXinNengYuan-Code-WMS\\4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl","cwd":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","model":{"id":"glm-4.7","display_name":"glm-4.7"},"workspace":{"current_dir":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","project_dir":"D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS","added_dirs":[]},"version":"2.1.72","output_style":{"name":"default"},"cost":{"total_cost_usd":1.441715,"total_duration_ms":453632,"total_api_duration_ms":376045,"total_lines_added":298,"total_lines_removed":110},"context_window":{"total_input_tokens":153210,"total_output_tokens":8441,"context_window_size":200000,"current_usage":{"input_tokens":3040,"output_tokens":292,"cache_creation_input_tokens":0,"cache_read_input_tokens":96384},"used_percentage":50,"remaining_percentage":50},"exceeds_200k_tokens":false} |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | {"t":0,"agent":"a7f1459","agent_type":"unknown","event":"agent_stop","success":true} |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "lastSentAt": "2026-03-24T02:37:21.000Z" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "agents": [], |
| | | "total_spawned": 0, |
| | | "total_completed": 0, |
| | | "total_failed": 0, |
| | | "last_updated": "2026-03-24T02:38:41.486Z" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # Repository Guidelines |
| | | |
| | | ## 项ç®ç»æä¸æ¨¡åç»ç» |
| | | æ¬ä»åºå
å«ä¸¤ä¸ªæ ¸å¿åºç¨ï¼ |
| | | - `WIDESEAWCS_Client/`ï¼Vue 3 + Vite å端ï¼ä¸»è¦ç®å½å
æ¬ `src/views`ã`src/components`ã`src/api`ã`src/router`ã`src/store`ã |
| | | - `WIDESEAWCS_Server/`ï¼ASP.NET Core åç«¯è§£å³æ¹æ¡ï¼`WIDESEAWCS_Server.sln`ï¼ï¼æåå±ç»ç»ä¸º `WIDESEAWCS_*Service`ã`WIDESEAWCS_*Repository`ã`WIDESEAWCS_Core`ã`WIDESEAWCS_Domain`ï¼è°åº¦ä¸è®¾å¤ç¸å
³ä»£ç å¨ `WIDESEAWCS_Tasks` ä¸ `WIDESEAWCS_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-catch`ï¼`catch` ä¸è³å°è®°å½é误信æ¯ä¸å
³é®åæ°ï¼å¹¶ä¿çåå§å æ ï¼`throw;`ï¼ï¼ç¦æ¢ä»
`throw ex;`ã |
| | | |
| | | ## æµè¯è§è |
| | | - ä¸»è¦æµè¯æ¡æ¶ä¸º xUnitï¼é¡¹ç®å·²å¼å
¥ `Moq`ã`FluentAssertions`ã`coverlet.collector`ã |
| | | - æµè¯å½å建议ï¼`MethodName_ShouldExpectedBehavior`ã |
| | | - æ¶åè¡ä¸ºååçæ¹å¨ï¼å¿
须忥æ°å¢ææ´æ°æµè¯åååå¹¶ã |
| | | |
| | | ## æäº¤ä¸ Pull Request è§è |
| | | - æäº¤åå²ä»¥èç¦ååç¼ä¸ºä¸»ï¼`feat:`ã`fix:`ã`refactor:`ã`docs:`ã`chore:`ï¼ä¸ææè¦ï¼ã |
| | | - æ¯æ¡æäº¤ä¿¡æ¯å¿
é¡»å
å«è¯¦ç»æäº¤å
容ï¼è³å°è¯´ææ¹äºä»ä¹ã为ä»ä¹æ¹ãå½±åäºåªäºæ¨¡å/æä»¶ï¼ç¦æ¢ä»
åâä¿®æ¹ä»£ç ââä¼åâè¿ç±»æ¨¡ç³æè¿°ã |
| | | - PR å¿
须说æï¼æ¹å¨å
å®¹ãæ¹å¨åå ãå½±åè·¯å¾ãéªè¯æ¹å¼ä¸ç»æãæ½å¨é£é©ä¸åæ»æ¹æ¡ã |
| | | - ä»
å¨å端çé¢åæ´æ¶éæªå¾ï¼æ¥å£åæ´éé请æ±/ååºç¤ºä¾ã |
| | | |
| | | ## å®å
¨ä¸é
ç½®è§è |
| | | - ç¦æ¢æäº¤å¯é¥ã令çãè¿æ¥ä¸²ææï¼ææé
ç½®å¿
é¡»æ¾å
¥ç¯å¢åéææ¬å°åæ§é
ç½®ã |
| | | - `appsettings*.json` çç¯å¢å·®å¼é¡¹éææ¡£åï¼é¿å
æå¼åæºé
置带å
¥æµè¯/ç产ã |
| | | - æ¶åæéãé´æãä¸é´ä»¶é¡ºåºçæ¹å¨ï¼å¿
é¡»å¨ PR ä¸åç¬æ 注ã |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # CLAUDE.md |
| | | |
| | | æ¬æä»¶ä¸º Claude Code (claude.ai/code) 卿¤ä»£ç åºä¸å·¥ä½æ¶æä¾æå¯¼ã |
| | | |
| | | ## é¡¹ç®æ¦è¿° |
| | | |
| | | è¿æ¯ä¸ä¸ª **WCSï¼ä»åºæ§å¶ç³»ç»ï¼** - é¯ç¾æ°è½æºä»åºæ§å¶ç³»ç»ï¼å
å«ï¼ |
| | | |
| | | - **WIDESEAWCS_Client** - Vue 3 å端åºç¨ï¼Element Plus UIï¼ |
| | | - **WIDESEAWCS_Server** - ASP.NET Core 6.0 å端 API æå¡å¨ |
| | | |
| | | ç³»ç»ç®¡çèªå¨åä»åºä½ä¸ï¼å
æ¬å åæºãè¾é线ãç©¿æ¢è½¦åæºæ¢°æçç©ææ¬è¿ä»»å¡ï¼ç»çãæ¢çãæçï¼ã |
| | | |
| | | --- |
| | | |
| | | ## 常ç¨å½ä»¤ |
| | | |
| | | ### å端 (WIDESEAWCS_Client) |
| | | |
| | | ```bash |
| | | # å®è£
ä¾èµï¼å¨ Client ç®å½ä¸ï¼ |
| | | cd WIDESEAWCS_Client |
| | | npm install |
| | | |
| | | # å¼åæå¡å¨ |
| | | npm run serve |
| | | |
| | | # ç产æå»º |
| | | npm run build |
| | | |
| | | # ä»£ç æ£æ¥ |
| | | npm run lint |
| | | ``` |
| | | |
| | | **Node.js 18+ 注æäºé¡¹**ï¼å¦æ `npm run serve` å OpenSSL é误失败ï¼`package.json` èæ¬å·²å
å« `SET NODE_OPTIONS=--openssl-legacy-provider` è§£å³æ¹æ¡ã |
| | | |
| | | ### å端 (WIDESEAWCS_Server) |
| | | |
| | | ```bash |
| | | # æå»ºæ´ä¸ªè§£å³æ¹æ¡ |
| | | cd WIDESEAWCS_Server |
| | | dotnet build WIDESEAWCS_Server.sln |
| | | |
| | | # è¿è¡æå¡å¨ |
| | | dotnet run --project WIDESEAWCS_Server |
| | | |
| | | # è¿è¡æµè¯ |
| | | dotnet test WIDESEAWCS_Tests |
| | | ``` |
| | | |
| | | **æå¡å¨ç«¯å£**ï¼API è¿è¡å¨ `http://*:9292`ï¼å¯å¨ `appsettings.json` ä¸é
ç½®ï¼ |
| | | |
| | | --- |
| | | |
| | | ## æ¶æ |
| | | |
| | | ### åç«¯æ¶æ (Vue 3) |
| | | |
| | | **ææ¯æ **ï¼ |
| | | - Vue 3 + Vite |
| | | - Element Plus UI æ¡æ¶ |
| | | - Vue Routerï¼hash 模å¼ï¼ |
| | | - Vuex ç¶æç®¡ç |
| | | - Axios HTTP è¯·æ± |
| | | - SignalR 宿¶éä¿¡ï¼å¯éï¼ |
| | | |
| | | **å
³é®ç®å½**ï¼ |
| | | - `src/views/` - 页é¢ç»ä»¶ï¼HomeãLoginãsystemãbasicinfoãtaskinfoãchartsï¼ |
| | | - `src/components/basic/` - å¯å¤ç¨ç»ä»¶ï¼å
æ¬ `ViewGrid`ï¼æ°æ®è¡¨æ ¼ç»ä»¶ï¼ |
| | | - `src/api/` - HTTP 客æ·ç«¯ï¼`http.js`ï¼ï¼å¸¦ä»¤ç管ç忦æªå¨ |
| | | - `src/router/` - è·¯ç±å®ä¹ï¼å¸¦èº«ä»½éªè¯å®å« |
| | | - `src/store/` - Vuex åå¨ï¼ç¨äºç¨æ·ä¿¡æ¯åæé |
| | | - `src/uitils/` - å·¥å
·å½æ° |
| | | |
| | | **HTTP 客æ·ç«¯** (`src/api/http.js`)ï¼ |
| | | - åºç¡ URL é»è®¤å¼ï¼å¼åç¯å¢ï¼`http://127.0.0.1:9292/`ï¼ãç产ç¯å¢ï¼`http://115.159.85.185:9292/`ï¼ |
| | | - èªå¨å
å« `Authorization: Bearer {token}` 请æ±å¤´ |
| | | - æ¶å° `wideseawcs_exp` ååºå¤´æ¶èªå¨å·æ°ä»¤ç |
| | | - 401 èªå¨éå®åå°ç»å½é¡µ |
| | | - å¯¼åºæ¹æ³ï¼`post()`ã`get()`ã`download()`ã`ajax()` |
| | | |
| | | **å
¨å±å±æ§**ï¼å¨ `main.js` ä¸æè½½ï¼ï¼ |
| | | - `this.$http` - HTTP 客æ·ç«¯ |
| | | - `this.base` - éç¨å·¥å
· |
| | | - `this.permission` - æéæ£æ¥ |
| | | - `this.$global` - å
¨å±é
ç½®ï¼SignalR å¯ç¨æ å¿ãè¡¨æ ¼æ ç¾æ¾ç¤ºï¼ |
| | | |
| | | ### åç«¯æ¶æ (ASP.NET Core) |
| | | |
| | | **ææ¯æ **ï¼ |
| | | - ASP.NET Core 6.0 Web API |
| | | - Autofac DIï¼ä½¿ç¨ `IDependency` æ è®°æ¥å£å®ç°èªå¨æ³¨å |
| | | - Quartz.NET 宿¶ä»»å¡ï¼è®¾å¤é信循ç¯ï¼ |
| | | - SqlSugar ORM æ°æ®åºè®¿é® |
| | | - Redisï¼éè¿ `WIDESEAWCS_RedisService` å®ç° L1+L2 æ··åç¼åï¼ |
| | | - TCP Socket æå¡å¨ï¼ç«¯å£ 2000ï¼ç¨äºå®æ¶è®¾å¤éä¿¡ |
| | | - HslCommunication åºç¨äº PLC/硬件éä¿¡ |
| | | |
| | | **项ç®ç»æ**ï¼ |
| | | ``` |
| | | WIDESEAWCS_Server/ # 主 API æå¡å¨ |
| | | WIDESEAWCS_Core/ # æ ¸å¿åºç¡è®¾æ½ï¼åºç±»ãDIãæ©å±ãä¸é´ä»¶ |
| | | WIDESEAWCS_Model/ # æ°æ®æ¨¡åå DTO |
| | | WIDESEAWCS_Communicator/ # 硬件é信驱å¨ï¼è¥¿é¨åãæ¬§å§é¾ãModbus çï¼ |
| | | WIDESEAWCS_QuartzJob/ # ä»»å¡è°åº¦åºç¡è®¾æ½åè®¾å¤æ½è±¡ |
| | | WIDESEAWCS_Tasks/ # Quartz ä»»å¡å®ç°ï¼è®¾å¤é信循ç¯ï¼ |
| | | WIDESEAWCS_RedisService/ # Redis æå¡ï¼ç¼åãéã计æ°å¨ãåå¸è®¢é
|
| | | WIDESEAWCS_*Repository/ # æ°æ®è®¿é®å±å®ç° |
| | | WIDESEAWCS_*Service/ # ä¸å¡æå¡å± |
| | | WIDESEAWCS_Tests/ # åå
æµè¯ |
| | | ``` |
| | | |
| | | **ä¾èµæ³¨å
¥æ¨¡å¼**ï¼ |
| | | - å®ç° `IDependency` æ è®°æ¥å£çæå¡ç± Autofac **èªå¨æ³¨å** |
| | | - ä½äº `AutofacModuleRegister` 䏿«æææç¨åºé |
| | | - æ·»å åä½¿ç¨ `services.Remove()` è¦çç°ææ³¨å |
| | | |
| | | **ç¼åå±** (`ICacheService`)ï¼ |
| | | - L1ï¼å
åï¼+ L2ï¼Redisï¼æ··åç¼å |
| | | - å®ç°ï¼`MemoryCacheService`ã`RedisCacheService`ã`HybridCacheService` |
| | | - å¸¸ç¨æ¹æ³ï¼`Add`ã`Get<T>`ã`Remove`ã`RemoveByPrefix`ã`GetOrAdd<T>` |
| | | |
| | | **设å¤éä¿¡**ï¼ |
| | | - ä»»å¡ç»§æ¿ `JobBase` å¹¶å®ç° `IJob` |
| | | - 设å¤ç±»åï¼`IStackerCrane`ï¼å åæºï¼ã`IConveyorLine`ï¼è¾é线ï¼ã`IShuttleCar`ï¼ç©¿æ¢è½¦ï¼ã`IRobot`ï¼æºæ¢°æï¼ |
| | | - éä¿¡å¨ï¼`SiemensS7Communicator`ã`OmronEtherNetCommunicator`ã`ModbusTcpCommunicator`ã`SerialPortCommunicator` |
| | | - TCP Socket æå¡å¨ï¼ç«¯å£ 2000ï¼ç± `SocketServerHostedService` 管ç |
| | | |
| | | --- |
| | | |
| | | ## å
³é®éæç¹ |
| | | |
| | | ### ç³»ç»éæ URL (BaseAPI 常é) |
| | | - WMSï¼`http://localhost:9291/api/` |
| | | - WCSï¼æ¬æå¡å¨ï¼ï¼`http://localhost:9292/api/` |
| | | - MESï¼`http://localhost:9293/api/` |
| | | - ERPï¼`http://localhost:9294/api/` |
| | | |
| | | ### æºæ¢°æéä¿¡ç³»ç» |
| | | æºæ¢°ææ§å¶ç模ååæ¶æï¼ |
| | | - `RobotClientManager` - TCP 客æ·ç«¯è¿æ¥ç®¡ç |
| | | - `RobotStateManager` - 线ç¨å®å
¨çæºæ¢°æç¶æç¼å |
| | | - `RobotMessageHandler` - TCP æ¶æ¯è§£æ |
| | | - `RobotTaskProcessor` - 任塿§è¡åç¶æè½¬æ¢ |
| | | - ä»»å¡ç±»åï¼`GroupPallet (500)` ç»çã`ChangePallet (510)` æ¢çã`SplitPallet (520)` æç |
| | | |
| | | ### é
ç½® (appsettings.json) |
| | | å
³é®è®¾ç½®ï¼ |
| | | - `"urls": "http://*:9292"` - æå¡å¨ç«¯å£ |
| | | - `"QuartzJobAutoStart": true` - èªå¨å¯å¨å®æ¶ä»»å¡ |
| | | - `"SocketServer:Enabled": true` - å¯ç¨ TCP æå¡å¨ |
| | | - `"RedisConfig:Enabled": true` - å¯ç¨ Redis ç¼å |
| | | - `"DBType": "SqlServer"` - æ°æ®åºç±»å |
| | | |
| | | --- |
| | | |
| | | ## å¼åæå |
| | | |
| | | ### æ·»å æ°åè½ |
| | | |
| | | **å端**ï¼ |
| | | 1. å¨ `WIDESEAWCS_IService/` ä¸å建æå¡æ¥å£ |
| | | 2. å¨ `WIDESEAWCS_Service/` ä¸å建æå¡å®ç°ï¼å®ç° `IDependency` |
| | | 3. å¨ `WIDESEAWCS_Tasks/` ä¸å建任å¡ï¼ç»§æ¿ `JobBase` å `IJob` |
| | | 4. å¨ `WIDESEAWCS_QuartzJob/Device/` 䏿·»å 设å¤ç±»å |
| | | |
| | | **å端**ï¼ |
| | | 1. å¨ `src/views/` 䏿·»å è§å¾ |
| | | 2. å¨ `src/router/index.js` 䏿·»å è·¯ç± |
| | | 3. ä½¿ç¨ `$http.post()` å `$http.get()` è¿è¡ API è°ç¨ |
| | | 4. ä½¿ç¨ `ViewGrid` ç»ä»¶æ¾ç¤ºæ°æ®è¡¨æ ¼ |
| | | |
| | | ### 代ç 飿 ¼ |
| | | - **C#**ï¼ç±»å/æ¹æ³/屿§ä½¿ç¨ PascalCaseï¼å±é¨åé/åæ°ä½¿ç¨ camelCaseã4 ç©ºæ ¼ç¼©è¿ï¼å¤§æ¬å·æ¢è¡ã |
| | | - **JavaScript/Vue**ï¼éµå¾ªç°ææ¨¡å¼ï¼æ°ç»ä»¶ä½¿ç¨ Vue 3 Composition API |
| | | - **注é**ï¼ä¸ºæ°å¢/ä¿®æ¹çä»£ç æ·»å 详ç»çä¸ææ³¨éï¼æ¹æ³ç®çãåæ°ãè¿åå¼ãéè¡è¯´æãå¼å¸¸å¤çï¼ |
| | | |
| | | ### éè¦è¯´æ |
| | | - åç«¯ä½¿ç¨ **CamelCase** JSON åºåå |
| | | - æææå¡éè¿ Autofac é»è®¤ä½¿ç¨ **scoped** çå½å¨æ |
| | | - Redis è¿æ¥å¨é¦æ¬¡è®¿é®æ¶å»¶è¿åå§å |
| | | - å¨ä»»å¡ä¸ä½¿ç¨ `ConsoleHelper.WriteSuccessLine()` / `WriteErrorLine()` è¿è¡æ§å¶å°è¾åº |
| | | - TCP Socket æå¡å¨ç¬ç«äº HTTP API è¿è¡ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | {"t":0,"agent":"a1dd170","agent_type":"unknown","event":"agent_stop","success":true} |
| | | {"t":0,"agent":"a5ca246","agent_type":"unknown","event":"agent_stop","success":true} |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "lastSentAt": "2026-03-24T02:40:56.392Z" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "agents": [], |
| | | "total_spawned": 0, |
| | | "total_completed": 0, |
| | | "total_failed": 0, |
| | | "last_updated": "2026-03-24T02:41:20.073Z" |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # Repository Guidelines |
| | | |
| | | ## 项ç®ç»æä¸æ¨¡åç»ç» |
| | | ä»åºç±ä¸¤ä¸ªä¸»é¡¹ç®ç»æï¼ |
| | | - `WIDESEA_WMSServer/`ï¼ASP.NET Core å端ï¼è§£å³æ¹æ¡ï¼`WIDESEA_WMSServer.sln`ï¼ã |
| | | - `WIDESEA_WMSClient/`ï¼Vue 3 å端ï¼Vite + Yarnï¼ã |
| | | |
| | | å端æèè´£æåï¼`WIDESEA_WMSServer/`ï¼API å¯å¨é¡¹ç®ï¼ã`WIDESEA_Core/`ï¼åºç¡è®¾æ½/åºç±»è½åï¼ã`WIDESEA_Model/`ï¼å®ä½æ¨¡åï¼ã`WIDESEA_DTO/`ï¼æ°æ®ä¼ è¾å¯¹è±¡ï¼ã`WIDESEA_I*Service/`ï¼æå¡æ¥å£ï¼ã`WIDESEA_*Service/`ï¼æå¡å®ç°ï¼ãå端æºç ä½äº `WIDESEA_WMSClient/src/`ï¼åå
æµè¯ä½äº `WIDESEA_WMSClient/tests/unit/`ã |
| | | |
| | | ## æå»ºãæµè¯ä¸å¼åå½ä»¤ |
| | | å端ï¼å¨ `WIDESEA_WMSServer` ç®å½æ§è¡ï¼ï¼ |
| | | - `dotnet restore WIDESEA_WMSServer.sln`ï¼è¿å NuGet ä¾èµã |
| | | - `dotnet build WIDESEA_WMSServer.sln`ï¼æå»ºå
¨é¨å端项ç®ã |
| | | - `dotnet run --project WIDESEA_WMSServer/WIDESEA_WMSServer.csproj`ï¼æ¬å°å¯å¨ APIã |
| | | |
| | | å端ï¼å¨ `WIDESEA_WMSClient` ç®å½æ§è¡ï¼ï¼ |
| | | - `yarn install`ï¼å®è£
ä¾èµã |
| | | - `yarn dev`ï¼å¯å¨ Vite å¼åæå¡ã |
| | | - `yarn build`ï¼æå»ºç产å
ã |
| | | - `yarn preview`ï¼é¢è§ç产æå»ºç»æã |
| | | - `yarn test:unit`ï¼è¿è¡åå
æµè¯ã |
| | | - `yarn lint`ï¼æ§è¡ä»£ç æ£æ¥ã |
| | | |
| | | ## å¼åæµç¨å¼ºå¶è§è |
| | | |
| | | - ææä»»å¡å¿
é¡»å¨ `Code/WMS/.worktrees/<task-name>` ç¬ç« worktree ä¸å¼åï¼ä¸ç´æ¥å¨ä¸»å·¥ä½åºæ¹å¨ã |
| | | - 忝å½åç»ä¸ï¼`feat/<模å>-<主é¢>`ã`fix/<模å>-<é®é¢>`ã`refactor/<模å>-<主é¢>`ã`docs/<主é¢>`ã |
| | | - æ¯æ¬¡æäº¤åè³å°æ§è¡ä¸æ¹å¨ç¸å
³çæå°éªè¯ï¼å端æ¹å¨è· `npm run lint`ï¼å端æ¹å¨è· `dotnet test` ææå°å¯è¿è¡éªè¯ï¼ã |
| | | - ç¦æ¢ä¸æ¬¡æäº¤æ··å
¥æ å
³éæãæ ¼å¼ååªå£°æå¤§é¢ç§¯æä»¶ç§»å¨ã |
| | | |
| | | ## 代ç 飿 ¼ä¸å½åçº¦å® |
| | | |
| | | åç«¯ä½¿ç¨ Vue Standard ESLint è§åï¼ç¼©è¿ä¸º 4 ç©ºæ ¼ï¼è§ `package.json`ï¼ãVue ç»ä»¶éç¨ PascalCaseï¼æ©å±é
置建议æ¾å¨ `src/extension/{domain}/{entity}.js`ã |
| | | |
| | | å端éµå¾ªç°æåå±ä¸å½åï¼`I{Entity}Service`ï¼æ¥å£ï¼ã`{Entity}Service`ï¼å®ç°ï¼ã`{Entity}Controller`ï¼æ§å¶å¨ï¼ãæ°å¢ä»£ç åºä¿æä¸ç°æ Autofac 注åãåºç¡ Controller/Service 模å¼ä¸è´ã |
| | | |
| | | é»è®¤è¦æ±ï¼å¯¹æ°å¢æä¿®æ¹çä»£ç æ·»å 详ç»ä¸ææ³¨éï¼è³å°å
嫿¹æ³ç®çãåæ°å«ä¹ãè¿åå¼ãå
³é®é»è¾æ¥éª¤åå¼å¸¸å¤ç说æã |
| | | |
| | | 注éè¦æ±å¯è¯»ãå¯ç»´æ¤ï¼ç¦æ¢âéå¤ä»£ç å颿æâçæ ææ³¨éã |
| | | |
| | | ## æ°æ®ä¸è´æ§ä¸äºå¡è§è |
| | | |
| | | - åä¸ä¸å¡æä½æ¶åå¤ä¸ªæ°æ®å¯¹è±¡ï¼å¤è¡¨ãå¤ä»å¨ãè·¨æå¡åå
¥ï¼åæ¶æ¹å¨æ¶ï¼å¿
é¡»ä½¿ç¨æ°æ®åºäºå¡ï¼Transactionï¼ä¿è¯ååæ§ã |
| | | - äºå¡èå´åªè¦çå¿
è¦åæä½ï¼ç¦æ¢å°é¿èæ¶ IO/ç½ç»è°ç¨æ¾å
¥äºå¡å
ï¼é¿å
é¿äºå¡é表ã |
| | | - åçå¼å¸¸æ¶å¿
须忻äºå¡ï¼å¹¶è®°å½äºå¡ä¸ä¸æï¼ä¸å¡åå·ãå
³é®ä¸»é®ãè°ç¨é¾æ è¯ï¼ã |
| | | - è¥æ¶ååå¸å¼æè·¨è¾¹çåå
¥ï¼éå¨ PR ä¸æç¡®ä¸è´æ§çç¥ï¼è¡¥å¿ãéè¯ãå¹çé®ï¼ã |
| | | |
| | | ## æ¥å£ãæ¥å¿ä¸å¼å¸¸è§è |
| | | |
| | | - API è¿åç»æä¿æç»ä¸ï¼å段å½åä¸ç°æå端åºååçç¥ä¸è´ï¼é¿å
éæåæ´ååºå段ã |
| | | - Service 屿åºçä¸å¡å¼å¸¸éå
å«å¯å®ä½ä¸ä¸æï¼ä»»å¡å·ã设å¤å·ãå
³é®åæ°ï¼ã |
| | | - æ¥å¿çº§å«è§èï¼è°è¯ç»èç¨ `Debug`ï¼ä¸å¡å
³é®è·¯å¾ç¨ `Information`ï¼å¯æ¢å¤å¼å¸¸ç¨ `Warning`ï¼ä¸å¯æ¢å¤éè¯¯ç¨ `Error`ã |
| | | - 严ç¦åå¼å¸¸ï¼æè·åå¿
须记å½ä¸ä¸æå¹¶å³å®éææè½¬æ¢ä¸ºä¸å¡é误ã |
| | | - æ¶åå¤é¨ç³»ç»è°ç¨ãIOãç½ç»éä¿¡ã设å¤éä¿¡ãæ°æ®åºè®¿é®çå
³é®è·¯å¾å¿
é¡»ä½¿ç¨ `try-catch`ï¼`catch` ä¸è³å°è®°å½é误信æ¯ä¸å
³é®åæ°ï¼å¹¶ä¿çåå§å æ ï¼`throw;`ï¼ï¼ç¦æ¢ä»
`throw ex;`ã |
| | | |
| | | ## æµè¯æå |
| | | |
| | | å端æµè¯éç¨ Vue åå
æµè¯ï¼`tests/unit/*.spec.js`ï¼ãæ¶å UI é»è¾ææ¥å£äº¤äºåæ´æ¶ï¼åºè¡¥å
ææ´æ°æµè¯ï¼å¹¶æ§è¡ `yarn test:unit`ã |
| | | |
| | | å½åè§£å³æ¹æ¡ä¸æªå
å«ç¬ç«å端æµè¯é¡¹ç®ãå端æ¹å¨è³å°é宿æå»ºä¸å
³é® API æå·¥éªè¯ï¼å¤æä¸å¡é»è¾å»ºè®®æ°å¢æµè¯é¡¹ç®ï¼å¦ xUnitï¼å¹¶çº³å
¥è§£å³æ¹æ¡ã |
| | | |
| | | ## æäº¤ä¸å并请æ±è§è |
| | | æè¿æäº¤æ®ééç¨ Conventional Commit åç¼ï¼`feat:`ã`fix:`ã`refactor:`ã`docs:`ã`chore:`ï¼ä¸ææè¿°ï¼ãå»ºè®®ä¸æ¬¡æäº¤èç¦ä¸ä¸ªæç¡®æ¹å¨ç¹ã |
| | | |
| | | PR 建议å
å«ï¼ |
| | | - åæ´ç®çä¸ä¸å¡å½±å说æï¼ |
| | | - æ¶å模åä¸ç®å½èå´ï¼å端/å端ï¼ï¼ |
| | | - éªè¯è¯æ®ï¼å·²æ§è¡å½ä»¤ä¸ç»æï¼ï¼ |
| | | - UI åæ´æªå¾æå½å±ï¼ |
| | | - å
³è任塿é®é¢ç¼å·ï¼å¦æï¼ã |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # CLAUDE.md |
| | | |
| | | æ¤æä»¶ä¸º Claude Code (claude.ai/code) æä¾å¨æ¤ä»£ç åºä¸å·¥ä½çæå¯¼ã |
| | | |
| | | ## é¡¹ç®æ¦è¿° |
| | | |
| | | è¿æ¯ä¸ä¸ª WMSï¼ä»åºç®¡çç³»ç»ï¼ï¼å端éç¨ ASP.NET Core 6.0ï¼å端éç¨ Vue 3ãç³»ç»ç®¡çä»åºè¿è¥ï¼å
æ¬å
¥åºãåºåºãåºåãä»»å¡ååºç¡ä¸»æ°æ®ã |
| | | |
| | | ``` |
| | | WMS/ |
| | | âââ WIDESEA_WMSServer/ # å端 (ASP.NET Core 6.0) |
| | | â âââ WIDESEA_WMSServer/ # 主 API é¡¹ç® |
| | | â âââ WIDESEA_Core/ # æ ¸å¿æ¡æ¶ï¼åºç¡æ§å¶å¨ãæå¡ãä»å¨ï¼ |
| | | â âââ WIDESEA_Model/ # æé¢åç»ç»çæ°æ®æ¨¡å |
| | | â âââ WIDESEA_*Service/ # æå¡å®ç°ï¼BasicãInboundãOutboundãStock çï¼ |
| | | â âââ WIDESEA_I*Service/ # æå¡æ¥å£ |
| | | â âââ WIDESEA_DTO/ # æ°æ®ä¼ è¾å¯¹è±¡ |
| | | â âââ WIDESEA_Common/ # å
Œ
±å·¥å
·ç±» |
| | | âââ WIDESEA_WMSClient/ # å端 (Vue 3 + Vite) |
| | | âââ src/api/ # HTTP 客æ·ç«¯å API è°ç¨ |
| | | âââ src/components/basic/ # å¯å¤ç¨ç»ä»¶ï¼ViewGridãVolFormãVolTableï¼ |
| | | âââ src/extension/ # ä¸å端å¹é
çé¢åç¹å®é
ç½® |
| | | âââ src/views/ # Vue 页é¢ç»ä»¶ |
| | | âââ src/router/ # Vue Router é
ç½® |
| | | âââ src/store/ # Vuex ç¶æç®¡ç |
| | | ``` |
| | | |
| | | ## å¼åå½ä»¤ |
| | | |
| | | ### å端 (ASP.NET Core) |
| | | ```bash |
| | | # æå»ºè§£å³æ¹æ¡ |
| | | cd WIDESEA_WMSServer |
| | | dotnet build WIDESEA_WMSServer.sln |
| | | |
| | | # è¿è¡æå¡å¨ï¼é»è®¤ç«¯å£ï¼9291ï¼ |
| | | cd WIDESEA_WMSServer/WIDESEA_WMSServer |
| | | dotnet run |
| | | |
| | | # è¿åå
|
| | | dotnet restore |
| | | |
| | | # 使ç¨ç¹å®é
ç½®è¿è¡ |
| | | dotnet run --configuration Release |
| | | ``` |
| | | |
| | | ### å端 (Vue 3 + Vite) |
| | | ```bash |
| | | cd WIDESEA_WMSClient |
| | | |
| | | # å®è£
ä¾èµï¼ä½¿ç¨ yarnï¼ |
| | | yarn install |
| | | |
| | | # å¼åæå¡å¨ï¼ç«¯å£ 8080ï¼ |
| | | yarn dev |
| | | |
| | | # ç产æå»º |
| | | yarn build |
| | | |
| | | # é¢è§ç产æå»º |
| | | yarn preview |
| | | |
| | | # è¿è¡åå
æµè¯ |
| | | yarn test:unit |
| | | |
| | | # ä»£ç æ£æ¥ |
| | | yarn lint |
| | | ``` |
| | | |
| | | ## æ¶æ |
| | | |
| | | ### åç«¯æ¶æ |
| | | |
| | | **éç¨æ¸
æ´æ¶æååçå屿¶æï¼** |
| | | |
| | | - **æ§å¶å¨** (`WIDESEA_WMSServer/Controllers/`)ï¼ç»§æ¿èª `ApiBaseController<TService, TEntity>`ï¼èªå¨æä¾ CRUD 端ç¹ãé¢åç¹å®æ§å¶å¨ææä»¶å¤¹ç»ç»ï¼BasicãInboundãOutboundãStockãSystemãTaskInfo çï¼ã |
| | | |
| | | - **æå¡å±** (`WIDESEA_*Service/`)ï¼ä¸å¡é»è¾å±ãæå¡ç»§æ¿èª `ServiceBase<T, TEntity>` å¹¶å®ç° `WIDESEA_I*Service/` ä¸çé¢åæ¥å£ãéè¿ Autofac DI 注åã |
| | | |
| | | - **ä»å¨å±** (`WIDESEA_Core/BaseRepository/`)ï¼ä½¿ç¨ SqlSugar ORM çæ°æ®è®¿é®å±ãæ³å `IRepository<T>` å `RepositoryBase<T>` æä¾éç¨ CRUD æä½ã |
| | | |
| | | - **模å** (`WIDESEA_Model/Models/`)ï¼æé¢åç»ç»ï¼BasicãCheckãInboundãOutboundãStockãSystemãTaskInfoãRecordãConfigãApprovalFlowï¼ã模åç»§æ¿èª `BaseEntity` æ `BaseWarehouseEntity`ã |
| | | |
| | | - **DTO** (`WIDESEA_DTO/`)ï¼API 请æ±/ååºçæ°æ®ä¼ è¾å¯¹è±¡ï¼æé¢åç»ç»ã |
| | | |
| | | **å
³é®åºç¡è®¾æ½ç»ä»¶ï¼** |
| | | - `WIDESEA_Core/BaseController/ApiBaseController.cs`ï¼å
·æèªå¨ CRUD è·¯ç±çåºç¡æ§å¶å¨ |
| | | - `WIDESEA_Core/BaseServices/IService.cs`ï¼åºç¡æå¡æ¥å£ |
| | | - `WIDESEA_Core/Extensions/AutofacModuleRegister.cs`ï¼Autofac DI 注å |
| | | - `WIDESEA_Core/DB/`ï¼SqlSugar æ°æ®åºé
ç½® |
| | | - `WIDESEA_Core/Authorization/`ï¼JWT 身份éªè¯ |
| | | - `WIDESEA_Core/Filter/`ï¼å
¨å±å¼å¸¸å¤çåæä½è¿æ»¤å¨ |
| | | |
| | | ### åç«¯æ¶æ |
| | | |
| | | **带æèªå®ä¹ç»ä»¶æ¡æ¶ç Vue 3 ç»åå¼ APIï¼** |
| | | |
| | | - **ViewGrid ç»ä»¶** (`src/components/basic/ViewGrid/`)ï¼æ ¸å¿è¡¨æ ¼/ç½æ ¼ç»ä»¶ï¼å¤çæ°æ®æ¾ç¤ºãå页ãæç´¢å CRUD æä½ãéè¿æ©å±æä»¶é«åº¦å¯é
ç½®ã |
| | | |
| | | - **æ©å±æä»¶** (`src/extension/`)ï¼é
ç½®æ¯ä¸ªå®ä½ç ViewGrid è¡ä¸ºç JavaScript æä»¶ãå®ä»¬å®ä¹è¡¨æ ¼åã表ååæ®µãæç´¢æ¡ä»¶åèªå®ä¹æä½ã模å¼ï¼`src/extension/{domain}/{entityName}.js` å¹é
å端æ§å¶å¨ã |
| | | |
| | | - **API å±** (`src/api/`)ï¼å°è£
Axios ç HTTP 客æ·ç«¯ï¼å
·æèº«ä»½éªè¯åé误å¤çæ¦æªå¨ã |
| | | |
| | | - **è·¯ç±å¨** (`src/router/index.js`)ï¼å¸¦æå叿¨¡å¼ã身份éªè¯å®å«åä» `viewGird.js` å¨æè·¯ç±å è½½ç Vue Routerã |
| | | |
| | | **å
³é®å端模å¼ï¼** |
| | | - æ©å±æä»¶ï¼å¦ `src/extension/basic/materielInfo.js`ï¼å®ä¹è¡¨å¤´ã表ååæ®µåèªå®ä¹ä¸å¡é»è¾ |
| | | - `src/views/` ä¸çè§å¾å¾ç²¾ç®ï¼å¤§å¤ä½¿ç¨ç±æ©å±é
ç½®ç ViewGrid ç»ä»¶ |
| | | - Vuex åå¨ç®¡ç身份éªè¯ç¶æåå è½½æç¤ºå¨ |
| | | |
| | | ## é
ç½® |
| | | |
| | | ### å端é
ç½® |
| | | |
| | | `WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json` ä¸çå
³é®è®¾ç½®ï¼ |
| | | - `urls`ï¼æå¡å¨ç«¯å£ï¼é»è®¤ï¼`http://*:9291`ï¼ |
| | | - `ConnectionString`ï¼SQL Server æ°æ®åºè¿æ¥ |
| | | - `MainDB`ï¼ä¸»æ°æ®åºåç§° |
| | | - `Cors`ï¼å端æºå¤´ç CORS çç¥ |
| | | - `WebSocketPort`ï¼å®æ¶æ´æ°ç WebSocket 端å£ï¼é»è®¤ï¼9296ï¼ |
| | | - `AutoOutboundTask`ï¼èªå¨åºåºæä½çåå°ä»»å¡é
ç½® |
| | | |
| | | ### å端é
ç½® |
| | | |
| | | - `vite.config.js`ï¼Vite æå»ºé
ç½®ï¼`@` å«åæå `src/` |
| | | - æå¡å¨é»è®¤è¿è¡å¨ç«¯å£ 8080 |
| | | - åºäºåå¸çè·¯ç±ï¼`createWebHashHistory`ï¼ |
| | | |
| | | ## 代ç çº¦å® |
| | | |
| | | ### å端 |
| | | |
| | | 1. **å½åè§è**ï¼ |
| | | - æ§å¶å¨ï¼`{Entity}Controller.cs` |
| | | - æå¡ï¼`{Entity}Service.cs`ï¼å®ç° `I{Entity}Service`ï¼ |
| | | - 模åï¼`Dt_{EntityName}.cs`ï¼æ°æ®åºå®ä½ä½¿ç¨ `Dt_` åç¼ï¼ |
| | | - API è·¯ç±ï¼`api/{ControllerName}` |
| | | |
| | | 2. **æå¡æ³¨å**ï¼å®ç° `IDependency` çæå¡ä¼éè¿ Autofac 仿æé¡¹ç®ç¨åºéä¸èªå¨æ³¨åã |
| | | |
| | | 3. **æ§å¶å¨æ¨¡å¼**ï¼å¤§å¤æ°æ§å¶å¨ç»§æ¿èª `ApiBaseController<TService, TEntity>`ï¼åªéè¦æé 彿°ãæ ¹æ®éè¦æ·»å èªå®ä¹æä½ã |
| | | |
| | | 4. **ååºæ ¼å¼**ï¼`WebResponseContent` å
è£
å¨ï¼å
å« `Status`ï¼å¸å°å¼ï¼å `Data` 屿§ã |
| | | |
| | | ### å端 |
| | | |
| | | 1. **æ©å±æä»¶æ¨¡å¼**ï¼å¯¹äºæ¯ä¸ªå端å®ä½ï¼å¨ `src/extension/{domain}/{entity}.js` å建æ©å±æä»¶ï¼å
å«ï¼ |
| | | - è¡¨æ ¼åå®ä¹ |
| | | - 表ååæ®µé
ç½® |
| | | - èªå®ä¹ URL æ¨¡å¼ |
| | | - ä¸å¡é»è¾é©å |
| | | |
| | | 2. **ç»ä»¶å½å**ï¼Vue ç»ä»¶ä½¿ç¨ PascalCaseï¼å°½å¯è½å¹é
å端å®ä½åç§°ã |
| | | |
| | | 3. **API è°ç¨**ï¼ä½¿ç¨å
¨å± `this.http` 对象è¿è¡ HTTP 请æ±ã |
| | | |
| | | ## æ·»å æ°åè½ |
| | | |
| | | ### å端 |
| | | 1. å¨ `WIDESEA_Model/Models/{Domain}/` ä¸å建模å |
| | | 2. å¨ `WIDESEA_I{Domain}Service/` ä¸å建æå¡æ¥å£ |
| | | 3. å¨ `WIDESEA_{Domain}Service/` ä¸å建æå¡å®ç° |
| | | 4. å¨ `WIDESEA_WMSServer/Controllers/{Domain}/` ä¸å建æ§å¶å¨ï¼ç»§æ¿èª `ApiBaseController<TService, TEntity>` |
| | | 5. æå¡éè¿ `IDependency` æ¥å£èªå¨æ³¨å |
| | | |
| | | ### å端 |
| | | 1. å¨ `src/extension/{domain}/{entity}.js` å建æ©å±æä»¶ |
| | | 2. å¦éèªå®ä¹ UIï¼å¨ `src/views/{domain}/{entity}.vue` å建å¯éè§å¾ç»ä»¶ |
| | | 3. å¦éè¦ï¼æ·»å è·¯ç±é
ç½® |
| | | 4. ViewGrid ç»ä»¶é
åæ©å±é
ç½®å¯èªå¨å¤ç大夿° CRUD æä½ |
| | | |
| | | ## æ°æ®åº |
| | | |
| | | - **ORM**ï¼SqlSugar |
| | | - **æ°æ®åº**ï¼SQL Server |
| | | - **è¿æ¥å符串**ï¼å¨ `appsettings.json` ä¸é
ç½® |
| | | - **è¿ç§»**ï¼éè¿ SqlSugar ç Code First æ¹å¼å¤ç |
| | | |
| | | ## 宿¶åè½ |
| | | |
| | | - SignalR ç¨äºæå¡å¨å客æ·ç«¯ä¹é´ç宿¶æ´æ° |
| | | - WebSocket æå¡å¨å¨åç¬ç«¯å£ï¼å¯å¨ `appsettings.json` ä¸é
ç½®ï¼ |
| | | - å端 SignalR 客æ·ç«¯éæå¨ `src/main.js` ä¸ |
| | | |
| | | ## API ææ¡£ |
| | | |
| | | è¿è¡å端æå¡å¨æ¶å¯ç¨ Swagger UIï¼æ¥ç `/swagger` 端ç¹ï¼ã |