@agile-team/wl-skills-kit 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.7] - 2026-04-10
4
+
5
+ ### 修复:menu-sync SKILL.md 漏同步
6
+
7
+ - `files/.github/skills/menu-sync/SKILL.md` 未随 v1.1.6 同步源仓库版本
8
+ - 修复内容:sysAppNo 字段补齐(配置模板/表格/示例)、`{appNo}` → `{sysAppNo}` 变量统一、响应码说明补充
9
+ - 全量审计确认 19 个同步文件 + 9 个 TPL 模板零差异
10
+
11
+ ## [1.1.6] - 2026-04-10
12
+
13
+ ### 修复:menu-config.md 残留引用 + env 模板字段缺失
14
+
15
+ - **5 处 `menu-config.md` 残留 → 统一为 `SYS_MENU_INFO.md`**:
16
+ - `use-skill.md`:page-codegen 输出列 + changelog 条目
17
+ - `menu-sync-design.md`:当前工作流 + 过渡路径
18
+ - `TPL-DETAIL-TABS.md`:校验清单
19
+ - **env.local.json 模板补齐 `sysAppNo` 字段**(v1.1.4 发版时遗漏)
20
+ - **guide.md 补齐 `sysAppNo`**:文件结构示例、字段说明表、获取方式小节
21
+
3
22
  ## [1.1.5] - 2026-04-09
4
23
 
5
24
  ### 修复:page-codegen → menu-sync 数据闭环
@@ -243,8 +243,7 @@ menu-sync Skill 已实现 Phase 1:AI 读取 `SYS_MENU_INFO.md` + `env.local.js
243
243
 
244
244
  ```
245
245
  page-codegen 生成代码
246
- 自动生成 menu-config.md(含菜单字段)
247
- → 追加更新 SYS_MENU_INFO.md
246
+ 写入 SYS_MENU_INFO.md(覆盖/追加模式)
248
247
  → 对 AI 说"帮我创建菜单"
249
248
  → AI 读取 SYS_MENU_INFO.md + env.local.json → 调 /system/menu/save
250
249
  → 输出 created/skipped 结果表
@@ -258,7 +257,7 @@ page-codegen 生成代码
258
257
 
259
258
  **过渡路径**:
260
259
 
261
- 1. ✅ page-codegen Skill 自动生成 `menu-config.md`(已实现)
260
+ 1. ✅ page-codegen Skill 自动生成 `SYS_MENU_INFO.md`(已实现)
262
261
  2. ✅ menu-sync Skill Phase 1:AI 调 `/system/menu/save`(已实现)
263
262
  3. ⏳ 后端实现 `POST /system/menu/batchPush` 接口
264
263
  4. ⏳ 前端 `scripts/menu-push.ts` 读 `pages.ts` → POST batchPush
@@ -23,7 +23,7 @@
23
23
  | ------------------ | ----------------------- | ------------------------------------------------- | -------- | ----------------------- |
24
24
  | prototype-scan | Axure HTML / 详设文档 | page-spec JSON | ✅ 必须 | 不用改,直接复制 |
25
25
  | api-contract | page-spec JSON | api.md | ✅ 推荐 | 微调 URL 命名规范 |
26
- | page-codegen | page-spec JSON + api.md | index.vue + data.ts + index.scss + menu-config.md | ✅ 必须 | **必须改**,代码模板绑项目(含 9 个 TPL-*.md 模板文件,按模式名命名) |
26
+ | page-codegen | page-spec JSON + api.md | index.vue + data.ts + index.scss + SYS_MENU_INFO.md | ✅ 必须 | **必须改**,代码模板绑项目(含 9 个 TPL-*.md 模板文件,按模式名命名) |
27
27
  | menu-sync | SYS_MENU_INFO.md + env.local.json | 后端菜单表记录(AI 调 `/system/menu/save`) | ✅ 推荐 | 不用改,配置 env.local.json 即可(Phase 2 script 待接口就绪) |
28
28
  | convention-audit | 项目源码 + copilot-instructions.md | 偏差报告 + 整改建议 | ❌ 按需 | 不用改,规范基线来自 copilot-instructions.md |
29
29
 
@@ -317,7 +317,7 @@ export default defineConfig(({ command }) => ({
317
317
  | ---- | ------- | ----------------------------------------------------------- |
318
318
  | v1.0 | 2026-03 | 初版 4 个 Skill + copilot-instructions.md |
319
319
  | v1.1 | 2026-04 | prototype-scan 输出改为 JSON page-spec + notes |
320
- | v1.1 | 2026-04 | page-codegen 增加五轮强制校验 + menu-config.md 生成 |
320
+ | v1.1 | 2026-04 | page-codegen 增加五轮强制校验 + SYS_MENU_INFO.md 生成 |
321
321
  | v1.1 | 2026-04 | 修复子表交互遗漏(editable / inlineEdit 字段提取) |
322
322
  | v1.2 | 2026-04 | page-codegen 补全 FORM_ROUTE 模板 + @/types/page 导入规范 |
323
323
  | v1.2 | 2026-04 | 模板 C(TREE_LIST)补全 data.ts + 模板 D(DETAIL_TABS)新增 |
@@ -21,9 +21,9 @@ description: "Use when: creating system menus for newly generated pages, batch r
21
21
  | ------------------------------------------------ | ------------------ | --------------------------------------- |
22
22
  | 菜单名称、路径、组件、权限、隐藏、排序、应用编码 | `SYS_MENU_INFO.md` | 原型/详设阶段自动生成,AI 直接读取 |
23
23
  | `parentMenuNameCode` | API 自动查询 | AI 调 children 接口获取,无需手填 |
24
- | **gatewayPath、parentMenuId、token** | `env.local.json` | 每套环境不同,唯一需要手动维护的 3 个值 |
24
+ | **gatewayPath、parentMenuId、sysAppNo、token** | `env.local.json` | 每套环境不同,唯一需要手动维护的 4 个值 |
25
25
 
26
- ### 配置文件(只需填 3 个字段)
26
+ ### 配置文件(只需填 4 个字段)
27
27
 
28
28
  `.github/skills/menu-sync/env/env.local.json`(已加入 `.gitignore`,本地维护,不提交)
29
29
 
@@ -31,6 +31,7 @@ description: "Use when: creating system menus for newly generated pages, batch r
31
31
  {
32
32
  "gatewayPath": "http://网关地址:端口",
33
33
  "parentMenuId": "父级菜单ID",
34
+ "sysAppNo": "应用编码(从已有菜单的sysAppNo字段获取,非明文)",
34
35
  "token": "Bearer Token(不含bearer前缀)"
35
36
  }
36
37
  ```
@@ -39,7 +40,7 @@ description: "Use when: creating system menus for newly generated pages, batch r
39
40
 
40
41
  ### 使用步骤
41
42
 
42
- 1. **首次**:按 `env/guide.md` 填写 `env.local.json` 的 3 个字段
43
+ 1. **首次**:按 `env/guide.md` 填写 `env.local.json` 的 4 个字段
43
44
  2. **之后**:直接对 AI 说「帮我创建菜单」/「同步菜单」/「补菜单」
44
45
  3. AI 自动执行:读 `SYS_MENU_INFO.md` → 读 `env.local.json` → 查父级已有子节点 → 逐条对比去重 → 调 `/system/menu/save` → 输出 created/skipped 结果表
45
46
  4. **全程无需手动执行任何命令**
@@ -90,18 +91,20 @@ description: "Use when: creating system menus for newly generated pages, batch r
90
91
  GET {gatewayPath}/system/menu/children?current=1&size=100&menuId={parentMenuId}
91
92
  Headers:
92
93
  authorization: bearer {token}
93
- Sysappno: {appNo}
94
+ Sysappno: {sysAppNo}
94
95
  ```
95
96
 
96
97
  #### Step 2: 逐条创建菜单
97
98
 
98
99
  对于每条待创建的菜单,先检查是否与已有菜单重名(`menuName` 或 `path` 相同),重复则跳过。
99
100
 
101
+ > **响应码说明**:后端成功响应为 `code: 2000`(非标准 HTTP 200),判断成功应检查 `response.body.code === 2000` 或 `message` 包含"成功"。
102
+
100
103
  ```
101
104
  POST {gatewayPath}/system/menu/save
102
105
  Headers:
103
106
  authorization: bearer {token}
104
- Sysappno: {appNo}
107
+ Sysappno: {sysAppNo}
105
108
  Content-Type: application/json
106
109
 
107
110
  Body:
@@ -112,12 +115,12 @@ Body:
112
115
  "hidden": false,
113
116
  "type": "C",
114
117
  "parentId": "{parentMenuId}",
115
- "sysAppNo": "{appNo}",
118
+ "sysAppNo": "{sysAppNo}",
116
119
  "orderNum": {nextOrder},
117
120
  "menuName": "客户档案",
118
121
  "menuNameCode": "{parentMenuNameCode}:{pinyinName}",
119
122
  "path": "mmwrCustomerArchive",
120
- "permission": "produce:mmwrCustomerArchive:list",
123
+ "permission": "mmwrCustomerArchive",
121
124
  "component": "produce/production-mmwr/aiflow/mmwr-customer-archive/index.vue"
122
125
  }
123
126
  ```
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "gatewayPath": "http://你的网关地址:端口",
3
3
  "parentMenuId": "父级菜单ID",
4
+ "sysAppNo": "应用编码(从已有菜单接口响应中获取,非明文)",
4
5
  "token": "你的Bearer Token(不含bearer前缀)"
5
6
  }
@@ -11,6 +11,7 @@
11
11
  {
12
12
  "gatewayPath": "http://192.168.10.50:9000",
13
13
  "parentMenuId": "1803456789012345678",
14
+ "sysAppNo": "QjQuXy1kbKxZyjhS5N2",
14
15
  "token": "eyJhbGci..."
15
16
  }
16
17
  ```
@@ -23,6 +24,7 @@
23
24
  |---|---|---|
24
25
  | `gatewayPath` | 后端网关地址,含协议和端口,**末尾不加斜杠** | `http://192.168.10.50:9000` |
25
26
  | `parentMenuId` | 目标父级目录的菜单数据库 ID(每套环境不同) | `1803456789012345678` |
27
+ | `sysAppNo` | 应用编码(非明文,从已有菜单接口响应中获取) | `QjQuXy1kbKxZyjhS5N2` |
26
28
  | `token` | 当前登录用户的 Bearer Token,**不含 `bearer ` 前缀** | `eyJhbGci...` |
27
29
 
28
30
  ---
@@ -45,6 +47,14 @@ GET {gatewayPath}/system/menu/children?menuId=0
45
47
 
46
48
  从顶级节点向下逐层查找,直到找到目标父级目录。也可以告诉 AI「帮我查一下父级菜单 ID」,AI 会自动调接口查询。
47
49
 
50
+ ### sysAppNo
51
+
52
+ 系统用编码后的字符串标识应用(如 `QjQuXy1kbKxZyjhS5N2`),而非明文 `produce` / `sale`。
53
+
54
+ **获取方式**:浏览器 F12 → Network → 找任意菜单相关接口的响应体 → 查看已有菜单条目的 `sysAppNo` 字段值,复制即可。
55
+
56
+ > ℹ️ 同一领域下所有菜单的 `sysAppNo` 相同,复制任意一个即可。
57
+
48
58
  ### token
49
59
 
50
60
  1. 在浏览器中登录系统
@@ -922,7 +922,7 @@ spec.features.viewSwitch === true:
922
922
  □ mock 数据包含所有视角字段的并集(切换视角后不出现空列)?
923
923
 
924
924
  spec.features.hiddenMenu === true:
925
- menu-config 标注为隐藏?
925
+ SYS_MENU_INFO 标注为隐藏?
926
926
  ```
927
927
 
928
928
  ### 第五轮:文件完整性
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/wl-skills-kit",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "AI Skill 模板包 — 一键导入 AI 指令 + 组件文档 + 通用组件 + 领域样例,覆盖 Copilot/Cursor/Windsurf/Kiro 等主流 AI 编辑器",
5
5
  "bin": {
6
6
  "wl-skills-kit": "./bin/wl-skills.js"