@agile-team/wl-skills-kit 2.10.0 → 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 +35 -0
- package/README.md +7 -7
- package/bin/wl-skills.js +418 -29
- package/files/.github/copilot-instructions.md +24 -369
- 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 +20 -7
- 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/_compat/headers/cursor-mdc.txt +1 -1
- package/files/{.github → .wl-skills}/skills/_compat/headers/kiro.txt +1 -1
- package/files/{.github → .wl-skills}/skills/_compat/headers/trae.txt +1 -1
- package/files/{.github → .wl-skills}/skills/_pipeline.md +23 -11
- package/files/{.github → .wl-skills}/skills/_registry.md +10 -4
- 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 +52 -7
- package/files/{.github → .wl-skills}/skills/core/convention-audit/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/SKILL.md +33 -13
- 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/ops/code-fix/SKILL.md +135 -96
- 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/{.github → .wl-skills}/standards/index.md +1 -1
- package/files/{demo → .wl-skills/templates}/README.md +3 -3
- package/files/eslint.config.wl-skills.cjs +123 -0
- package/lib/ast-rules.js +769 -0
- package/lib/vite-plugin-wl-skills.js +97 -0
- package/mcp/tools/projectTools.js +17 -1
- package/package.json +19 -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-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/qoder.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/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/{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
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
把零散的业务资料(已发布原型、详设、字段表、字典表、现有页面)沉淀为:
|
|
11
11
|
|
|
12
12
|
```text
|
|
13
|
-
docs/business/
|
|
13
|
+
.wl-skills/docs/business/
|
|
14
14
|
├── index.md # 项目业务全景 + 模块索引
|
|
15
15
|
├── open-questions.md # 全局待确认问题汇总
|
|
16
16
|
└── 01-xxx/ # 模块文档
|
|
@@ -41,7 +41,7 @@ docs/business/
|
|
|
41
41
|
2. 资料范围达到模块或项目级(不是单页面/单截图)。
|
|
42
42
|
3. 你的目标是“梳理业务 / 沉淀文档 / 整理字段字典 / 确认待确认事项”。
|
|
43
43
|
|
|
44
|
-
> 单页面口述、单截图、改样式、修 bug 等碎片化任务,**默认不会写
|
|
44
|
+
> 单页面口述、单截图、改样式、修 bug 等碎片化任务,**默认不会写 `.wl-skills/docs/business`**,避免污染。
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -50,10 +50,10 @@ docs/business/
|
|
|
50
50
|
下面这些自然表达 AI 会自动判断走 business-doc-extract:
|
|
51
51
|
|
|
52
52
|
```
|
|
53
|
-
帮我梳理 docs/prototypes/客户管理 这个原型,按业务文档结构沉淀。
|
|
54
|
-
基于 docs/spec/主数据需求.md 把模块文档生成出来,再聊页面。
|
|
55
|
-
我把字段实体放在 字段/ 目录,帮我把模块字典和字段同步进 docs/business。
|
|
56
|
-
现有 src/views/mdata 已经写完了,回过头帮我生成 docs/business 业务文档。
|
|
53
|
+
帮我梳理 .wl-skills/docs/prototypes/客户管理 这个原型,按业务文档结构沉淀。
|
|
54
|
+
基于 .wl-skills/docs/spec/主数据需求.md 把模块文档生成出来,再聊页面。
|
|
55
|
+
我把字段实体放在 字段/ 目录,帮我把模块字典和字段同步进 .wl-skills/docs/business。
|
|
56
|
+
现有 src/views/mdata 已经写完了,回过头帮我生成 .wl-skills/docs/business 业务文档。
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
下面这些不会触发:
|
|
@@ -72,8 +72,8 @@ docs/business/
|
|
|
72
72
|
|
|
73
73
|
```
|
|
74
74
|
你:
|
|
75
|
-
docs/prototypes/客户管理/ 已发布的 Axure 原型在这里,
|
|
76
|
-
请按业务文档最佳实践沉淀,目标是 docs/business/01-customer。
|
|
75
|
+
.wl-skills/docs/prototypes/客户管理/ 已发布的 Axure 原型在这里,
|
|
76
|
+
请按业务文档最佳实践沉淀,目标是 .wl-skills/docs/business/01-customer。
|
|
77
77
|
|
|
78
78
|
AI:
|
|
79
79
|
[识别资料源 → 输出 Pre-flight → 给出生成计划 → 等待你确认]
|
|
@@ -82,12 +82,12 @@ AI:
|
|
|
82
82
|
确认后产物:
|
|
83
83
|
|
|
84
84
|
```text
|
|
85
|
-
docs/business/index.md
|
|
86
|
-
docs/business/open-questions.md
|
|
87
|
-
docs/business/01-customer/index.md
|
|
88
|
-
docs/business/01-customer/requirement.md
|
|
89
|
-
docs/business/01-customer/dictionary.md
|
|
90
|
-
docs/business/01-customer/field.md
|
|
85
|
+
.wl-skills/docs/business/index.md
|
|
86
|
+
.wl-skills/docs/business/open-questions.md
|
|
87
|
+
.wl-skills/docs/business/01-customer/index.md
|
|
88
|
+
.wl-skills/docs/business/01-customer/requirement.md
|
|
89
|
+
.wl-skills/docs/business/01-customer/dictionary.md
|
|
90
|
+
.wl-skills/docs/business/01-customer/field.md
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
### 4.2 增量补字段或字典
|
|
@@ -95,7 +95,7 @@ docs/business/01-customer/field.md
|
|
|
95
95
|
```
|
|
96
96
|
你:
|
|
97
97
|
后端补了 6 个字段,资料在 字段/MdmModelAttribute.md,
|
|
98
|
-
帮我合并进 docs/business/01-model/field.md。
|
|
98
|
+
帮我合并进 .wl-skills/docs/business/01-model/field.md。
|
|
99
99
|
|
|
100
100
|
AI:
|
|
101
101
|
[读取字段表 → 仅更新 field.md,新增标注“新增”或“更新”]
|
|
@@ -108,7 +108,7 @@ AI:
|
|
|
108
108
|
```
|
|
109
109
|
你:
|
|
110
110
|
src/views/mdata 已经全部写完了,但没有业务文档,
|
|
111
|
-
帮我反向沉淀 docs/business 模块文档,标出待确认事项。
|
|
111
|
+
帮我反向沉淀 .wl-skills/docs/business 模块文档,标出待确认事项。
|
|
112
112
|
|
|
113
113
|
AI:
|
|
114
114
|
[扫描 src/views + api.md + mock + 字段资料]
|
|
@@ -133,7 +133,7 @@ src/views/mdata/model/mdata-model-config/api.md
|
|
|
133
133
|
| 主数据模型配置 | src/views/mdata/model/mdata-model-config | src/views/mdata/model/mdata-model-config/api.md |
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
-
不在
|
|
136
|
+
不在 `.wl-skills/docs/business` 里重复维护接口字段。
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
@@ -141,8 +141,8 @@ src/views/mdata/model/mdata-model-config/api.md
|
|
|
141
141
|
|
|
142
142
|
| 文件 | 给谁看 | 何时更新 |
|
|
143
143
|
|---|---|---|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
144
|
+
| `.wl-skills/docs/business/index.md` | 产品 / 项目经理 / 新成员 | 模块新增 / 状态变化时 |
|
|
145
|
+
| `.wl-skills/docs/business/open-questions.md` | 产品 / 后端 / 前端联调会 | 每次发现待确认事项 |
|
|
146
146
|
| `0X-xx/index.md` | 模块 owner | 模块结构有调整时 |
|
|
147
147
|
| `0X-xx/requirement.md` | 业务侧 + 实施侧 | 需求确认 / 流程调整 |
|
|
148
148
|
| `0X-xx/dictionary.md` | 后端字典 + 前端 dict | 字典 code 确认 / 新增 |
|
|
@@ -154,7 +154,7 @@ src/views/mdata/model/mdata-model-config/api.md
|
|
|
154
154
|
|
|
155
155
|
| 现象 | 原因 | 解法 |
|
|
156
156
|
|---|---|---|
|
|
157
|
-
| AI 把单页面口述写进了
|
|
157
|
+
| AI 把单页面口述写进了 `.wl-skills/docs/business` | 资料源不足却被强制走 | 检查是否提供了模块级资料;只是做单页时直接走 page-codegen |
|
|
158
158
|
| 生成的字段表里有“推断字段”污染真实事实 | 资料缺失 | 让 AI 把推断字段全部标注 `待确认`,不要直接合并到 field.md 主表 |
|
|
159
159
|
| open-questions 越来越多 | 没有定期与产品对齐 | 周会上集中确认后,把已确认项移除并在 requirement.md 落地业务规则 |
|
|
160
160
|
| 模块目录命名混乱 | 没有按 `0X-` 顺序前缀 | 强制要求 `01-`、`02-`,与产品一级目录一致 |
|
|
@@ -163,8 +163,8 @@ src/views/mdata/model/mdata-model-config/api.md
|
|
|
163
163
|
|
|
164
164
|
## 8. FAQ
|
|
165
165
|
|
|
166
|
-
**Q:小项目也要
|
|
167
|
-
A:不强求。小项目可以把业务全景写在 README,不需要拆成
|
|
166
|
+
**Q:小项目也要 `.wl-skills/docs/business` 吗?**
|
|
167
|
+
A:不强求。小项目可以把业务全景写在 README,不需要拆成 `.wl-skills/docs/business`。本 Skill 不会主动给小项目写。
|
|
168
168
|
|
|
169
169
|
**Q:原型目录必须发布成 HTML 吗?**
|
|
170
170
|
A:推荐已发布的 Axure HTML,AI 可以读取具体页面。其他形式(pdf / docx / 截图集)也支持,但识别精度下降。
|
package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-index.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
|
|
2
|
+
模板:.wl-skills/docs/business/0X-xxx/index.md(模块全景)
|
|
3
3
|
使用:business-doc-extract Skill 在 module 模式下生成或刷新。
|
|
4
4
|
约束:仅放“模块定位 + 子功能清单 + 页面/API 索引 + 模块链路摘要”。
|
|
5
5
|
详细需求 / 字段 / 字典放在 requirement.md / field.md / dictionary.md。
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# {{ModuleName}}
|
|
9
9
|
|
|
10
10
|
> **代码目录**:`src/views/{{module-path}}`
|
|
11
|
-
>
|
|
11
|
+
> **文档目录**:`.wl-skills/docs/business/0X-{{module-kebab}}/`
|
|
12
12
|
> **最近更新**:{{UpdatedAt}}
|
|
13
13
|
|
|
14
14
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
|
|
2
|
+
模板:.wl-skills/docs/business/0X-xxx/requirement.md(模块需求理解)
|
|
3
3
|
使用:business-doc-extract Skill 在 module / incremental 模式下生成或更新。
|
|
4
4
|
约束:流程图、页面清单、模块待确认事项都放在本文件,不再单独建 flow.md / pages.md / open-questions.md。
|
|
5
5
|
全局 open-questions.md 由 Skill 汇总,不在本文件维护汇总表。
|
|
@@ -86,7 +86,7 @@ flowchart TD
|
|
|
86
86
|
|
|
87
87
|
## 9. 模块待确认事项
|
|
88
88
|
|
|
89
|
-
> 仅维护本模块的待确认事项;全局视图见
|
|
89
|
+
> 仅维护本模块的待确认事项;全局视图见 `.wl-skills/docs/business/open-questions.md`。
|
|
90
90
|
|
|
91
91
|
| 编号 | 问题 | 影响 | 建议确认人 | 优先级 | 状态 |
|
|
92
92
|
|---|---|---|---|---|---|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: convention-audit
|
|
3
|
-
description: "Use when: auditing project source code against the 14 modular standards in .
|
|
3
|
+
description: "Use when: auditing project source code against the 14 modular standards in .wl-skills/standards/. Outputs deviation report and component-extraction suggestions to reports/. Triggers on: 规范审计, 规范检查, 代码审计, 对齐规范, 规范偏差, 接手新项目, 存量代码分析, 项目体检, audit code, check conventions, onboard project."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: 规范审计(convention-audit)v2
|
|
7
7
|
|
|
8
|
-
以 `.
|
|
8
|
+
以 `.wl-skills/standards/` 14 条规范为唯一基线,扫描项目源码,输出**偏差报告**和**组件提取建议**到 `reports/` 目录。
|
|
9
9
|
|
|
10
10
|
> **核心理念**:审查全覆盖、结果强量化、规则场景化、新增严格 + 存量渐进。
|
|
11
11
|
> 本 Skill 只负责发现偏差并给出整改建议,**不自动修复**(修复由 code-fix Skill 完成)。
|
|
@@ -45,6 +45,51 @@ description: "Use when: auditing project source code against the 14 modular stan
|
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
+
## 复扫模式(--quick,v2.11+ 新增)
|
|
49
|
+
|
|
50
|
+
> 闭环专用:code-fix 修复后快速验证,不做全量 14 条扫描,仅复查上次报告中的 🔴🟡 项。
|
|
51
|
+
|
|
52
|
+
### 触发方式
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
复扫验证 / 复扫上次审计 / convention-audit --quick / 确认修复效果
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 执行逻辑
|
|
59
|
+
|
|
60
|
+
1. 读取 `reports/规范审查报告.md` 最新章节中的 🔴🟡 偏差清单
|
|
61
|
+
2. **仅对这些偏差涉及的文件**重新检测(不扫描全项目)
|
|
62
|
+
3. 对比上次报告数据,输出变化矩阵
|
|
63
|
+
4. 追加复扫结果到报告
|
|
64
|
+
|
|
65
|
+
### 复扫报告格式
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## 🔄 复扫 {YYYY-MM-DD HH:mm} | 触发:code-fix 后自动复扫
|
|
69
|
+
|
|
70
|
+
| 指标 | 修复前 | 修复后 | 变化 |
|
|
71
|
+
|---|---:|---:|---|
|
|
72
|
+
| 🔴 严重 | {N} | {N} | {-N} ✅ |
|
|
73
|
+
| 🟡 警告 | {N} | {N} | {-N} ✅ |
|
|
74
|
+
| 未解决 | - | {N} | 待处理 |
|
|
75
|
+
|
|
76
|
+
### 结论
|
|
77
|
+
- ✔ 闭环完成,可提交
|
|
78
|
+
- 或:✖ 仍有 {N} 个未解决项,建议继续处理
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 与全量审计的区别
|
|
82
|
+
|
|
83
|
+
| | 全量审计 | --quick 复扫 |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| 规范覆盖 | 14 条全部 | 仅上次报告中的偏差项 |
|
|
86
|
+
| 扫描范围 | 指定目录或全项目 | 仅偏差涉及文件 |
|
|
87
|
+
| token 消耗 | 高 | 低(约全量的 10%) |
|
|
88
|
+
| 适用场景 | 首次体检/定期审计 | code-fix 后闭环验证 |
|
|
89
|
+
| 输出 | 完整报告 12 章 | 复扫对比矩阵 |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
48
93
|
## 审计范围(14 条规范全覆盖)
|
|
49
94
|
|
|
50
95
|
### 审计方式分层
|
|
@@ -83,8 +128,8 @@ description: "Use when: auditing project source code against the 14 modular stan
|
|
|
83
128
|
| 目录 | 规则强度 | 说明 |
|
|
84
129
|
|---|---|---|
|
|
85
130
|
| `src/views/**` | 最严格 | 业务页面,全规范覆盖 |
|
|
86
|
-
|
|
|
87
|
-
|
|
|
131
|
+
| `.wl-skills/src/components/local/**` | 中等 | 业务封装组件,检查复用性和命名 |
|
|
132
|
+
| `.wl-skills/src/components/**`(基础/历史) | 宽松 | 不套页面三文件原则;内部使用 el-* 需单独评审 |
|
|
88
133
|
|
|
89
134
|
---
|
|
90
135
|
|
|
@@ -110,7 +155,7 @@ description: "Use when: auditing project source code against the 14 modular stan
|
|
|
110
155
|
|
|
111
156
|
### 步骤 2:加载规范基线 + 工具链检测
|
|
112
157
|
|
|
113
|
-
1. 读取 `standards/01 ~
|
|
158
|
+
1. 读取 `standards/01 ~ 14` 全部规范文件
|
|
114
159
|
2. 检测工具链状态:
|
|
115
160
|
- ESLint:是否可执行
|
|
116
161
|
- TypeScript:`tsc --noEmit` 是否可执行
|
|
@@ -389,7 +434,7 @@ description: "Use when: auditing project source code against the 14 modular stan
|
|
|
389
434
|
### 触发
|
|
390
435
|
|
|
391
436
|
```
|
|
392
|
-
审计 {页面目录} --mode spec-align --spec docs/spec/{项目代号}/4.x-{子模块}.md
|
|
437
|
+
审计 {页面目录} --mode spec-align --spec .wl-skills/docs/spec/{项目代号}/4.x-{子模块}.md
|
|
393
438
|
```
|
|
394
439
|
或自然语言:「检查 {页面} 是否跟说明书对齐」。
|
|
395
440
|
|
|
@@ -409,7 +454,7 @@ description: "Use when: auditing project source code against the 14 modular stan
|
|
|
409
454
|
```markdown
|
|
410
455
|
# Spec 对齐 GAP 报告
|
|
411
456
|
- 生成时间:{YYYY-MM-DD HH:mm}
|
|
412
|
-
- spec
|
|
457
|
+
- spec 来源:.wl-skills/docs/spec/{项目代号}/4.x-{子模块}.md
|
|
413
458
|
- 代码范围:src/views/.../{页面}/
|
|
414
459
|
|
|
415
460
|
## GAP 摘要
|
|
@@ -96,4 +96,4 @@ A:单个偏差可以让 AI 修,但**不要让它批量自动改**。建议
|
|
|
96
96
|
A:AI 报告冗长(含每行修复建议),人读摘要简洁(只看趋势/优先级)。两者读者不同。
|
|
97
97
|
|
|
98
98
|
**Q:自定义规范怎么加?**
|
|
99
|
-
A:往 `.
|
|
99
|
+
A:往 `.wl-skills/standards/` 加一份 `*.md`,更新 `standards/index.md`,convention-audit 自动 pickup。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: page-codegen
|
|
3
|
-
description: "Use when: generating complete Vue 3 page code (index.vue + data.ts + modal components + api.md + pages.ts registration) from a prototype page inventory and API contract, strictly following the cx-ui-produce project conventions. Read SKILL.md first (rules+constraints), then read the matching TPL-*.md for the template code. Triggers on: generate page, create page, code generation, 生成页面, 页面代码, 代码生成, vue页面,
|
|
3
|
+
description: "Use when: generating complete Vue 3 page code (index.vue + data.ts + modal components + api.md + pages.ts registration) from a prototype page inventory and API contract, strictly following the cx-ui-produce project conventions. Read SKILL.md first (rules+constraints), then read the matching TPL-*.md for the template code. Triggers on: generate page, create page, code generation, 生成页面, 页面代码, 代码生成, vue页面, 帮我生成, natural language page generation. NOTE: 口述需求/建个页面/写个页面/按原型生成 belong to prototype-scan first (page-codegen chains from it via 模式 0)."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Skill: 页面代码生成(page-codegen)
|
|
@@ -20,7 +20,7 @@ description: "Use when: generating complete Vue 3 page code (index.vue + data.ts
|
|
|
20
20
|
✅ 已读取 standards/12-base-table.md → AGGrid必用 + cid命名规范
|
|
21
21
|
✅ 已读取 standards/13-platform-components.md → 平台组件对照表 + docs前置读取清单
|
|
22
22
|
✅ 已读取 standards/14-layout-containers.md → 布局容器(禁用 C_Splitter,必须用 jh-drag-row/jh-drag-col)
|
|
23
|
-
✅ 已读取 docs/{涉及的jh-*文档} → 当前页涉及组件的使用规范
|
|
23
|
+
✅ 已读取 .wl-skills/docs/{涉及的jh-*文档} → 当前页涉及组件的使用规范
|
|
24
24
|
✅ 工具链检测:.prettierrc.js ✓ eslint.config.ts ✓ .husky/ ✓ [全部就绪]
|
|
25
25
|
✅ cid 已生成:{value}({首字母缩写说明})
|
|
26
26
|
```
|
|
@@ -45,14 +45,34 @@ description: "Use when: generating complete Vue 3 page code (index.vue + data.ts
|
|
|
45
45
|
✅ src/views/.../{页面}/api.md
|
|
46
46
|
✅ reports/SYS_MENU_INFO.md → 已追加菜单条目
|
|
47
47
|
────────────────────────────────────────────────
|
|
48
|
+
🔍 强制自检(不可跳过):
|
|
49
|
+
wl-skills validate src/views/{生成的页面目录}
|
|
50
|
+
→ 结果:{0 error / N warn} 或列出 error 待修复
|
|
51
|
+
────────────────────────────────────────────────
|
|
48
52
|
📌 后续步骤:
|
|
49
53
|
1. 在 router/pages.ts 注册路由
|
|
50
54
|
2. 若本页 hiddenMenu=true → 在 src/util/navigate-hidden.ts 的 HIDDEN_ROUTE_MAP 追加一行
|
|
51
|
-
3. 提交:git cz(禁止直接 git commit
|
|
52
|
-
4. 可选:触发 convention-audit 扫描本次生成文件
|
|
55
|
+
3. 提交:git cz(禁止直接 git commit,pre-commit 会自动检测规范)
|
|
53
56
|
────────────────────────────────────────────────
|
|
54
57
|
```
|
|
55
58
|
|
|
59
|
+
### 生成后强制自检(不可跳过,不可标记为"可选")
|
|
60
|
+
|
|
61
|
+
> **v2.10.0+ 硬约束**:生成页面代码后,AI **必须**立即执行规范自检,不可跳过。
|
|
62
|
+
|
|
63
|
+
1. **调用 MCP 工具** `wls_validate_page`,path 参数为**本次生成的页面目录**(精确到具体页面,不传 src/views 全局)
|
|
64
|
+
2. 如有 **error**:
|
|
65
|
+
- 仅修复**本次生成的文件**中的 error(index.vue / data.ts / index.scss / api.md)
|
|
66
|
+
- 如 error 来自同目录下的**旧文件**(非本次生成),不要修改,在摘要中标注"已跳过 N 个旧文件 error"
|
|
67
|
+
- 修复后重新自检直到本次生成的文件 0 error
|
|
68
|
+
3. 如有 **warn** → 尝试修复,确实无法修复的在摘要中说明原因
|
|
69
|
+
4. 自检结果(error 数 / warn 数 / 跳过的旧文件数)写入上方"生成完成摘要"
|
|
70
|
+
5. 自检范围为本次生成的**单个页面目录**,不对无关页面负责
|
|
71
|
+
|
|
72
|
+
> 这条规则确保 AI 不会"写完就跑"——生成和验证形成闭环。
|
|
73
|
+
> **作用域隔离原则**:AI 只对自己本次生成的文件负责,不强制修复历史遗留偏差。
|
|
74
|
+
> git commit 时 pre-commit hook 会再次拦截,但 AI 应在生成阶段就消除本次生成的 error。
|
|
75
|
+
|
|
56
76
|
---
|
|
57
77
|
|
|
58
78
|
## 前置检查
|
|
@@ -86,14 +106,14 @@ src/views/[域]/[模块]/[子模块]/[kebab-case-目录名]/
|
|
|
86
106
|
|
|
87
107
|
弹窗组件处理策略:
|
|
88
108
|
|
|
89
|
-
- **通用弹窗**(新增/编辑表单,2+ 页面可复用)→ 提取到
|
|
109
|
+
- **通用弹窗**(新增/编辑表单,2+ 页面可复用)→ 提取到 `.wl-skills/src/components/local/c_xxxModal/`
|
|
90
110
|
- **极个性弹窗**(仅单页面使用,c_modal 无法满足)→ 放在页面 `components/xxxModal.vue`
|
|
91
111
|
|
|
92
112
|
附加输出:
|
|
93
113
|
|
|
94
114
|
- `pages.ts` 注册片段
|
|
95
115
|
- **`reports/SYS_MENU_INFO.md`** — 集中式菜单配置,**追加写入**(见下方 §SYS_MENU_INFO 生成规则)
|
|
96
|
-
- `mock/[业务域]/[模块].ts`(项目根目录 `mock/` 下按域分目录,`vite-plugin-mock` 自动加载,与 api.md 的 URL 和字段完全一致;详见
|
|
116
|
+
- `mock/[业务域]/[模块].ts`(项目根目录 `mock/` 下按域分目录,`vite-plugin-mock` 自动加载,与 api.md 的 URL 和字段完全一致;详见 `.wl-skills/docs/mock-architecture.md`)
|
|
97
117
|
|
|
98
118
|
---
|
|
99
119
|
|
|
@@ -133,7 +153,7 @@ src/views/[域]/[模块]/[子模块]/[kebab-case-目录名]/
|
|
|
133
153
|
|
|
134
154
|
### 禁止事项(严格遵守)
|
|
135
155
|
|
|
136
|
-
1. **❌ 禁止手写弹窗**:不可在页面 `components/` 下用 `el-dialog` + `el-form` + `el-row/col` 手写弹窗。必须使用 `c_formModal
|
|
156
|
+
1. **❌ 禁止手写弹窗**:不可在页面 `components/` 下用 `el-dialog` + `el-form` + `el-row/col` 手写弹窗。必须使用 `c_formModal`(`.wl-skills/src/components/local/c_formModal/`),通过 `modalConfig` 配置驱动。**例外**:纯只读详情弹窗(`jh-dialog` + `BaseForm :disabled="true"`)可不用 `c_formModal`,如工艺参数查看(参考 mmwr-process-parameters)
|
|
137
157
|
2. **❌ 禁止在弹窗中使用原生 Element Plus 组件**:不可使用 `el-select`、`el-input`、`el-date-picker` 等原生组件,必须使用 `jh-select`、`jh-date`、`jh-user-picker` 等平台组件(通过 `BaseFormItemDesc` 的 `component` 属性配置)
|
|
138
158
|
3. **❌ 禁止在 BaseToolbar 内使用 slot**:`BaseToolbar` 组件**不支持任何 slot**(源码中无 `<slot>` 标签),放入的内容会被丢弃不渲染。Tab/视角切换等额外 UI 必须放在 BaseToolbar **外部**
|
|
139
159
|
4. **❌ 禁止用 el-radio-group 做 Tab/视角切换**:所有 Tab 式切换(视角切换、数据过滤 Tab、功能 Tab)**必须使用 `el-tabs`**(参考 `mmwr-steel-stripping-operations`)。不可用 `el-radio-group` + 手动 `handleViewChange` / `handleTabChange`
|
|
@@ -146,7 +166,7 @@ src/views/[域]/[模块]/[子模块]/[kebab-case-目录名]/
|
|
|
146
166
|
11. **❌ 禁止表单控件宽度不统一**:`jh-select`、`jh-date`、`el-input-number`、`jh-file-upload` 默认宽度可能与 `el-input` 不一致,必须在 scoped style 中用 `:deep()` 统一设为 `width: 100%`(详见 §表单页 UI 细节规范)
|
|
147
167
|
12. **❌ 禁止表单页无滚动**:独立路由表单页内容超出视口时必须可滚动,`.app-page-container` 须设 `overflow-y: auto`(**不要加 `height: 100%`,全局已有 `height: calc(100vh - 100px)`,叠加会导致双滚动条**)
|
|
148
168
|
13. **❌ 禁止内联 style 散落**:所有页面/组件样式统一写在 `index.scss` 中(便于复用和移动),不可在 template 中大量使用内联 `style="..."`
|
|
149
|
-
14. **❌ 禁止生成无 mock 的页面**:只写 `API_CONFIG` 但不写 `mock/[业务域]/*.ts` 属于生成失败。mock 文件必须按域分目录、import `_utils` 共享工具(详见
|
|
169
|
+
14. **❌ 禁止生成无 mock 的页面**:只写 `API_CONFIG` 但不写 `mock/[业务域]/*.ts` 属于生成失败。mock 文件必须按域分目录、import `_utils` 共享工具(详见 `.wl-skills/docs/mock-architecture.md`)。
|
|
150
170
|
15. **❌ 禁止生成空 onClick**:`onClick: () => {}` 属于生成失败;未知逻辑也必须用 `ElMessage.info(...)` 明示。
|
|
151
171
|
16. **❌ 禁止忽略 wk-skills-ui**:项目已安装 `@agile-team/wk-skills-ui` 时,不使用 `defineColumns/renderOps` 属于生成失败。
|
|
152
172
|
17. **❌ 禁止 BaseTable 非 AGGrid**:业务列表中 `<BaseTable>` 未写 `render-type="agGrid"` 或缺少 `cid/:cid` 属于生成失败。
|
|
@@ -154,13 +174,13 @@ src/views/[域]/[模块]/[子模块]/[kebab-case-目录名]/
|
|
|
154
174
|
|
|
155
175
|
### c_formModal 使用规范
|
|
156
176
|
|
|
157
|
-
> 项目已有
|
|
177
|
+
> 项目已有 `.wl-skills/src/components/local/c_formModal/` 通用表单弹窗组件,支持 add/edit/view 三模式。
|
|
158
178
|
> 所有标准 CRUD 弹窗**必须使用此组件**,不可重复编写。
|
|
159
179
|
|
|
160
180
|
**data.ts 中定义 modalConfig:**
|
|
161
181
|
|
|
162
182
|
```typescript
|
|
163
|
-
import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";
|
|
183
|
+
import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";
|
|
164
184
|
|
|
165
185
|
export const modalConfig = {
|
|
166
186
|
titlePrefix: "客户", // 标题前缀:新增客户 / 编辑客户 / 查看客户
|
|
@@ -895,7 +915,7 @@ import {
|
|
|
895
915
|
|
|
896
916
|
// ❌ 错误:直接从 common-core 深层路径导入
|
|
897
917
|
import { AbstractPageQueryHook } from "@jhlc/common-core/src/page-hooks/page-query-hook.ts";
|
|
898
|
-
import { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-query/type.ts";
|
|
918
|
+
import { BaseQueryItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/base-query/type.ts";
|
|
899
919
|
```
|
|
900
920
|
|
|
901
921
|
| 导出名 | 说明 |
|
|
@@ -907,7 +927,7 @@ import { BaseQueryItemDesc } from "@jhlc/common-core/src/components/form/base-qu
|
|
|
907
927
|
| `BusLogicDataType` | 业务逻辑类型枚举(如 dict)|
|
|
908
928
|
|
|
909
929
|
> **例外**:`BaseFormItemDesc`(弹窗表单字段类型)仍直接从 common-core 导入:
|
|
910
|
-
> `import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";`
|
|
930
|
+
> `import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";`
|
|
911
931
|
> 因为 `src/types/page.ts` 当前未导出该类型。
|
|
912
932
|
|
|
913
933
|
---
|
|
@@ -983,7 +1003,7 @@ export default list;
|
|
|
983
1003
|
# 系统菜单配置 — [项目名] [业务模块]
|
|
984
1004
|
|
|
985
1005
|
> **module 命名**:`[module]`
|
|
986
|
-
> **父级菜单**:来自 `.
|
|
1006
|
+
> **父级菜单**:来自 `.wl-skills/skills/sync/env.local.json` 的 `menu.parentMenuId`
|
|
987
1007
|
|
|
988
1008
|
## 一级目录(type=M)
|
|
989
1009
|
|
package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
> 适用场景:编辑/维护页面,上半区为多 Tab 表单(基本信息/客户信息/其他信息),下半区为子项表格。
|
|
6
6
|
> **布局核心**:`jh-drag-row :topHeight="..."` 垂直分割上下区域(严禁 `C_Splitter`,详 standards/14-layout-containers.md)。
|
|
7
|
-
> **参考标杆**:`src/views/sale/
|
|
7
|
+
> **参考标杆**:`src/views/sale/.wl-skills/templates/add-.wl-skills/templates/`、`src/views/sale/.wl-skills/templates/domestic-trade-order-mainten/`
|
|
8
8
|
|
|
9
9
|
#### index.vue
|
|
10
10
|
|
|
@@ -337,7 +337,7 @@ export async function initPage() {
|
|
|
337
337
|
|
|
338
338
|
仅在“极个性弹窗”场景生成(c_modal 无法满足时),放在页面 `components/editModal.vue`:
|
|
339
339
|
|
|
340
|
-
通用新增/编辑弹窗应优先使用
|
|
340
|
+
通用新增/编辑弹窗应优先使用 `.wl-skills/src/components/local/c_modal/` 局部公共组件。
|
|
341
341
|
|
|
342
342
|
```vue
|
|
343
343
|
<template>
|
|
@@ -526,9 +526,9 @@ onMounted(() => select());
|
|
|
526
526
|
| 用户选择 | `component: () => ({ tag: "jh-user-picker" })` |
|
|
527
527
|
| 部门选择 | `component: () => ({ tag: "jh-dept-picker" })` |
|
|
528
528
|
|
|
529
|
-
详细组件 API
|
|
530
|
-
页面 Hook
|
|
531
|
-
HTTP
|
|
529
|
+
详细组件 API:`.wl-skills/docs/jh-date.md`、`.wl-skills/docs/jh-select.md`、`.wl-skills/docs/jh-user-picker.md`、`.wl-skills/docs/jh-dept-picker.md`
|
|
530
|
+
页面 Hook 最佳实践:`.wl-skills/docs/page-query-hook-best-practices.md`
|
|
531
|
+
HTTP 方法参考:`.wl-skills/docs/request.md`
|
|
532
532
|
|
|
533
533
|
---
|
|
534
534
|
|
|
@@ -743,7 +743,7 @@ function genRecord() {
|
|
|
743
743
|
- 「菜单路径」字段(camelCase)才是真正的路由 path 段
|
|
744
744
|
2. **隐藏菜单 hidden: true**:独立表单/详情页**必须设为隐藏**,避免菜单栏多出无意义入口
|
|
745
745
|
3. **pages.ts 变更需重启** dev server(fullImportPlugin 只在首次 transform 时读取)
|
|
746
|
-
4. **local 组件必须显式 import
|
|
746
|
+
4. **local 组件必须显式 import**:`.wl-skills/src/components/local/` 下的组件不会自动全局注册
|
|
747
747
|
|
|
748
748
|
### FORM_ROUTE 格式
|
|
749
749
|
|
|
@@ -1065,7 +1065,7 @@ spec.features.hiddenMenu === true:
|
|
|
1065
1065
|
|
|
1066
1066
|
### 菜单配置
|
|
1067
1067
|
|
|
1068
|
-
> 菜单配置统一生成到 `.
|
|
1068
|
+
> 菜单配置统一生成到 `.wl-skills/reports/SYS_MENU_INFO.md`(集中式),生成规则见 SKILL.md 主文件的「SYS_MENU_INFO 生成规则」章节。
|
|
1069
1069
|
|
|
1070
1070
|
---
|
|
1071
1071
|
|
package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md
RENAMED
|
@@ -28,7 +28,7 @@ index.scss → 空文件或极少样式(模板组件内部已处理样式)
|
|
|
28
28
|
生成 config 对象前,必须先读取该模板的类型定义文件:
|
|
29
29
|
|
|
30
30
|
```
|
|
31
|
-
src/components/template/{XxxTemplate}/types.ts
|
|
31
|
+
.wl-skills/src/components/template/{XxxTemplate}/types.ts
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
`data.ts` 的 config 对象结构必须完全遵循 `types.ts` 的 interface 定义,不得猜测字段。
|
|
@@ -97,7 +97,7 @@ import { [camelPageName]Config } from "./data";
|
|
|
97
97
|
|
|
98
98
|
**必须同时满足以下两个条件**:
|
|
99
99
|
|
|
100
|
-
1. 项目
|
|
100
|
+
1. 项目 `.wl-skills/src/components/template/` 目录下已存在可复用的 Template 组件
|
|
101
101
|
2. 当前页面与该模板的交互骨架**完全一致**(查询/操作/表格结构均与模板期望的 config 结构匹配)
|
|
102
102
|
|
|
103
103
|
**不确定时的决策**:
|
|
@@ -113,7 +113,7 @@ import { [camelPageName]Config } from "./data";
|
|
|
113
113
|
## 已知配置驱动模板一览(cx-ui-produce 项目特定)
|
|
114
114
|
|
|
115
115
|
> ⚠️ 以下是 cx-ui-produce 项目已有的 Template 组件,仅在该项目中适用。
|
|
116
|
-
> 其他项目需根据自己项目的
|
|
116
|
+
> 其他项目需根据自己项目的 `.wl-skills/src/components/template/` 目录确认。
|
|
117
117
|
|
|
118
118
|
### 1. ResultQueryTemplate(轧钢实绩查询类)
|
|
119
119
|
|
|
@@ -177,7 +177,7 @@ import { [pageName]Config } from "./data";
|
|
|
177
177
|
- 有固定的查询区 + 实绩录入 + 汇总数据结构
|
|
178
178
|
- 字段结构高度统一(同一套模板 7 个页面共用)
|
|
179
179
|
|
|
180
|
-
**生成规则**:读
|
|
180
|
+
**生成规则**:读 `.wl-skills/src/components/template/FinishingAchievementTemplate/types.ts`,按 `FinishingAchievementConfig` interface 生成 config 对象。
|
|
181
181
|
|
|
182
182
|
---
|
|
183
183
|
|
|
@@ -278,7 +278,7 @@ import { [pageName]Config } from "./data";
|
|
|
278
278
|
- 有固定的查询区 + 实绩录入 + 汇总数据结构
|
|
279
279
|
- 字段结构高度统一(同一套模板 7 个页面共用)
|
|
280
280
|
|
|
281
|
-
**生成规则**:参考
|
|
281
|
+
**生成规则**:参考 `.wl-skills/src/components/template/FinishingAchievementTemplate/` 内的 `types.ts` 定义,只生成对应的 config 配置。
|
|
282
282
|
|
|
283
283
|
---
|
|
284
284
|
|
package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md
RENAMED
|
@@ -369,13 +369,13 @@ onMounted(() => {
|
|
|
369
369
|
|
|
370
370
|
| 条件 | 方式 |
|
|
371
371
|
| ----------------------------------------------- | ------------------------------------------------------------ |
|
|
372
|
-
| 3+ 页面布局完全相同,仅 API/工序代码/列不同 | 提取
|
|
372
|
+
| 3+ 页面布局完全相同,仅 API/工序代码/列不同 | 提取 `.wl-skills/src/components/template/XxxTemplate/`,页面仅传 config |
|
|
373
373
|
| 页面布局有显著差异(不同 Tab 结构、不同表数量) | 独立页面,在 data.ts 中定义多个 `createXxxPage()` |
|
|
374
374
|
|
|
375
375
|
### D-2 配置驱动模板组件结构(参考 FinishingAchievementTemplate)
|
|
376
376
|
|
|
377
377
|
```
|
|
378
|
-
src/components/template/[TemplateName]/
|
|
378
|
+
.wl-skills/src/components/template/[TemplateName]/
|
|
379
379
|
├── index.vue ← 模板组件(接收 config prop)
|
|
380
380
|
├── data.ts ← createXxxPage() 工厂函数
|
|
381
381
|
├── types.ts ← 配置类型定义(ApiConfig, ColumnsConfig, UiConfig 等)
|
package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md
RENAMED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
TableColumnDesc,
|
|
25
25
|
BusLogicDataType,
|
|
26
26
|
} from "@/types/page";
|
|
27
|
-
import type { BaseFormItemDesc } from "@jhlc/common-core/src/components/form/common/type";
|
|
27
|
+
import type { BaseFormItemDesc } from "@jhlc/common-core/.wl-skills/src/components/form/common/type";
|
|
28
28
|
import c_spliterTitle from "@/components/local/c_spliterTitle/index.vue";
|
|
29
29
|
import { getAction, postAction } from "@jhlc/common-core/src/api/action";
|
|
30
30
|
import { debounce } from "lodash-es";
|
package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md
RENAMED
|
@@ -205,6 +205,6 @@ export function createPage(editModalRef?: any) {
|
|
|
205
205
|
|
|
206
206
|
> **C_Tree Props 速查**:`tabs`(标签页数组)、`treeData`(必填)、`showSearch`(默认 true)、`defaultExpandAll`(默认 true)。
|
|
207
207
|
> **Events**:`@node-click`(节点点击)、`@tab-change`(标签页切换)。
|
|
208
|
-
> 详见
|
|
208
|
+
> 详见 `.wl-skills/src/components/global/C_Tree/README.md`。
|
|
209
209
|
|
|
210
210
|
---
|