wanshenmean
2026-03-24 5cdb42e1ac9023ead485b375e68f17bea3d5c1f0
去除无用文件
已添加13个文件
已删除42个文件
9890 ■■■■■ 文件已修改
.omc/project-memory.json 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.omc/state/hud-state.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.omc/state/hud-stdin-cache.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/idle-notif-cooldown.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/subagent-tracking.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/AGENTS.md 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/CLAUDE.md 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/idle-notif-cooldown.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/subagent-tracking.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/AGENTS.md 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/CLAUDE.md 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSServer/AGENTS.md 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/.gitignore 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/README.md 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/index.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/package-lock.json 4654 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/package.json 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/App.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/main.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.omc/project-memory.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,203 @@
{
  "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": []
}
.omc/state/hud-state.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
  "timestamp": "2026-03-24T02:39:49.050Z",
  "backgroundTasks": [],
  "sessionStartTimestamp": "2026-03-24T02:33:23.593Z",
  "sessionId": "4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66"
}
.omc/state/hud-stdin-cache.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
{"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}
Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
{"t":0,"agent":"a7f1459","agent_type":"unknown","event":"agent_stop","success":true}
Code/WCS/.omc/state/idle-notif-cooldown.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "lastSentAt": "2026-03-24T02:37:21.000Z"
}
Code/WCS/.omc/state/subagent-tracking.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "agents": [],
  "total_spawned": 0,
  "total_completed": 0,
  "total_failed": 0,
  "last_updated": "2026-03-24T02:38:41.486Z"
}
Code/WCS/AGENTS.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
# 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 ä¸­å•独标注。
Code/WCS/CLAUDE.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,183 @@
# 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 è¿è¡Œ
Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
{"t":0,"agent":"a1dd170","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a5ca246","agent_type":"unknown","event":"agent_stop","success":true}
Code/WMS/.omc/state/idle-notif-cooldown.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "lastSentAt": "2026-03-24T02:40:56.392Z"
}
Code/WMS/.omc/state/subagent-tracking.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "agents": [],
  "total_spawned": 0,
  "total_completed": 0,
  "total_failed": 0,
  "last_updated": "2026-03-24T02:41:20.073Z"
}
Code/WMS/AGENTS.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
# 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 å˜æ›´æˆªå›¾æˆ–录屏;
- å…³è”任务或问题编号(如有)。
Code/WMS/CLAUDE.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
# 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` ç«¯ç‚¹ï¼‰ã€‚
Code/WMS/WIDESEA_WMSServer/AGENTS.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/.gitignore
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/README.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/index.html
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/package-lock.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/package.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/App.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/main.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts
ÎļþÒÑɾ³ý