@agile-team/wl-skills-kit 2.10.1 → 2.11.0
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 +18 -0
- package/README.md +7 -7
- package/bin/wl-skills.js +49 -16
- package/files/.github/copilot-instructions.md +23 -465
- package/files/.wl-skills/copilot-instructions-full.md +233 -0
- package/files/{docs → .wl-skills/docs}/jh-pagination.md +2 -2
- package/files/{docs → .wl-skills/docs}/page-query-hook-best-practices.md +3 -3
- package/files/{.github → .wl-skills}/guides/README.md +1 -1
- package/files/{.github → .wl-skills}/guides/architecture.md +5 -5
- package/files/{.github → .wl-skills}/guides/mcp-setup.md +1 -1
- package/files/{.github → .wl-skills}/guides/usage.md +8 -8
- package/files/{.github → .wl-skills}/reports/SYS_MENU_INFO.md +1 -1
- package/files/{.github → .wl-skills}/reports/SYS_PERMISSION_INFO.md +1 -1
- package/files/{.github → .wl-skills}/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +1 -1
- package/files/{.github → .wl-skills}/skills/_best-practices.md +5 -5
- package/files/{.github → .wl-skills}/skills/_compat/README.md +1 -1
- package/files/{.github → .wl-skills}/skills/_compat/editors.json +1 -1
- package/files/{.github → .wl-skills}/skills/_pipeline.md +9 -9
- package/files/{.github → .wl-skills}/skills/_registry.md +3 -3
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/SKILL.md +27 -27
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/USAGE.md +22 -22
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/business-index.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/business-open-questions.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-dictionary.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-field.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-index.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-requirement.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/convention-audit/SKILL.md +6 -6
- package/files/{.github → .wl-skills}/skills/core/convention-audit/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/SKILL.md +10 -10
- package/files/{.github → .wl-skills}/skills/core/page-codegen/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +7 -7
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +5 -5
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/prototype-scan/SKILL.md +11 -11
- package/files/{.github → .wl-skills}/skills/core/prototype-scan/USAGE.md +3 -3
- package/files/{.github → .wl-skills}/skills/core/spec-doc-parse/SKILL.md +9 -9
- package/files/{.github → .wl-skills}/skills/core/spec-doc-parse/USAGE.md +6 -6
- package/files/{.github → .wl-skills}/skills/core/template-extract/SKILL.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/template-extract/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/sync/_mcp-guardrail.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/dict-sync/SKILL.md +5 -5
- package/files/{.github → .wl-skills}/skills/sync/dict-sync/USAGE.md +2 -2
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/SKILL.md +6 -6
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/USAGE.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/env/guide.md +2 -2
- package/files/{.github → .wl-skills}/skills/sync/permission-sync/SKILL.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/permission-sync/USAGE.md +1 -1
- package/files/{src → .wl-skills/src}/components/global/C_Splitter/index.vue +2 -2
- package/files/{src → .wl-skills/src}/components/local/c_formModal/README.md +1 -1
- package/files/{src → .wl-skills/src}/components/local/c_formSections/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseForm/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseQuery/README.md +4 -4
- package/files/{src → .wl-skills/src}/components/remote/BaseTable/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseToolbar/README.md +1 -1
- package/files/{.github → .wl-skills}/standards/02-code-structure.md +1 -1
- package/files/{.github → .wl-skills}/standards/08-git.md +1 -1
- package/files/{.github → .wl-skills}/standards/11-form-validation.md +1 -1
- package/files/{.github → .wl-skills}/standards/13-platform-components.md +15 -15
- package/files/{.github → .wl-skills}/standards/14-layout-containers.md +4 -4
- package/files/{demo → .wl-skills/templates}/README.md +3 -3
- package/lib/vite-plugin-wl-skills.js +97 -0
- package/package.json +2 -2
- /package/files/{docs → .wl-skills/docs}/jh-date-range.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-date.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-dept-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-drag-row.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-file-upload.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-select.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-text.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-textarea.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-user-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/mock-architecture.md +0 -0
- /package/files/{docs → .wl-skills/docs}/request.md +0 -0
- /package/files/{.github → .wl-skills}/reports/README.md +0 -0
- /package/files/{.github → .wl-skills}/reports/SYS_DICT_INFO.md +0 -0
- /package/files/{.github → .wl-skills}/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md" +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/agents.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/claude-code.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cline.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cursor-mdc.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cursor-rules.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/github-copilot.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/kiro.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/qoder.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/trae.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/windsurf.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/core/api-contract/SKILL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/api-contract/USAGE.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/_index.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/sale/README.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-LIST.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/domain/README.md +0 -0
- /package/files/{.github → .wl-skills}/skills/ops/code-fix/SKILL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/ops/code-fix/USAGE.md +0 -0
- /package/files/{.github → .wl-skills}/skills/sync/env.local.json +0 -0
- /package/files/{.github → .wl-skills}/skills/sync/menu-sync/env/env.local.json +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_ParentView/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Splitter/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/svgicon.js +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/README.md +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/config.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/types.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/README.md +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/types.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_spliterTitle/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_spliterTitle/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/remote/AGGrid/README.md +0 -0
- /package/files/{src → .wl-skills/src}/types/page.ts +0 -0
- /package/files/{.github → .wl-skills}/standards/01-toolchain.md +0 -0
- /package/files/{.github → .wl-skills}/standards/03-comments.md +0 -0
- /package/files/{.github → .wl-skills}/standards/04-coding-basics.md +0 -0
- /package/files/{.github → .wl-skills}/standards/05-logging.md +0 -0
- /package/files/{.github → .wl-skills}/standards/06-security.md +0 -0
- /package/files/{.github → .wl-skills}/standards/07-config.md +0 -0
- /package/files/{.github → .wl-skills}/standards/09-typescript.md +0 -0
- /package/files/{.github → .wl-skills}/standards/10-pinia.md +0 -0
- /package/files/{.github → .wl-skills}/standards/12-base-table.md +0 -0
- /package/files/{.github → .wl-skills}/standards/index.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/meltDialog.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/index.vue +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prototype-scan
|
|
3
|
-
description: "Use when: analyzing Axure exported HTML prototype files to extract page inventory, classify interaction patterns, identify reusable components, and produce a structured page checklist for Vue development. Also supports NON-standard detailed design documents (free-form MD/Word) or natural language descriptions as input. DO NOT use for standard requirement-spec documents produced by wl-skills-design (path contains docs/spec/, has function codes like PMMB001, IPO tables, flow five-elements) — route those to spec-doc-parse instead. Triggers on: prototype analysis, axure scan, page inventory, 原型解析, 页面清单, axure转vue, 口述需求, 自然语言建页面, natural language page request, 建个页面, 写个页面, 口头描述页面."
|
|
3
|
+
description: "Use when: analyzing Axure exported HTML prototype files to extract page inventory, classify interaction patterns, identify reusable components, and produce a structured page checklist for Vue development. Also supports NON-standard detailed design documents (free-form MD/Word) or natural language descriptions as input. DO NOT use for standard requirement-spec documents produced by wl-skills-design (path contains .wl-skills/docs/spec/, has function codes like PMMB001, IPO tables, flow five-elements) — route those to spec-doc-parse instead. Triggers on: prototype analysis, axure scan, page inventory, 原型解析, 页面清单, axure转vue, 口述需求, 自然语言建页面, natural language page request, 建个页面, 写个页面, 口头描述页面."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: 原型解析(prototype-scan)
|
|
@@ -17,7 +17,7 @@ description: "Use when: analyzing Axure exported HTML prototype files to extract
|
|
|
17
17
|
| **模式 A(Axure)** | Axure HTML 文件包目录 | 已有原型设计,AI 全量扫描 HTML |
|
|
18
18
|
| **模式 B(非规范详设)** | MD/Word/表格格式的零散详细设计 | 已有非规范详设文档,AI 解析结构化字段 |
|
|
19
19
|
|
|
20
|
-
> ⚠️ **双线隔离(必读)**:本 Skill 走「原型线」。若输入是 wl-skills-design 产出的**标准需求设计说明书**(路径含
|
|
20
|
+
> ⚠️ **双线隔离(必读)**:本 Skill 走「原型线」。若输入是 wl-skills-design 产出的**标准需求设计说明书**(路径含 `.wl-skills/docs/spec/`、含功能编码 `/[A-Z]{2,6}[0-9]{3}/`、含 IPO 表「处理逻辑」、含流程五要素),属于「规范线」,**禁止本 Skill 接管**,必须路由到 `core/spec-doc-parse/SKILL.md`。两线各自解析,最终都汇聚到同一份 page-spec JSON,下游 `api-contract` / `page-codegen` 无感知来源。
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -188,7 +188,7 @@ AI 根据提取的信息,内部构建 page-spec JSON(**不输出给用户**
|
|
|
188
188
|
|
|
189
189
|
### 4. 组件匹配
|
|
190
190
|
|
|
191
|
-
对照平台已有组件(详细 API 见
|
|
191
|
+
对照平台已有组件(详细 API 见 `.wl-skills/docs/jh-*.md`):
|
|
192
192
|
|
|
193
193
|
| 功能区 | 组件 | 说明 |
|
|
194
194
|
| -------- | ----------------------- | ------------------------------------ |
|
|
@@ -200,15 +200,15 @@ AI 根据提取的信息,内部构建 page-spec JSON(**不输出给用户**
|
|
|
200
200
|
| 左右分割 | jh-drag-col | 树形+列表必备,设 `:leftWidth` + #left/#right slot |
|
|
201
201
|
| 树形面板 | C_Tree | 含搜索+Tab 切换 |
|
|
202
202
|
| 下拉选择 | jh-select | dict 属性自动加载字典数据 |
|
|
203
|
-
| 日期选择 | jh-date / jh-date-range | 参见
|
|
204
|
-
| 用户选择 | jh-user-picker | 参见
|
|
205
|
-
| 部门选择 | jh-dept-picker | 参见
|
|
206
|
-
| 文件上传 | jh-file-upload | 参见
|
|
203
|
+
| 日期选择 | jh-date / jh-date-range | 参见 `.wl-skills/docs/jh-date.md` |
|
|
204
|
+
| 用户选择 | jh-user-picker | 参见 `.wl-skills/docs/jh-user-picker.md` |
|
|
205
|
+
| 部门选择 | jh-dept-picker | 参见 `.wl-skills/docs/jh-dept-picker.md` |
|
|
206
|
+
| 文件上传 | jh-file-upload | 参见 `.wl-skills/docs/jh-file-upload.md` |
|
|
207
207
|
|
|
208
208
|
**新建组件判断:**
|
|
209
209
|
|
|
210
|
-
- 3+ 页面相同逻辑 →
|
|
211
|
-
- 同模块 2 页面共用 →
|
|
210
|
+
- 3+ 页面相同逻辑 → `.wl-skills/src/components/global/C_PascalCase/`
|
|
211
|
+
- 同模块 2 页面共用 → `.wl-skills/src/components/local/c_camelCase/`
|
|
212
212
|
- 业务强耦合 → 页面 `components/` 目录下
|
|
213
213
|
|
|
214
214
|
### 5. pages.ts 注册名推断
|
|
@@ -236,7 +236,7 @@ AI 根据提取的信息,内部构建 page-spec JSON(**不输出给用户**
|
|
|
236
236
|
"pageName": "客户档案", // 中文名
|
|
237
237
|
"kebabName": "customer-archive", // kebab-case 目录名
|
|
238
238
|
"pattern": "LIST", // LIST | MASTER_DETAIL | TREE_LIST | DETAIL_TABS | FORM_ROUTE | CHANGE_HISTORY | RECORD_FORM | OPERATION_STATION | TEMPLATE_DRIVEN
|
|
239
|
-
"path": "views/sale/
|
|
239
|
+
"path": "views/sale/.wl-skills/templates/khda/customer-archive/",
|
|
240
240
|
"pagesTs": ["customer-archive", "客户档案"], // pages.ts 注册项
|
|
241
241
|
"platformComponents": ["BaseQuery", "BaseTable", "jh-pagination"],
|
|
242
242
|
"newComponents": [], // 需要新建的组件名(空数组=不需要新建)
|
|
@@ -407,7 +407,7 @@ const [模块名]Module = gProd("[base-path]", {
|
|
|
407
407
|
|
|
408
408
|
## 输入模式 B:非规范详细设计文档
|
|
409
409
|
|
|
410
|
-
> ⚠️ **模式 B 排除范围**:若文档路径含
|
|
410
|
+
> ⚠️ **模式 B 排除范围**:若文档路径含 `.wl-skills/docs/spec/`,或文档内含 `§四 功能设计详细规范` / IPO 表格(含「处理逻辑」二级标题)/ 功能编码(正则 `/[A-Z]{2,6}[0-9]{3}/`)/ 流程说明五要素,
|
|
411
411
|
> **表明这是 wl-skills-design 的标准产出,不触发本模式**,应转发 `core/spec-doc-parse/SKILL.md`。
|
|
412
412
|
> 本模式只处理**非规范、零散的**详设(本来就不规范的输入,AI 自由发挥是帮助);面对高精度规范文档时,专属解析才能保证零损耗。
|
|
413
413
|
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
### 示例 1:HTML 原型扫描
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
你:扫描 docs/prototypes/客户管理/ 下的所有原型,生成页面清单。
|
|
34
|
+
你:扫描 .wl-skills/docs/prototypes/客户管理/ 下的所有原型,生成页面清单。
|
|
35
35
|
AI:[读取 SKILL.md → 输出 Pre-flight 声明]
|
|
36
36
|
Pre-flight:
|
|
37
|
-
├─
|
|
37
|
+
├─ 来源:.wl-skills/docs/prototypes/客户管理/ 共 7 个 HTML
|
|
38
38
|
├─ 输出:reports/PROTOTYPE_SCAN_客户管理_20260426.md
|
|
39
39
|
└─ 不会生成代码
|
|
40
40
|
[扫描中... 3 分钟]
|
|
@@ -64,7 +64,7 @@ AI:[输出 Pre-flight]
|
|
|
64
64
|
|
|
65
65
|
## 输出物
|
|
66
66
|
|
|
67
|
-
`.
|
|
67
|
+
`.wl-skills/reports/PROTOTYPE_SCAN_<模块>_<YYYYMMDD>.md` —— 包含:
|
|
68
68
|
|
|
69
69
|
- 页面清单表格(页面英文名 / 中文名 / 类型 / 路由 / 字段概要)
|
|
70
70
|
- 各页面查询条件、表格列、表单字段的初步定义
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-doc-parse
|
|
3
|
-
description: "Use when: parsing STANDARD requirement-design specification documents produced by wl-skills-design (path contains docs/spec/, files like ch1-3.md / 4.x-{module}.md / 4.N-data-report.md, with function codes like PMMB001, IPO tables containing 处理逻辑, and flow descriptions with five-elements) into the SAME page-spec JSON consumed by page-codegen. This is the 规范线 (spec line) counterpart to prototype-scan (原型线). Self-validating, self-correcting, report-producing. Triggers on: 解析说明书, 解析需求文档, 解析详设, 规范文档转页面, 根据说明书生成, spec doc parse, IPO 转页面, docs/spec, 功能编码, 需求设计说明书."
|
|
3
|
+
description: "Use when: parsing STANDARD requirement-design specification documents produced by wl-skills-design (path contains .wl-skills/docs/spec/, files like ch1-3.md / 4.x-{module}.md / 4.N-data-report.md, with function codes like PMMB001, IPO tables containing 处理逻辑, and flow descriptions with five-elements) into the SAME page-spec JSON consumed by page-codegen. This is the 规范线 (spec line) counterpart to prototype-scan (原型线). Self-validating, self-correcting, report-producing. Triggers on: 解析说明书, 解析需求文档, 解析详设, 规范文档转页面, 根据说明书生成, spec doc parse, IPO 转页面, .wl-skills/docs/spec, 功能编码, 需求设计说明书."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: 规范文档解构(spec-doc-parse)
|
|
7
7
|
|
|
8
|
-
将 **wl-skills-design
|
|
8
|
+
将 **wl-skills-design 产出的标准《需求设计说明书》**(`.wl-skills/docs/spec/{项目代号}/` 下的 `ch1-3.md` + `4.x-{子模块}.md` + `4.N-data-report.md`)解构为与 `prototype-scan` **完全相同格式的 page-spec JSON**,作为 `api-contract` / `page-codegen` 的输入。
|
|
9
9
|
|
|
10
10
|
> **双线汇聚原则**:原型线(prototype-scan)和规范线(本 Skill)是两条独立的输入线,但**汇聚点只有一个 —— page-spec JSON + api.md**。下游 `page-codegen` 不感知来源,两线代码完全共享。
|
|
11
11
|
> **职责边界**:design 负责「生成标准」,kit 负责「解构标准、完整读取」。本 Skill 是 kit 侧解构能力的承载者。
|
|
@@ -17,9 +17,9 @@ description: "Use when: parsing STANDARD requirement-design specification docume
|
|
|
17
17
|
| 维度 | prototype-scan(原型线) | spec-doc-parse(规范线) |
|
|
18
18
|
|------|--------------------------|--------------------------|
|
|
19
19
|
| 输入 | Axure HTML / 截图 / 口述 / **非规范**详设 | **wl-skills-design 标准说明书** |
|
|
20
|
-
| 识别特征 | 视觉原型、自由格式文档 |
|
|
20
|
+
| 识别特征 | 视觉原型、自由格式文档 | `.wl-skills/docs/spec/` 路径 / 功能编码 `/[A-Z]{2,6}[0-9]{3}/` / IPO 表「处理逻辑」/ 流程五要素 |
|
|
21
21
|
| 解析方式 | 视觉/语义推断(精度 70-95%) | 规范结构精确映射(精度 95-100%) |
|
|
22
|
-
| 禁区 | **不得处理**
|
|
22
|
+
| 禁区 | **不得处理** `.wl-skills/docs/spec/` 标准文档 | **不接受** Axure HTML / 截图 |
|
|
23
23
|
|
|
24
24
|
> 当用户输入命中规范线特征时,**强制走本 Skill**,禁止 prototype-scan 接管(见 `_registry.md` 调度规则「优先级 0」)。
|
|
25
25
|
|
|
@@ -33,7 +33,7 @@ description: "Use when: parsing STANDARD requirement-design specification docume
|
|
|
33
33
|
✅ 已读取 core/prototype-scan/SKILL.md → page-spec JSON 结构定义(统一汇聚格式)
|
|
34
34
|
✅ 已读取 standards/12-base-table.md → AGGrid 列定义约束(供下游 page-codegen)
|
|
35
35
|
✅ 已识别文档结构:{doc-skeleton 5 文件 / 单卷 / 单子模块}
|
|
36
|
-
✅ 来源文件:{docs/spec/{项目代号}/...}
|
|
36
|
+
✅ 来源文件:{.wl-skills/docs/spec/{项目代号}/...}
|
|
37
37
|
✅ 输出:reports/SPEC_PARSE_{模块}_{日期}.md(page-spec JSON + 解析报告)
|
|
38
38
|
✅ 不会生成代码(解析 + 报告,代码生成由 page-codegen 承接)
|
|
39
39
|
```
|
|
@@ -52,7 +52,7 @@ description: "Use when: parsing STANDARD requirement-design specification docume
|
|
|
52
52
|
## 前置检查
|
|
53
53
|
|
|
54
54
|
```
|
|
55
|
-
□
|
|
55
|
+
□ 文档来源路径:.wl-skills/docs/spec/{项目代号}/
|
|
56
56
|
□ 文件清单:ch1-3.md(概述)+ 4.x-{子模块}.md(详细设计)[+ 4.N-data-report.md]
|
|
57
57
|
□ 目标项目路径:src/views/[域]/[模块]/[子模块]/
|
|
58
58
|
□ 服务缩写:从功能编码前缀推断(pm / mmwr / mmsm / sale / hrms / base)
|
|
@@ -82,7 +82,7 @@ Step 9 自验证+报告 Parse Validation 五项检查 + 自动修复 + 解析
|
|
|
82
82
|
依据 `wl-skills-design` 的 `doc-skeleton.md` 5 文件结构识别:
|
|
83
83
|
|
|
84
84
|
```
|
|
85
|
-
docs/spec/{项目代号}/
|
|
85
|
+
.wl-skills/docs/spec/{项目代号}/
|
|
86
86
|
├── ch1-3.md ← 第 1~3 章(总体概述、术语、范围)
|
|
87
87
|
├── 4.1-{子模块名}.md ← 子模块详细设计(流程 + IPO)
|
|
88
88
|
├── 4.2-{子模块名}.md
|
|
@@ -231,7 +231,7 @@ PMMB-A-01-M-03(修改目标) → permission:pmmb:target:edit
|
|
|
231
231
|
|
|
232
232
|
```jsonc
|
|
233
233
|
"notes": [
|
|
234
|
-
"[规范线]
|
|
234
|
+
"[规范线] 来源:.wl-skills/docs/spec/huaxin/4.1-target.md §4.1.4.1 PMMB001",
|
|
235
235
|
"[规范线] 权限码候选:permission:pmmb:target:list / :add / :edit",
|
|
236
236
|
"[规范线] 触发事件:提交后写入 bom_ratio 表并触发重算(见处理逻辑)",
|
|
237
237
|
"[待确认] status 字段 dictCode 推断为 target_status,需后端确认"
|
|
@@ -270,7 +270,7 @@ PMMB-A-01-M-03(修改目标) → permission:pmmb:target:edit
|
|
|
270
270
|
```markdown
|
|
271
271
|
# Spec-Doc Parse 报告
|
|
272
272
|
- 生成时间:{YYYY-MM-DD HH:mm}
|
|
273
|
-
-
|
|
273
|
+
- 来源文件:.wl-skills/docs/spec/{项目代号}/4.x-{子模块}.md
|
|
274
274
|
- 解析范围:{整卷 / 子模块 / 功能编码}
|
|
275
275
|
|
|
276
276
|
## 解析摘要
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## 这个 Skill 解决什么问题
|
|
9
9
|
|
|
10
|
-
把 **wl-skills-design
|
|
10
|
+
把 **wl-skills-design 产出的标准《需求设计说明书》**(`.wl-skills/docs/spec/` 下的 IPO 表、功能编码、流程五要素)**完整解构**为一份《页面清单》(page-spec JSON),作为后续 `api-contract` 和 `page-codegen` 的输入。
|
|
11
11
|
|
|
12
12
|
一句话:**design 负责「写标准文档」,spec-doc-parse 负责「读懂标准文档、转成可生成代码的结构」。**
|
|
13
13
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
| 线 | Skill | 输入 | 何时用 |
|
|
21
21
|
|----|-------|------|--------|
|
|
22
22
|
| **原型线** | `prototype-scan` | Axure 原型 / 截图 / 口述 / 零散详设 | 只有原型、没有规范文档时 |
|
|
23
|
-
| **规范线** | `spec-doc-parse`(本 Skill) | wl-skills-design 标准说明书 | 已有
|
|
23
|
+
| **规范线** | `spec-doc-parse`(本 Skill) | wl-skills-design 标准说明书 | 已有 `.wl-skills/docs/spec/` 标准文档时 |
|
|
24
24
|
|
|
25
25
|
> 两条线最终都汇聚到**同一份 page-spec JSON**,下游代码生成完全一样。
|
|
26
26
|
> 所以:**有标准说明书就走规范线,精度最高(95-100%);只有原型走原型线。**
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
## 何时使用
|
|
31
31
|
|
|
32
|
-
- 拿到 wl-skills-design 生成的
|
|
32
|
+
- 拿到 wl-skills-design 生成的 `.wl-skills/docs/spec/{项目代号}/4.x-xxx.md`,要把它变成页面
|
|
33
33
|
- 说明书里有功能编码(如 PMMB001)、IPO 表、流程图说明
|
|
34
34
|
- 想把整卷说明书一次性解构成页面清单,再批量生成代码
|
|
35
35
|
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
### 示例 1:解析单个子模块
|
|
47
47
|
|
|
48
48
|
```
|
|
49
|
-
你:解析 docs/spec/huaxin/4.1-target.md,生成页面清单。
|
|
49
|
+
你:解析 .wl-skills/docs/spec/huaxin/4.1-target.md,生成页面清单。
|
|
50
50
|
AI:[读取 SKILL.md → 输出 Pre-flight]
|
|
51
51
|
Pre-flight:
|
|
52
52
|
├─ 识别结构:doc-skeleton 单子模块(4.1 目标管理)
|
|
53
|
-
├─
|
|
53
|
+
├─ 来源:.wl-skills/docs/spec/huaxin/4.1-target.md
|
|
54
54
|
├─ 输出:reports/SPEC_PARSE_target_20260531.md
|
|
55
55
|
└─ 不会生成代码
|
|
56
56
|
[解析中...]
|
|
@@ -62,7 +62,7 @@ AI:[读取 SKILL.md → 输出 Pre-flight]
|
|
|
62
62
|
### 示例 2:误用原型线的自动纠偏
|
|
63
63
|
|
|
64
64
|
```
|
|
65
|
-
你:扫描 docs/spec/huaxin/4.1-target.md 生成页面。
|
|
65
|
+
你:扫描 .wl-skills/docs/spec/huaxin/4.1-target.md 生成页面。
|
|
66
66
|
AI:检测到输入是 wl-skills-design 标准说明书(含功能编码 + IPO 表)。
|
|
67
67
|
→ 这属于「规范线」,已自动切换到 spec-doc-parse(精度更高)。
|
|
68
68
|
[继续按规范线解析]
|
|
@@ -5,7 +5,7 @@ description: "Use when: extracting domain-specific page templates from existing
|
|
|
5
5
|
|
|
6
6
|
# Skill: 模板提取(template-extract)
|
|
7
7
|
|
|
8
|
-
从现有项目的成熟页面提取领域模板,沉淀到 `.
|
|
8
|
+
从现有项目的成熟页面提取领域模板,沉淀到 `.wl-skills/skills/core/page-codegen/templates/domains/`,扩充团队 AI 模板库。
|
|
9
9
|
|
|
10
10
|
> **核心理念**:模板贡献门槛极低 — 开发者只需说出一个页面目录路径,AI 完成 90% 的分析和写作。
|
|
11
11
|
|
|
@@ -90,4 +90,4 @@ A:建议至少同事 review 一下 meta.json + 是否真有复用价值。直
|
|
|
90
90
|
A:贡献者维护一段时间,稳定后由 kit 维护者接管。模板里要写 author + lastUpdate。
|
|
91
91
|
|
|
92
92
|
**Q:能否私有领域只抽到本仓库不发布?**
|
|
93
|
-
A:可以。`templates/domains/` 在 `.
|
|
93
|
+
A:可以。`templates/domains/` 在 `.wl-skills/skills/` 下,跟着业务项目走。kit 包不强制收集。
|
|
@@ -49,12 +49,12 @@ AI 调用 MCP 工具后,按返回内容判定属于哪一类,并按对应剧
|
|
|
49
49
|
|
|
50
50
|
如果工具返回类似:
|
|
51
51
|
- `请在 env.local.json 中填写真实的 gatewayPath(当前为占位值)`
|
|
52
|
-
- `请在 .
|
|
52
|
+
- `请在 .wl-skills/skills/sync/env.local.json 填写 menu.domainId`
|
|
53
53
|
- `配置文件不存在: .../env.local.json`
|
|
54
54
|
|
|
55
55
|
AI **立即转入引导模式**:
|
|
56
56
|
|
|
57
|
-
1. `read_file` 加载 `.
|
|
57
|
+
1. `read_file` 加载 `.wl-skills/skills/sync/menu-sync/env/guide.md`(统一配置说明)
|
|
58
58
|
2. 告诉用户具体哪个字段缺失、获取方式(如 token 抓包、domainId Network 查询)
|
|
59
59
|
3. 等待用户填好 `env.local.json` 后**自动重试同一个 MCP 工具调用**
|
|
60
60
|
4. 直到配置完整、调用成功为止 → 完成闭环
|
|
@@ -95,7 +95,7 @@ AI **立即转入引导模式**:
|
|
|
95
95
|
```
|
|
96
96
|
🚀 已触发技能 {skill-name}/SKILL.md → {一句话用途}
|
|
97
97
|
✅ MCP 工具检查:{要用到的 wls_* 全部列出,✓/✗}
|
|
98
|
-
✅ 已读取 .
|
|
98
|
+
✅ 已读取 .wl-skills/skills/sync/env.local.json → gatewayPath/token/sysAppNo/{其他必填}
|
|
99
99
|
✅ 已读取 {本 Skill 的 SYS_*_INFO.md 基线}
|
|
100
100
|
✅ 操作模式:{pull / push / audit / ...}
|
|
101
101
|
```
|
|
@@ -21,7 +21,7 @@ description: "Use when: syncing data dictionary entries to the backend, pulling
|
|
|
21
21
|
|
|
22
22
|
## 配置(统一配置文件)
|
|
23
23
|
|
|
24
|
-
读取 `.
|
|
24
|
+
读取 `.wl-skills/skills/sync/env.local.json`(已在 `.gitignore`,不入 git):
|
|
25
25
|
|
|
26
26
|
```json
|
|
27
27
|
{
|
|
@@ -50,8 +50,8 @@ description: "Use when: syncing data dictionary entries to the backend, pulling
|
|
|
50
50
|
```
|
|
51
51
|
🚀 已触发技能 dict-sync/SKILL.md → 字典同步
|
|
52
52
|
✅ MCP 工具检查:wls_dict_query / wls_dict_upsert 均可用
|
|
53
|
-
✅ 已读取 .
|
|
54
|
-
✅ 已读取 .
|
|
53
|
+
✅ 已读取 .wl-skills/skills/sync/env.local.json → 网关 + token + sysAppNo + dict.moduleId
|
|
54
|
+
✅ 已读取 .wl-skills/reports/SYS_DICT_INFO.md → 本地字典基线
|
|
55
55
|
✅ 操作模式:{pull / push / audit}
|
|
56
56
|
✅ 目标字典码:{用户指定 / data.ts 扫描结果}
|
|
57
57
|
```
|
|
@@ -142,7 +142,7 @@ logicType: BusLogicDataType.dict, logicValue: "DICT_CODE"
|
|
|
142
142
|
| SALES_COMPANY | 销售公司 | 3 | ✅ created |
|
|
143
143
|
| PRODUCT_SEGMENT | 产品板块 | - | ⏭️ skipped(线上已有) |
|
|
144
144
|
|
|
145
|
-
执行完成后,将新建字典追加写入 `.
|
|
145
|
+
执行完成后,将新建字典追加写入 `.wl-skills/reports/SYS_DICT_INFO.md`。
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
@@ -165,7 +165,7 @@ logicType: BusLogicDataType.dict, logicValue: "DICT_CODE"
|
|
|
165
165
|
|
|
166
166
|
## SYS_DICT_INFO.md — 本地基线格式
|
|
167
167
|
|
|
168
|
-
路径:`.
|
|
168
|
+
路径:`.wl-skills/reports/SYS_DICT_INFO.md`
|
|
169
169
|
|
|
170
170
|
```markdown
|
|
171
171
|
## ORDER_STATUS(订单状态)
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
## 前置条件
|
|
36
36
|
|
|
37
|
-
`.
|
|
37
|
+
`.wl-skills/skills/sync/env.local.json`(已 gitignore,每个开发者本地填自己的 token):
|
|
38
38
|
|
|
39
39
|
```json
|
|
40
40
|
{
|
|
@@ -84,7 +84,7 @@ AI:[Pre-flight]
|
|
|
84
84
|
| 维度 | `business-doc-extract` | `dict-sync` |
|
|
85
85
|
|---|---|---|
|
|
86
86
|
| 职责 | 业务理解 / 设计意图 | 线上事实 / 数据落地 |
|
|
87
|
-
| 输出 |
|
|
87
|
+
| 输出 | `.wl-skills/docs/business/0X-xx/dictionary.md`(人读) | 后端字典表(系统读) |
|
|
88
88
|
| 时机 | 项目/模块沉淀阶段 | 联调前 / 上线前 |
|
|
89
89
|
|
|
90
90
|
两者**互不替代**:业务文档说的是"应该有什么字典",dict-sync 解决"线上有没有"。建议顺序:`business-doc-extract` 整理出 dictionary.md 草案 → 评审 → `dict-sync` 落地。
|
|
@@ -9,7 +9,7 @@ description: "Use when: creating system menus for newly generated pages, batch r
|
|
|
9
9
|
|
|
10
10
|
> **背景**:本项目是 Module Federation 子应用,页面在 `pages.ts` 注册后,
|
|
11
11
|
> 还需要在后端菜单表中创建对应记录,系统才能路由到该页面。
|
|
12
|
-
> 设计文档:`.
|
|
12
|
+
> 设计文档:`.wl-skills/guides/architecture.md`
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -19,14 +19,14 @@ description: "Use when: creating system menus for newly generated pages, batch r
|
|
|
19
19
|
|
|
20
20
|
| 数据 | 来源 | 说明 |
|
|
21
21
|
| ------------------------------------------------ | -------------------------- | --------------------------------------- |
|
|
22
|
-
| 菜单名称、路径、组件、权限、隐藏、排序、应用编码 | `.
|
|
22
|
+
| 菜单名称、路径、组件、权限、隐藏、排序、应用编码 | `.wl-skills/reports/SYS_MENU_INFO*.md` | 由 page-codegen 追加写入,AI 直接读取 |
|
|
23
23
|
| `parentMenuNameCode` | `wls_menu_query` 查询菜单树 | 从父级节点获取,无需手填 |
|
|
24
24
|
| **gatewayPath、parentMenuId、sysAppNo、token** | `env.local.json` | 可通过 token/接口辅助提取 |
|
|
25
25
|
| **domainId** | 用户确认 / 菜单后台 Network | 当前权限下无法总是自动获取,需确认 |
|
|
26
26
|
|
|
27
27
|
### 配置文件(统一维护,菜单/字典/权限共用)
|
|
28
28
|
|
|
29
|
-
优先读取 `.
|
|
29
|
+
优先读取 `.wl-skills/skills/sync/env.local.json`(v2.1.5+ 统一配置):
|
|
30
30
|
|
|
31
31
|
```json
|
|
32
32
|
{
|
|
@@ -49,7 +49,7 @@ menu-sync 读取规则:`parentMenuId` 优先从 `menu.parentMenuId` 读取,
|
|
|
49
49
|
|
|
50
50
|
1. **首次**:按 `env/guide.md` 填写 `skills/sync/env.local.json` 的字段
|
|
51
51
|
2. **之后**:直接对 AI 说「帮我创建菜单」/「同步菜单」/「补菜单」
|
|
52
|
-
3. AI 自动执行:读 `.
|
|
52
|
+
3. AI 自动执行:读 `.wl-skills/reports/SYS_MENU_INFO*.md` → 读 `env.local.json` → 优先调用 `wls_menu_sync_from_report` 一步完成确定性同步;如需手动拆分,则 `wls_menu_query` 查 domain 菜单树 → 先 upsert 一级目录 → 用返回 id upsert 二级页面菜单 → 输出 created/updated/skipped 结果表
|
|
53
53
|
4. **全程无需手动执行任何命令**
|
|
54
54
|
|
|
55
55
|
SYS_MENU_INFO.md 是 menu-sync Skill 的输入数据源:
|
|
@@ -81,7 +81,7 @@ SYS_MENU_INFO.md 是 menu-sync Skill 的输入数据源:
|
|
|
81
81
|
### 前置条件
|
|
82
82
|
|
|
83
83
|
1. MCP 已连接(工具列表中可见 `wls_menu_sync_from_report`)
|
|
84
|
-
2. `.
|
|
84
|
+
2. `.wl-skills/skills/sync/env.local.json` 已填写 `token`(纯 JWT,不含 `bearer ` 前缀)、`gatewayPath`、`sysAppNo`、`menu.parentMenuId`、`menu.domainId`
|
|
85
85
|
|
|
86
86
|
### 输入
|
|
87
87
|
|
|
@@ -253,7 +253,7 @@ POST /system/menu/batchPush
|
|
|
253
253
|
- 按 `componentPath` 做 upsert(存在则更新结构字段,不存在则新增)
|
|
254
254
|
- **不删除**后端多余的菜单
|
|
255
255
|
- **不碰**权限/角色绑定字段
|
|
256
|
-
- 详见 `.
|
|
256
|
+
- 详见 `.wl-skills/guides/architecture.md`
|
|
257
257
|
|
|
258
258
|
### pages.ts 扩展
|
|
259
259
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
## 前置条件
|
|
33
33
|
|
|
34
|
-
`.
|
|
34
|
+
`.wl-skills/skills/sync/env.local.json`(首次使用先填写,已加入 `.gitignore`):
|
|
35
35
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
@@ -70,8 +70,8 @@ AI:[Pre-flight]
|
|
|
70
70
|
|
|
71
71
|
## 输出物
|
|
72
72
|
|
|
73
|
-
1. **基线文件**:`.
|
|
74
|
-
2. **同步报告**:`.
|
|
73
|
+
1. **基线文件**:`.wl-skills/reports/SYS_MENU_INFO.md` —— 线上菜单的本地基线(团队 review 用)
|
|
74
|
+
2. **同步报告**:`.wl-skills/reports/MENU_SYNC_<YYYYMMDD>.md` —— 本次新增/更新了哪些菜单
|
|
75
75
|
3. **回滚 SQL**:报告里附带 DELETE SQL,用于回退
|
|
76
76
|
|
|
77
77
|
---
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
## 配置文件位置(优先使用新统一路径)
|
|
8
8
|
|
|
9
|
-
**新路径(v2.1.5+ 推荐)**:`.
|
|
10
|
-
**兼容路径(老版)**:`.
|
|
9
|
+
**新路径(v2.1.5+ 推荐)**:`.wl-skills/skills/sync/env.local.json`
|
|
10
|
+
**兼容路径(老版)**:`.wl-skills/skills/sync/menu-sync/env/env.local.json`
|
|
11
11
|
|
|
12
12
|
AI 优先读新路径,如不存在自动回落到兼容路径。
|
|
13
13
|
|
|
@@ -7,13 +7,13 @@ description: "Use when: managing roles, authorizing menus to roles, attaching ac
|
|
|
7
7
|
|
|
8
8
|
将系统的**角色 → 菜单授权 → 动作按钮 → `data.ts` 权限码字段**串成一条链路,覆盖从权限注册到代码落地的全流程。
|
|
9
9
|
|
|
10
|
-
> **与 menu-sync / dict-sync 的关系**:完全对称,统一从 `.
|
|
10
|
+
> **与 menu-sync / dict-sync 的关系**:完全对称,统一从 `.wl-skills/skills/sync/env.local.json` 读取配置。`menu-sync` 负责页面菜单(type=M/C),`permission-sync` 负责其上的角色与动作(type=A)。
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
## 配置(统一配置文件,复用 menu-sync 的配置)
|
|
15
15
|
|
|
16
|
-
读取 `.
|
|
16
|
+
读取 `.wl-skills/skills/sync/env.local.json`:
|
|
17
17
|
|
|
18
18
|
```json
|
|
19
19
|
{
|
|
@@ -231,7 +231,7 @@ permission-sync 通过 6 个 MCP 工具完成所有操作(无需手动 fetch
|
|
|
231
231
|
|
|
232
232
|
## 8. 报告输出(reports/PERMISSION_SYNC_<日期>.md)
|
|
233
233
|
|
|
234
|
-
每次执行在 `.
|
|
234
|
+
每次执行在 `.wl-skills/reports/PERMISSION_SYNC_YYYYMMDD.md` 追加:模式(role-manage/role-assign/action-attach)、变更摘要(新增/已存在/失败)、data.ts 修改行位置、回滚提示。
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
@@ -28,14 +28,14 @@ import { ref, reactive, onMounted, useSlots, onUnmounted } from "vue";
|
|
|
28
28
|
// 上下分栈 → <jh-drag-row :topHeight="200"> #top / #bottom </jh-drag-row>
|
|
29
29
|
// 原因:C_Splitter 在 onMounted 中调用 slots.default() 冻结 vnode 快照,
|
|
30
30
|
// 导致子树响应式绑定(v-if / v-show / 插值)与父组件 ref 完全解耦,
|
|
31
|
-
// ref 赋值不触发重渲染。详见 .
|
|
31
|
+
// ref 赋值不触发重渲染。详见 .wl-skills/standards/14-layout-containers.md
|
|
32
32
|
if (typeof window !== "undefined" && !window.__C_SPLITTER_WARNED__) {
|
|
33
33
|
window.__C_SPLITTER_WARNED__ = true;
|
|
34
34
|
// eslint-disable-next-line no-console
|
|
35
35
|
console.warn(
|
|
36
36
|
"[C_Splitter 已废弃] 已检测到 C_Splitter 使用。请改用 jh-drag-col / jh-drag-row。\n" +
|
|
37
37
|
"原因:slots.default() 被冻结为 vnode 快照,导致子树响应式失效。\n" +
|
|
38
|
-
"详见:.
|
|
38
|
+
"详见:.wl-skills/standards/14-layout-containers.md"
|
|
39
39
|
);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -32,7 +32,7 @@ c_formModal/
|
|
|
32
32
|
|
|
33
33
|
```typescript
|
|
34
34
|
// src/views/your-module/data.ts
|
|
35
|
-
import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";
|
|
35
|
+
import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";
|
|
36
36
|
|
|
37
37
|
export const modalConfig = {
|
|
38
38
|
titlePrefix: "内贸订单", // 标题前缀
|
|
@@ -462,7 +462,7 @@ const defaultForm = generateDefaultFormData(sectionsConfig);
|
|
|
462
462
|
|
|
463
463
|
### 新增编辑页示例
|
|
464
464
|
|
|
465
|
-
**路径**: `src/views/sale/
|
|
465
|
+
**路径**: `src/views/sale/.wl-skills/templates/add-.wl-skills/templates/`
|
|
466
466
|
|
|
467
467
|
**特性**:
|
|
468
468
|
|
|
@@ -485,7 +485,7 @@ const defaultForm = generateDefaultFormData(sectionsConfig);
|
|
|
485
485
|
**关键代码结构**:
|
|
486
486
|
|
|
487
487
|
```
|
|
488
|
-
add-
|
|
488
|
+
add-.wl-skills/templates/
|
|
489
489
|
├── index.vue # 视图层(176行)- 组件使用和布局
|
|
490
490
|
├── data.ts # 逻辑层(400+行)- 配置和业务逻辑
|
|
491
491
|
├── index.scss # 样式层(207行)- 页面样式
|
|
@@ -11,7 +11,7 @@ BaseForm 是一个功能强大的表单组件,支持多列布局、数据验
|
|
|
11
11
|
// 直接使用 <BaseForm /> 即可
|
|
12
12
|
|
|
13
13
|
// 类型导入
|
|
14
|
-
import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";
|
|
14
|
+
import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## 🚀 基本用法
|
|
@@ -341,7 +341,7 @@ import { h } from "vue";
|
|
|
341
341
|
|
|
342
342
|
<script setup lang="ts">
|
|
343
343
|
import { ref, reactive, computed } from "vue";
|
|
344
|
-
import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";
|
|
344
|
+
import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";
|
|
345
345
|
|
|
346
346
|
const formRef = ref();
|
|
347
347
|
|
|
@@ -11,7 +11,7 @@ BaseQuery 是一个功能强大的查询条件组件,支持多列布局、条
|
|
|
11
11
|
// 直接使用 <BaseQuery /> 即可
|
|
12
12
|
|
|
13
13
|
// 类型导入
|
|
14
|
-
import type { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-query/type";
|
|
14
|
+
import type { BaseQueryItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/base-query/type";
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## 🚀 基本用法
|
|
@@ -369,7 +369,7 @@ interface BaseQueryItemDesc<T = any> {
|
|
|
369
369
|
|
|
370
370
|
<script setup lang="ts">
|
|
371
371
|
import { ref, reactive, computed, onMounted } from "vue";
|
|
372
|
-
import type { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-query/type";
|
|
372
|
+
import type { BaseQueryItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/base-query/type";
|
|
373
373
|
|
|
374
374
|
const queryRef = ref();
|
|
375
375
|
|
|
@@ -546,7 +546,7 @@ BaseQuery 支持复杂的联动查询场景,通过 `customProps`、`disabled`
|
|
|
546
546
|
|
|
547
547
|
<script setup lang="ts">
|
|
548
548
|
import { reactive, computed } from "vue";
|
|
549
|
-
import type { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-query/type";
|
|
549
|
+
import type { BaseQueryItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/base-query/type";
|
|
550
550
|
|
|
551
551
|
// 省市区数据
|
|
552
552
|
const regionOptions = [
|
|
@@ -607,7 +607,7 @@ const handleSearch = () => {
|
|
|
607
607
|
|
|
608
608
|
<script setup lang="ts">
|
|
609
609
|
import { ref, reactive, computed } from "vue";
|
|
610
|
-
import type { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-query/type";
|
|
610
|
+
import type { BaseQueryItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/base-query/type";
|
|
611
611
|
import request from "@/utils/request";
|
|
612
612
|
|
|
613
613
|
// 动态选项数据
|
|
@@ -11,7 +11,7 @@ BaseTable 是一个功能强大的表格组件,支持数据展示、排序、
|
|
|
11
11
|
// 直接使用 <BaseTable /> 即可
|
|
12
12
|
|
|
13
13
|
// 类型导入
|
|
14
|
-
import type { TableColumnDesc } from "@jhlc/common-core/src/components/table/base-table/type";
|
|
14
|
+
import type { TableColumnDesc } from "@jhlc/common-core/.wl-skills/src/components/table/base-table/type";
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## 🚀 基本用法
|
|
@@ -708,7 +708,7 @@ interface TableRowOperation {
|
|
|
708
708
|
|
|
709
709
|
<script setup lang="ts">
|
|
710
710
|
import { ref, computed, onMounted, h } from "vue";
|
|
711
|
-
import type { TableColumnDesc } from "@jhlc/common-core/src/components/table/base-table/type";
|
|
711
|
+
import type { TableColumnDesc } from "@jhlc/common-core/.wl-skills/src/components/table/base-table/type";
|
|
712
712
|
|
|
713
713
|
const tableRef = ref();
|
|
714
714
|
const list = ref([]);
|
|
@@ -11,7 +11,7 @@ BaseToolbar 是一个灵活的工具栏组件,用于放置操作按钮,支
|
|
|
11
11
|
// 直接使用 <BaseToolbar /> 即可
|
|
12
12
|
|
|
13
13
|
// 类型导入
|
|
14
|
-
import type { ActionButtonDesc, ActionType } from "@jhlc/common-core/src/components/toolbar/type";
|
|
14
|
+
import type { ActionButtonDesc, ActionType } from "@jhlc/common-core/.wl-skills/src/components/toolbar/type";
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## 🚀 基本用法
|
|
@@ -50,7 +50,7 @@ src/views/[域]/[模块]/[子模块]/[kebab-case目录]/
|
|
|
50
50
|
|
|
51
51
|
| 场景 | 位置 |
|
|
52
52
|
| ----------------------- | ------------------------------------ |
|
|
53
|
-
| 通用弹窗(2+ 页面复用) |
|
|
53
|
+
| 通用弹窗(2+ 页面复用) | `.wl-skills/src/components/local/c_xxxModal/` |
|
|
54
54
|
| 极个性弹窗(仅单页面) | 页面目录下 `components/xxxModal.vue` |
|
|
55
55
|
|
|
56
56
|
---
|