#
Junjie
18 小时以前 ed544586dddf01d0fcaedb0db411f243da98b1fe
#
4个文件已添加
224 ■■■■■ 已修改文件
skills/zy-wcs-dev/SKILL.md 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
skills/zy-wcs-dev/agents/openai.yaml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
skills/zy-wcs-pixijs-frontend/SKILL.md 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
skills/zy-wcs-pixijs-frontend/agents/openai.yaml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
skills/zy-wcs-dev/SKILL.md
New file
@@ -0,0 +1,115 @@
---
name: zy-wcs-dev
description: 维护和开发 WCS(Spring Boot + MyBatis-Plus + Layui/Vue)项目的执行型技能。处理后端接口/服务/Mapper 与 XML 联动修改、设备线程与调度逻辑排查、前端页面与静态 JS 改动、以及本地构建与回归验证。用户提到 WCS、`com/zy` 包结构、`application.yml`、`mapper/*.xml`、`src/main/webapp/views`、设备控制线程(Crn/Rgv/Station/DualCrn)或要求“按当前项目方式改代码/排查问题”时使用。
---
# zy-wcs-dev
## Overview
在该仓库内执行改动时,优先最小变更、快速验证、明确影响范围。始终把 Java 代码、MyBatis XML、前端页面与对应静态脚本视为一个联动单元。
## Project Quick Map
- 后端入口:`src/main/java/com/zy/Boot.java`
- 核心分层:
  - `core`:设备编排、连接驱动、线程与协议
  - `asrs`:业务域、任务调度、接口控制器
  - `system`:用户权限、日志、系统配置
  - `common`:公共 web 与工具类
- 持久层:
  - Java Mapper:`src/main/java/com/zy/**/mapper/*Mapper.java`
  - SQL XML:`src/main/resources/mapper/*.xml`
- 前端:
  - 页面:`src/main/webapp/views/**`
  - 脚本:`src/main/webapp/static/js/**`
  - 样式:`src/main/webapp/static/css/**`
- 配置:`src/main/resources/application.yml`
- 构建产物:`target/wcs.war`
## Workflow
### 1. Confirm Scope
- 明确改动属于哪一层:后端接口、业务服务、设备线程、数据库映射、前端页面。
- 明确是否涉及联动文件:`Controller -> Service -> Mapper.java -> Mapper.xml -> view/js`。
- 明确是否需要兼容现有上下文路径:`/@pom.build.finalName@`(实际为 `/wcs`)。
### 2. Locate Code Precisely
- 用 `rg` 快速定位,避免盲目全量阅读:
```bash
rg -n "关键字" src/main/java src/main/resources src/main/webapp
rg --files src/main/java/com/zy | rg "Controller|Service|Mapper"
```
- 优先读取与改动直接相关的最小文件集,再扩展上下游依赖。
### 3. Implement Minimal Safe Change
#### 后端改动
- 控制器仅做参数与响应组织,核心逻辑放在 `Service`/`ServiceImpl`。
- 修改实体/字段时同步检查:
  - 实体类
  - Mapper 接口
  - 对应 XML(`resultMap`、`select/insert/update`)
- 设备相关逻辑改动时,优先检查:
  - `core/thread/**`
  - `core/network/**`
  - `core/task/**`
  - `asrs/task/**`
#### 前端改动
- 页面通常在 `views/<feature>/`,其逻辑通常在 `static/js/<feature>/`。
- 改动页面字段时同步检查后端接口字段名与 JSON 结构。
- 保持当前 Layui/Vue 代码风格,不引入重型新框架。
### 4. Validate Locally
按成本从低到高执行:
1. 编译校验:
```bash
mvn -q -DskipTests compile
```
2. 单测(若有):
```bash
mvn test
```
3. 打包:
```bash
mvn clean package -DskipTests
```
4. 本地启动验证:
```bash
mvn spring-boot:run
```
启动后重点检查:
- 端口是否为 `9090`
- 上下文路径是否为 `/wcs`
- 日志目录是否可写:`./stock/out/wcs/logs`
### 5. High-Risk Checklist
- 不提交真实密钥/密码。`application.yml` 出现敏感值时,输出中使用脱敏占位。
- 修改 Mapper XML 后,确认 SQL 字段与实体字段映射一致,避免运行时空字段或类型错误。
- 修改调度器或线程逻辑时,确认不存在明显阻塞、死循环或共享状态竞争。
- 修改 API 时,确认前端调用路径包含上下文路径前缀(`/wcs`)。
## Response Template
执行任务后,按以下结构给出结果:
1. 先给结论:完成了什么、影响哪些模块。
2. 列出修改文件清单。
3. 说明验证命令与结果(成功/失败及原因)。
4. 若有未完成项,明确阻塞点和下一步。
## Do and Don't
- Do:优先最小改动、可回滚、可验证。
- Do:新增逻辑时保持命名和包结构一致(Controller/Service/Mapper)。
- Don't:未经要求不改动无关文件或进行大规模重构。
- Don't:未经确认不删除或替换现有设备编排主流程。
skills/zy-wcs-dev/agents/openai.yaml
New file
@@ -0,0 +1,4 @@
interface:
  display_name: "ZY WCS Dev"
  short_description: "Develop and debug the zy-wcs Java project"
  default_prompt: "Use this skill to implement or troubleshoot backend/frontend changes in the zy-wcs project, including controller/service/mapper/xml linkage and local Maven verification."
skills/zy-wcs-pixijs-frontend/SKILL.md
New file
@@ -0,0 +1,101 @@
---
name: zy-wcs-pixijs-frontend
description: 在 zy-wcs 项目中进行 PixiJS 前端地图与设备可视化开发/排障的执行技能。用于修改 `src/main/webapp/components/MapCanvas.js`、`views/watch/console.html`、`views/watch/console_pixijs.html`、`views/locMap/locMap.html` 等文件,处理地图渲染、拖拽缩放、旋转镜像、WebSocket 实时数据绑定(crn/dualcrn/rgv/station)、交互高亮与性能优化。用户提到“PixiJS 地图”“控制台地图卡顿”“设备点位显示错误”“watch 页面前端改动”时使用。
---
# zy-wcs-pixijs-frontend
## Overview
该技能面向本仓库现有 PixiJS 实现,不做从零框架改造。优先在当前 Vue + Pixi 结构中做最小、安全、可验证改动。
## Entry Points
- 主入口页面:`src/main/webapp/views/watch/console.html`
- 主画布组件:`src/main/webapp/components/MapCanvas.js`
- 旧版页面(仍可参考):`src/main/webapp/views/watch/console_pixijs.html`
- 旧版静态地图脚本:`src/main/webapp/static/js/console.map.js`
- 库位地图页面:`src/main/webapp/views/locMap/locMap.html`
- Pixi 运行库:`src/main/webapp/static/js/pixi-legacy.min.js`(项目为 Pixi v5 体系)
## Workflow
### 1. Confirm Change Type
- 渲染问题:sprite 位置、图层顺序、轨道/货架绘制、文字缩放。
- 交互问题:拖拽、滚轮缩放、点击事件、hover tooltip。
- 实时数据问题:WebSocket 消息路由、状态颜色映射、设备编号与任务号显示。
- 视图变换问题:旋转、镜像、fit-to-view、楼层切换后复位。
### 2. Locate the Correct File First
- `console.html` 只负责外层页面与 card/参数联动。
- `MapCanvas.js` 负责绝大多数 Pixi 逻辑(创建画布、渲染、WebSocket、状态刷新、变换)。
- `console_pixijs.html` 与 `console.map.js` 属于旧实现,改动前先确认当前页面是否实际使用。
建议定位命令:
```bash
rg -n "map-canvas|createMapData|drawTracks|applyMapTransform|connectWs|webSocketOnMessage" src/main/webapp
```
### 3. Implement with Existing MapCanvas Lifecycle
- 初始化链路:`mounted -> createMap -> connectWs -> getMap -> createMapData`
- 实时刷新链路:
  - 定时发送:`/console/latest/data/crn|dualcrn|station|rgv`
  - 消息分发:`webSocketOnMessage`
  - 渲染更新:`setCrnInfo/setDualCrnInfo/setRgvInfo/setSiteInfo`
- 变换链路:
  - `rotateMap/toggleMirror`
  - `applyMapTransform -> fitStageToContent -> scheduleAdjustLabels`
### 4. PixiJS Change Rules
- 保持容器职责不变:
  - `tracksGraphics` 画轨道线
  - `shelvesContainer` 放货架
  - `objectsContainer` 放静态对象
  - `objectsContainer2` 放设备对象(crn/dualcrn/rgv)
- 新增设备类型时,至少同步:
  - `createMapData` 的识别与创建
  - WebSocket 路由与 `setXxxInfo`
  - 状态色与文本更新逻辑
- 修改缩放/旋转逻辑时,必须回归 `adjustLabelScale`,避免文本倒置、过小或错位。
### 5. WebSocket and Data Safety
- 保持消息 URL 字符串与后端一致,避免拼写漂移。
- 处理 JSON 前先判空并兼容数字字符串。
- 楼层切换期间尊重 `isSwitchingFloor`,避免状态更新与重建并发冲突。
- 重连逻辑沿用指数退避,不要改成高频重连。
### 6. Performance Checklist
- 优先复用纹理缓存(如 `pixiShelfMap`、`pixiTrackMap`、颜色纹理缓存)。
- 不在高频回调里重复 new 大对象;尽量复用对象与容器。
- 交互监听与定时器在 `beforeDestroy` 里成对释放。
- 对 UI 文本或 hover 计算使用节流/RAF(项目已用 `requestAnimationFrame`)。
### 7. Verify Quickly
1. 打开 `views/watch/console.html`,确认地图正常渲染。
2. 测试拖拽、滚轮缩放、旋转、镜像。
3. 观察 WebSocket 数据驱动下设备位置和状态色是否刷新。
4. 切换楼层后确认无残影、无旧层对象泄漏。
5. 关注 FPS 面板是否明显下降。
## Output Format
完成任务后按以下结构输出:
1. 改动结论(修复/新增内容)。
2. 文件清单(精确到路径)。
3. 渲染链路影响点(初始化、实时更新、交互、性能)。
4. 验证结果与未覆盖风险。
## Do and Don't
- Do:优先改 `MapCanvas.js` 主链路,不随意改旧版页面。
- Do:保持与现有 Vue + Pixi v5 风格一致。
- Don't:未经确认,不切换 Pixi 版本或重构为新前端框架。
- Don't:在定时刷新和 pointer 事件中引入高开销同步逻辑。
skills/zy-wcs-pixijs-frontend/agents/openai.yaml
New file
@@ -0,0 +1,4 @@
interface:
  display_name: "ZY WCS PixiJS Frontend"
  short_description: "Develop and debug PixiJS map pages in zy-wcs"
  default_prompt: "Use this skill to implement or troubleshoot PixiJS frontend changes in zy-wcs, especially MapCanvas.js rendering, websocket-driven device updates, interactions, and performance."