@alanwang-merit/meritdata-platform-skill-package 1.0.8 → 1.0.10

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.
Files changed (660) hide show
  1. package/package.json +1 -1
  2. package/rules/api-design-rules.md +0 -7
  3. package/rules/code-dev-rules.md +0 -70
  4. package/rules/coding-standards-rules.md +0 -99
  5. package/rules/data-boundary-rules.md +32 -0
  6. package/rules/frontend-coding-rules.md +0 -6
  7. package/rules/frontend-component-rules.md +0 -6
  8. package/rules/git-workflow-rules.md +0 -6
  9. package/rules/nacos-rules.md +0 -6
  10. package/rules/naming-conventions-rules.md +0 -6
  11. package/rules/performance-rules.md +0 -6
  12. package/rules/security-rules.md +0 -6
  13. package/rules/sql-naming-rules.md +0 -6
  14. package/rules/sql-script-rules.md +0 -6
  15. package/scripts/postinstall.js +4 -1
  16. package/skills/api-design/SKILL.md +523 -0
  17. package/skills/architecture-readiness-check/SKILL.md +80 -0
  18. package/skills/architecture-readiness-check/references//346/236/266/346/236/204/350/256/276/350/256/241/345/207/206/345/244/207/345/272/246/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +129 -0
  19. package/skills/architecture-readiness-check/references//346/236/266/346/236/204/350/256/276/350/256/241/345/207/206/345/244/207/345/272/246/346/243/200/346/237/245/346/270/205/345/215/225.md +251 -0
  20. package/skills/ask-matt/SKILL.md +78 -0
  21. package/skills/ask-matt/agents/openai.yaml +5 -0
  22. package/skills/backend-code-review/SKILL.md +168 -0
  23. package/skills/backend-code-review/references/architecture-rule.md +91 -0
  24. package/skills/backend-code-review/references/db-schema-rule.md +157 -0
  25. package/skills/backend-code-review/references/repositories-rule.md +61 -0
  26. package/skills/backend-code-review/references/sqlalchemy-rule.md +139 -0
  27. package/skills/backend-patterns/SKILL.md +597 -0
  28. package/skills/backend-patterns/agents/openai.yaml +7 -0
  29. package/skills/brainstorming/SKILL.md +151 -0
  30. package/skills/brainstorming/scripts/frame-template.html +213 -0
  31. package/skills/brainstorming/scripts/helper.js +167 -0
  32. package/skills/brainstorming/scripts/server.cjs +723 -0
  33. package/skills/brainstorming/scripts/server.js +338 -0
  34. package/skills/brainstorming/scripts/start-server.sh +209 -0
  35. package/skills/brainstorming/scripts/stop-server.sh +120 -0
  36. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  37. package/skills/brainstorming/visual-companion.md +298 -0
  38. package/skills/code-design-consistency-check/SKILL.md +142 -0
  39. package/skills/code-design-consistency-check/references//344/273/243/347/240/201/344/270/216/350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +242 -0
  40. package/skills/code-design-consistency-check/references//344/273/243/347/240/201/344/270/216/350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/346/243/200/346/237/245/346/270/205/345/215/225.md +314 -0
  41. package/skills/code-low-level-check/SKILL.md +159 -0
  42. package/skills/code-low-level-check/references//344/273/243/347/240/201/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +242 -0
  43. package/skills/code-low-level-check/references//344/273/243/347/240/201/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +353 -0
  44. package/skills/code-low-level-check/references//345/211/215/347/253/257UI/345/212/237/350/203/275/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +338 -0
  45. package/skills/code-review/SKILL.md +89 -0
  46. package/skills/code-review/agents/openai.yaml +3 -0
  47. package/skills/codebase-design/DEEPENING.md +37 -0
  48. package/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  49. package/skills/codebase-design/SKILL.md +114 -0
  50. package/skills/codebase-design/agents/openai.yaml +3 -0
  51. package/skills/design-architect-review/SKILL.md +81 -0
  52. package/skills/design-architect-review/references//346/236/266/346/236/204/345/270/210/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +264 -0
  53. package/skills/design-low-level-check/SKILL.md +95 -0
  54. package/skills/design-low-level-check/references//346/212/200/346/234/257/350/256/276/350/256/241/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +125 -0
  55. package/skills/design-low-level-check/references//346/212/200/346/234/257/350/256/276/350/256/241/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +342 -0
  56. package/skills/design-review/SKILL.md +225 -0
  57. package/skills/design-review/references//350/256/276/350/256/241/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +64 -0
  58. package/skills/design-review-report/SKILL.md +150 -0
  59. package/skills/design-review-report/references//350/256/276/350/256/241/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +224 -0
  60. package/skills/design-taste-frontend/SKILL.md +226 -0
  61. package/skills/developer-testcase-review/SKILL.md +191 -0
  62. package/skills/developer-testcase-review/references//345/274/200/345/217/221/350/200/205/346/265/213/350/257/225/347/224/250/344/276/213/346/243/200/346/237/245/345/215/225.md +40 -0
  63. package/skills/development-code-review/SKILL.md +138 -0
  64. package/skills/development-code-review/references//345/274/200/345/217/221/344/273/243/347/240/201/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +260 -0
  65. package/skills/development-code-review/references//345/274/200/345/217/221/344/273/243/347/240/201/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +82 -0
  66. package/skills/development-expert-review/SKILL.md +150 -0
  67. package/skills/development-expert-review/references//345/211/215/345/220/216/347/253/257/344/270/223/345/256/266/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +338 -0
  68. package/skills/diagnosing-bugs/SKILL.md +134 -0
  69. package/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  70. package/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  71. package/skills/dispatching-parallel-agents/SKILL.md +167 -0
  72. package/skills/domain-modeling/ADR-FORMAT.md +47 -0
  73. package/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  74. package/skills/domain-modeling/SKILL.md +74 -0
  75. package/skills/domain-modeling/agents/openai.yaml +3 -0
  76. package/skills/executing-plans/SKILL.md +64 -0
  77. package/skills/finishing-a-development-branch/SKILL.md +201 -0
  78. package/skills/frontend-patterns/SKILL.md +642 -0
  79. package/skills/generate-developer-testcase/SKILL.md +70 -0
  80. package/skills/generate-developer-testcase/references//345/274/200/345/217/221/350/200/205/346/265/213/350/257/225/347/224/250/344/276/213/346/250/241/346/235/277.md +157 -0
  81. package/skills/git-guardrails-claude-code/SKILL.md +95 -0
  82. package/skills/git-guardrails-claude-code/agents/openai.yaml +3 -0
  83. package/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
  84. package/skills/grill-me/SKILL.md +7 -0
  85. package/skills/grill-me/agents/openai.yaml +5 -0
  86. package/skills/grill-with-docs/SKILL.md +7 -0
  87. package/skills/grill-with-docs/agents/openai.yaml +5 -0
  88. package/skills/grilling/SKILL.md +12 -0
  89. package/skills/grilling/agents/openai.yaml +3 -0
  90. package/skills/handoff/SKILL.md +16 -0
  91. package/skills/handoff/agents/openai.yaml +5 -0
  92. package/skills/implement/SKILL.md +15 -0
  93. package/skills/implement/agents/openai.yaml +5 -0
  94. package/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  95. package/skills/improve-codebase-architecture/SKILL.md +71 -0
  96. package/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  97. package/skills/init-deep-claude/SKILL.md +270 -0
  98. package/skills/init-deep-claude/_meta.json +14 -0
  99. package/skills/init-deep-claude/evals/evals.json +60 -0
  100. package/skills/init-deep-claude/references/code-project-template.md +57 -0
  101. package/skills/init-deep-claude/references/error-handling.md +118 -0
  102. package/skills/init-deep-claude/references/monorepo-strategy.md +100 -0
  103. package/skills/init-deep-claude/references/plain-directory-template.md +62 -0
  104. package/skills/java-architect/SKILL.md +132 -0
  105. package/skills/java-architect/references/jpa-optimization.md +393 -0
  106. package/skills/java-architect/references/reactive-webflux.md +356 -0
  107. package/skills/java-architect/references/spring-boot-setup.md +269 -0
  108. package/skills/java-architect/references/spring-security.md +445 -0
  109. package/skills/java-architect/references/testing-patterns.md +500 -0
  110. package/skills/java-coding-standards/SKILL.md +147 -0
  111. package/skills/java-testing/SKILL.md +34 -0
  112. package/skills/java-testing/evals/evals.json +46 -0
  113. package/skills/java-testing/references/junit-template.md +58 -0
  114. package/skills/meritdata-platform-2nd-dev-check/README.md +196 -0
  115. package/skills/meritdata-platform-2nd-dev-check/SKILL.md +209 -23
  116. package/skills/meritdata-platform-2nd-dev-check/agents/openai.yaml +33 -0
  117. package/skills/meritdata-platform-2nd-dev-check/checklists/checks.schema.json +22 -0
  118. package/skills/meritdata-platform-2nd-dev-check/checklists/dependency.chk.json +96 -0
  119. package/skills/meritdata-platform-2nd-dev-check/checklists/frontend.chk.json +69 -0
  120. package/skills/meritdata-platform-2nd-dev-check/checklists/integration.chk.json +78 -0
  121. package/skills/meritdata-platform-2nd-dev-check/checklists/naming.chk.json +78 -0
  122. package/skills/meritdata-platform-2nd-dev-check/checklists/package-structure.chk.json +87 -0
  123. package/skills/meritdata-platform-2nd-dev-check/checklists/security.chk.json +87 -0
  124. package/skills/meritdata-platform-2nd-dev-check/references/checklist.md +322 -0
  125. package/skills/meritdata-platform-2nd-dev-check/references/env-vars.md +232 -0
  126. package/skills/meritdata-platform-2nd-dev-check/references/fix-guide.md +433 -0
  127. package/skills/meritdata-platform-2nd-dev-check/scripts/apply-to-files.sh +238 -0
  128. package/skills/meritdata-platform-2nd-dev-check/scripts/check-backend.sh +171 -0
  129. package/skills/meritdata-platform-2nd-dev-check/scripts/check-conventions.sh +188 -0
  130. package/skills/meritdata-platform-2nd-dev-check/scripts/check-database.sh +128 -0
  131. package/skills/meritdata-platform-2nd-dev-check/scripts/check-frontend.sh +225 -0
  132. package/skills/meritdata-platform-2nd-dev-check/scripts/check-lib-version.sh +289 -0
  133. package/skills/meritdata-platform-2nd-dev-check/scripts/check-platform.sh +212 -0
  134. package/skills/meritdata-platform-2nd-dev-check/scripts/load-config.sh +189 -0
  135. package/skills/meritdata-platform-2nd-dev-check/scripts/run-all.sh +168 -0
  136. package/skills/meritdata-platform-2nd-dev-check/scripts/write-env.sh +147 -0
  137. package/skills/meritdata-platform-bootstrap-2nd-dev/SKILL.md +77 -0
  138. package/skills/meritdata-platform-bootstrap-2nd-dev/agents/openai.yaml +23 -0
  139. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/application.java.vm +32 -0
  140. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/banner.txt.vm +9 -0
  141. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/bootstrap.properties.vm +20 -0
  142. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/pom.xml.vm +202 -0
  143. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/entity/ProcTrackDTOApproval.java +36 -0
  144. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/Checker.java +39 -0
  145. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/LengthChecker.java +51 -0
  146. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/NumberChecker.java +49 -0
  147. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/RequiredChecker.java +39 -0
  148. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/SortNoChecker.java +31 -0
  149. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/SpecialCharChecker.java +47 -0
  150. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/UniqueChecker.java +30 -0
  151. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/Column.java +81 -0
  152. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/ImpConfig.java +126 -0
  153. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/RowData.java +68 -0
  154. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/Converter.java +28 -0
  155. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/DateConverter.java +31 -0
  156. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/LookUpConverter.java +53 -0
  157. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/SexConverter.java +45 -0
  158. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/RowDataLoader.java +158 -0
  159. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/impl/BeanRowDataLoader.java +18 -0
  160. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/impl/MapRowDataLoader.java +41 -0
  161. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/feign/MangeFeignClient.java +21 -0
  162. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/IImportHandler.java +24 -0
  163. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/AbstractImportHandler.java +172 -0
  164. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/BaseImportHandler.java +50 -0
  165. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/ImpCallable.java +53 -0
  166. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/importcommon/config/ConfigLoader.java +97 -0
  167. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/importcommon/util/ImportUtils.java +46 -0
  168. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/App.vue +12 -0
  169. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/Index.vue +18 -0
  170. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/i18n.js +13 -0
  171. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/langs/en_US.js +36 -0
  172. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/langs/zh_CN.js +36 -0
  173. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/index.js +14 -0
  174. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/main.js +21 -0
  175. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/router.js +16 -0
  176. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/store.js +20 -0
  177. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Add.vue +43 -0
  178. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Detail.vue +31 -0
  179. package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Grid.vue +44 -0
  180. package/skills/meritdata-platform-bootstrap-2nd-dev/references/README.md +9 -0
  181. package/skills/meritdata-platform-bootstrap-2nd-dev/scripts/bootstrap.ps1 +353 -0
  182. package/skills/meritdata-platform-bootstrap-2nd-dev/scripts/bootstrap.sh +350 -0
  183. package/skills/meritdata-platform-bpm/SKILL.md +94 -30
  184. package/skills/meritdata-platform-bpm/agents/openai.yaml +36 -0
  185. package/skills/meritdata-platform-bpm/examples/leave-flow/README.md +151 -0
  186. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20201_/345/211/215/347/275/256/346/235/241/344/273/266.md +11 -0
  187. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20202_/350/247/204/345/210/231/345/274/225/346/223/216/345/210/235/345/247/213/345/214/226/346/216/245/345/217/243.md +263 -0
  188. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20203_/345/220/257/345/212/250/346/265/201/347/250/213/345/256/236/344/276/213/346/216/245/345/217/243.md +187 -0
  189. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20204_/350/277/220/350/241/214/350/247/204/345/210/231/345/274/225/346/223/216.md +449 -0
  190. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20205_/345/256/214/346/210/220/344/273/273/345/212/241/346/216/245/345/217/243.md +232 -0
  191. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20206_/345/241/253/345/206/231/346/204/217/350/247/201/346/216/245/345/217/243.md +192 -0
  192. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20207_/346/240/271/346/215/256/344/273/273/345/212/241/350/212/202/347/202/271/350/216/267/345/217/226/346/204/217/350/247/201/345/206/205/345/256/271.md +212 -0
  193. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20208_/346/237/245/347/234/213/350/277/275/350/270/252/346/216/245/345/217/243.md +492 -0
  194. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20209_/351/200/200/345/233/236/346/213/237/347/250/277/344/272/272/346/216/245/345/217/243.md +187 -0
  195. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20210_/351/200/200/345/233/236/344/270/212/344/270/200/347/216/257/350/212/202/345/244/204/347/220/206/344/272/272/346/216/245/345/217/243.md +183 -0
  196. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20211_/346/265/201/347/250/213/350/256/276/350/256/241/345/231/250/345/210/227/350/241/250/346/237/245/350/257/242.md +314 -0
  197. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20212_/344/270/252/344/272/272/345/276/205/345/212/236.md +261 -0
  198. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20213_/351/230/205/347/237/245.md +306 -0
  199. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20214_/346/265/201/347/250/213/346/234/200/346/226/260/345/256/232/344/271/211ID.md +100 -0
  200. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20215_/344/270/232/345/212/241/347/233/270/345/205/263/346/216/245/345/217/243.md +637 -0
  201. package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20216_/346/265/201/347/250/213/345/210/206/347/261/273/347/233/270/345/205/263.md +176 -0
  202. package/skills/meritdata-platform-bpm/references/api-reference.md +2779 -0
  203. package/skills/meritdata-platform-bpm/references/bpm-engine-complete-methods.md +150 -0
  204. package/skills/meritdata-platform-bpm/references/bpm-engine-detail/12_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.1/345/267/245/344/275/234/346/265/201BpmEngine.md +86 -0
  205. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-00_/346/200/273/350/247/210.md +66 -0
  206. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +165 -0
  207. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20202_/347/273/204/344/273/266/344/270/216/346/226/271/346/263/225/346/246/202/350/247/210/350/241/250.md +45 -0
  208. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20203_BpmFormTools_-_BPM/350/241/250/345/215/225/345/267/245/345/205/267/347/273/204/344/273/266.md +145 -0
  209. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20204_BpmGridButtonsNew_-_BPM/350/241/250/346/240/274/346/214/211/351/222/256/347/273/204/344/273/266.md +239 -0
  210. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20205_/345/220/216/347/253/257BpmEngine/346/240/270/345/277/203/346/216/245/345/217/243.md +135 -0
  211. package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20206_/351/231/204/345/275/225.md +43 -0
  212. package/skills/meritdata-platform-bpm/references/components.md +618 -0
  213. package/skills/meritdata-platform-bpm/references/custom-assignee.md +28 -0
  214. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-00_/346/200/273/350/247/210.md +51 -0
  215. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20201_/345/256/236/347/216/260/347/255/226/347/225/245.md +30 -0
  216. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20202_/350/207/252/345/256/232/344/271/211_jar_/345/214/205/347/232/204/345/256/236/347/216/260/346/265/201/347/250/213.md +242 -0
  217. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20203_/350/207/252/345/256/232/344/271/211/346/234/215/345/212/241/346/220/255/345/273/272/357/274/210/350/213/245/345/267/262/345/255/230/345/234/250/345/267/245/347/250/213/345/222/214/346/216/245/345/217/243/357/274/214/346/255/244/346/255/245/351/252/244/345/217/257/347/234/201/347/225/245/357/274/211.md +150 -0
  218. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20204_/346/265/201/347/250/213/350/256/276/350/256/241/344/270/255/350/256/276/347/275/256_listener_/345/217/202/346/225/260.md +44 -0
  219. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20205_/346/265/213/350/257/225/350/247/246/345/217/221/346/265/201/347/250/213/347/233/221/345/220/254/344/272/213/344/273/266/346/230/257/345/220/246/347/224/237/346/225/210.md +42 -0
  220. package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20206_/345/244/207/346/263/250/357/274/232.md +26 -0
  221. package/skills/meritdata-platform-bpm/references/listener-expression.md +304 -0
  222. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-00_/346/200/273/350/247/210.md +25 -0
  223. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20201_/350/203/214/346/231/257.md +12 -0
  224. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20202_/345/267/245/344/275/234/346/265/201/347/233/270/345/205/263/344/273/213/347/273/215.md +28 -0
  225. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20203_/345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260/346/265/201/347/250/213/345/214/205/345/220/253/346/250/241/345/235/227.md +18 -0
  226. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20204_/346/265/201/347/250/213/345/212/237/350/203/275/346/250/241/345/235/227/344/273/213/347/273/215.md +284 -0
  227. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20205_/346/265/201/347/250/213/345/220/216/347/253/257/350/256/276/350/256/241.md +226 -0
  228. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/211/215/347/253/257/350/256/276/350/256/241.md +80 -0
  229. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20207_/344/272/214/346/254/241/345/274/200/345/217/221.md +38 -0
  230. package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20208_/344/270/252/344/272/272/346/240/267/344/276/213/346/265/201/347/250/213/347/232/204/351/205/215/347/275/256.md +92 -0
  231. package/skills/meritdata-platform-bpm/references/module-design.md +342 -0
  232. package/skills/meritdata-platform-bpm/references/process-track.md +172 -0
  233. package/skills/meritdata-platform-bpm/references/todo-portal.md +239 -0
  234. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-00_/346/200/273/350/247/210.md +84 -0
  235. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20201_/346/240/267/344/276/213/350/257/264/346/230/216.md +37 -0
  236. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20202_/345/220/216/347/253/257/345/267/245/347/250/213/345/210/233/345/273/272.md +39 -0
  237. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20203_/345/220/216/347/253/257/345/267/245/347/250/213/351/205/215/347/275/256.md +234 -0
  238. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20204_/345/220/216/347/253/257/345/267/245/347/250/213/344/270/232/345/212/241/347/261/273/345/210/233/345/273/272.md +549 -0
  239. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20205_/345/220/257/345/212/250/345/220/216/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +49 -0
  240. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/272/224/347/224/250/345/211/215/347/253/257/345/274/200/345/217/221.md +1443 -0
  241. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20207_/345/220/257/345/212/250/345/211/215/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +78 -0
  242. package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20208_/346/265/201/347/250/213/350/256/276/350/256/241.md +98 -0
  243. package/skills/meritdata-platform-bpm/references/workflow-dev.md +2037 -0
  244. package/skills/meritdata-platform-cache/SKILL.md +47 -36
  245. package/skills/meritdata-platform-cache/agents/openai.yaml +21 -0
  246. package/skills/meritdata-platform-cache/references/api-quick-ref.md +69 -0
  247. package/skills/meritdata-platform-cache/references/cache.md +226 -0
  248. package/skills/meritdata-platform-cloud-dev/SKILL.md +192 -74
  249. package/skills/meritdata-platform-cloud-dev/agents/openai.yaml +40 -0
  250. package/skills/meritdata-platform-cloud-dev/references/modules/bpm.md +39 -0
  251. package/skills/meritdata-platform-cloud-dev/references/modules/cache.md +28 -0
  252. package/skills/meritdata-platform-cloud-dev/references/modules/config.md +31 -0
  253. package/skills/meritdata-platform-cloud-dev/references/modules/data-boundary.md +44 -0
  254. package/skills/meritdata-platform-cloud-dev/references/modules/datasource.md +30 -0
  255. package/skills/meritdata-platform-cloud-dev/references/modules/domain-model.md +40 -0
  256. package/skills/meritdata-platform-cloud-dev/references/modules/feign-api.md +41 -0
  257. package/skills/meritdata-platform-cloud-dev/references/modules/file.md +30 -0
  258. package/skills/meritdata-platform-cloud-dev/references/modules/gen.md +215 -0
  259. package/skills/meritdata-platform-cloud-dev/references/modules/governance.md +51 -0
  260. package/skills/meritdata-platform-cloud-dev/references/modules/http-client.md +40 -0
  261. package/skills/meritdata-platform-cloud-dev/references/modules/impexp.md +26 -0
  262. package/skills/meritdata-platform-cloud-dev/references/modules/logging.md +29 -0
  263. package/skills/meritdata-platform-cloud-dev/references/modules/masterdata-sync.md +36 -0
  264. package/skills/meritdata-platform-cloud-dev/references/modules/msg-job.md +27 -0
  265. package/skills/meritdata-platform-cloud-dev/references/modules/platform-entities.md +40 -0
  266. package/skills/meritdata-platform-cloud-dev/references/modules/platform.md +62 -0
  267. package/skills/meritdata-platform-cloud-dev/references/modules/services.md +37 -0
  268. package/skills/meritdata-platform-cloud-dev/references/modules/spec.md +47 -0
  269. package/skills/meritdata-platform-cloud-dev/references/modules/ui.md +51 -0
  270. package/skills/meritdata-platform-cloud-dev/references/modules/utils.md +31 -0
  271. package/skills/meritdata-platform-cloud-dev/references/modules/webapi.md +35 -0
  272. package/skills/meritdata-platform-code-review-by-rules/SKILL.md +174 -0
  273. package/skills/meritdata-platform-code-review-by-rules/agents/openai.yaml +13 -0
  274. package/skills/meritdata-platform-config-item/SKILL.md +55 -0
  275. package/skills/meritdata-platform-config-item/agents/openai.yaml +14 -0
  276. package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-00_/346/200/273/350/247/210.md +49 -0
  277. package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20201_/345/272/224/347/224/250/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +28 -0
  278. package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20202_/351/205/215/347/275/256/344/270/255/345/277/203/351/205/215/347/275/256/351/241/271/350/257/264/346/230/216.md +876 -0
  279. package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20203_/351/205/215/347/275/256/351/241/271/347/232/204/344/275/277/347/224/250.md +45 -0
  280. package/skills/meritdata-platform-config-item/references/nacos-utils-api.md +76 -0
  281. package/skills/meritdata-platform-config-item/references/nacos.md +140 -0
  282. package/skills/meritdata-platform-core/SKILL.md +77 -0
  283. package/skills/meritdata-platform-core/agents/openai.yaml +37 -0
  284. package/skills/meritdata-platform-core/references/assets/02_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-SysCacheServiceFacade.md +423 -0
  285. package/skills/meritdata-platform-core/references/assets/03_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-StringCacheFacade.md +78 -0
  286. package/skills/meritdata-platform-core/references/assets/04_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.2/351/205/215/347/275/256/344/270/255/345/277/203-NacosUtils.md +193 -0
  287. package/skills/meritdata-platform-core/references/assets/17_/351/231/204/345/275/225-/347/273/237/350/256/241/346/261/207/346/200/273-Maven/344/276/235/350/265/226-/346/263/250/346/204/217/344/272/213/351/241/271.md +131 -0
  288. package/skills/meritdata-platform-core/references/cache.md +237 -0
  289. package/skills/meritdata-platform-core/references/crypto.md +82 -0
  290. package/skills/meritdata-platform-core/references/data-secret.md +49 -0
  291. package/skills/meritdata-platform-core/references/logging.md +256 -0
  292. package/skills/meritdata-platform-core/references/nacos.md +140 -0
  293. package/skills/meritdata-platform-core/references/session.md +125 -0
  294. package/skills/meritdata-platform-crypto-gm/SKILL.md +62 -0
  295. package/skills/meritdata-platform-crypto-gm/agents/openai.yaml +15 -0
  296. package/skills/meritdata-platform-crypto-gm/references/api-quick-ref.md +39 -0
  297. package/skills/meritdata-platform-crypto-gm/references/assets/05_/344/272/214/351/200/232/347/224/250/345/267/245/345/205/267-2.1/345/212/240/350/247/243/345/257/206-SM2-SM3-SM4.md +176 -0
  298. package/skills/meritdata-platform-crypto-gm/references/contract-signing.md +60 -0
  299. package/skills/meritdata-platform-crypto-gm/references/crypto.md +144 -0
  300. package/skills/meritdata-platform-crypto-gm/references/key-management.md +48 -0
  301. package/skills/meritdata-platform-data-secret/SKILL.md +49 -0
  302. package/skills/meritdata-platform-data-secret/agents/openai.yaml +13 -0
  303. package/skills/meritdata-platform-data-secret/references/assets/10_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.4/345/244/232/347/263/273/347/273/237/351/233/206/346/210/220+3.5/346/225/260/346/215/256/345/257/206/347/272/247.md +91 -0
  304. package/skills/meritdata-platform-data-secret/references/data-secret.md +89 -0
  305. package/skills/meritdata-platform-data-secret/references/secret-api.md +35 -0
  306. package/skills/meritdata-platform-data-secret/references/secret-level-spec.md +231 -0
  307. package/skills/meritdata-platform-deploy/SKILL.md +73 -0
  308. package/skills/meritdata-platform-deploy/agents/openai.yaml +27 -0
  309. package/skills/meritdata-platform-entities/SKILL.md +81 -0
  310. package/skills/meritdata-platform-entities/agents/openai.yaml +34 -0
  311. package/skills/meritdata-platform-entities/references/entity-catalog.md +194 -0
  312. package/skills/meritdata-platform-frontend/SKILL.md +73 -38
  313. package/skills/meritdata-platform-frontend/agents/openai.yaml +31 -0
  314. package/skills/meritdata-platform-frontend/examples/user-list-page/README.md +331 -0
  315. package/skills/meritdata-platform-frontend/references/components.md +424 -283
  316. package/skills/meritdata-platform-frontend/references/utils.md +176 -0
  317. package/skills/meritdata-platform-impexp/SKILL.md +65 -30
  318. package/skills/meritdata-platform-impexp/agents/openai.yaml +33 -0
  319. package/skills/meritdata-platform-impexp/examples/excel-export/README.md +146 -0
  320. package/skills/meritdata-platform-impexp/examples/excel-import/README.md +246 -0
  321. package/skills/meritdata-platform-integration/SKILL.md +102 -0
  322. package/skills/meritdata-platform-integration/agents/openai.yaml +33 -0
  323. package/skills/meritdata-platform-integration/references/external-api/full/19_1.1-1.6/345/237/272/347/241/200/351/205/215/347/275/256-/345/271/263/345/217/260/344/277/241/346/201/257/347/261/273.md +371 -0
  324. package/skills/meritdata-platform-integration/references/external-api/full/20_1.7-1.10/345/237/272/347/241/200/351/205/215/347/275/256-/351/241/265/351/235/242/344/270/216/346/266/210/346/201/257/347/261/273.md +344 -0
  325. package/skills/meritdata-platform-integration/references/external-api/full/21_1.11-1.15/345/237/272/347/241/200/351/205/215/347/275/256-/346/266/210/346/201/257/344/270/216/351/205/215/347/275/256/347/261/273.md +302 -0
  326. package/skills/meritdata-platform-integration/references/external-api/full/22_1.16/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245.md +326 -0
  327. package/skills/meritdata-platform-integration/references/external-api/full/23_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/212/345/215/212.md +303 -0
  328. package/skills/meritdata-platform-integration/references/external-api/full/24_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/213/345/215/212.md +355 -0
  329. package/skills/meritdata-platform-integration/references/external-api/full/25_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/212/345/215/212.md +459 -0
  330. package/skills/meritdata-platform-integration/references/external-api/full/26_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/213/345/215/212.md +567 -0
  331. package/skills/meritdata-platform-integration/references/external-api/full/27_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/212/345/215/212.md +838 -0
  332. package/skills/meritdata-platform-integration/references/external-api/full/28_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/213/345/215/212.md +585 -0
  333. package/skills/meritdata-platform-integration/references/external-api/full/29_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/212/345/215/212.md +576 -0
  334. package/skills/meritdata-platform-integration/references/external-api/full/30_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/213/345/215/212.md +597 -0
  335. package/skills/meritdata-platform-integration/references/external-api/full/31_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/212/345/215/212.md +490 -0
  336. package/skills/meritdata-platform-integration/references/external-api/full/32_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/213/345/215/212.md +560 -0
  337. package/skills/meritdata-platform-integration/references/external-api/full/33_2.5/345/267/245/344/275/234/347/273/204/347/273/264/346/212/244.md +209 -0
  338. package/skills/meritdata-platform-integration/references/external-api/full/34_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/212/345/215/212.md +653 -0
  339. package/skills/meritdata-platform-integration/references/external-api/full/35_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/213/345/215/212.md +591 -0
  340. package/skills/meritdata-platform-integration/references/external-api/full/36_3.1-3.7/350/265/204/346/272/220/346/216/210/346/235/203/345/237/272/347/241/200.md +827 -0
  341. package/skills/meritdata-platform-integration/references/external-api/full/37_3.8-3.10/350/265/204/346/272/220/346/216/210/346/235/203/350/277/233/351/230/266.md +458 -0
  342. package/skills/meritdata-platform-integration/references/external-api/full/38_3.11/345/237/272/347/241/200/346/225/260/346/215/256.md +210 -0
  343. package/skills/meritdata-platform-integration/references/external-api/full/39_3.12/346/225/260/346/215/256/346/272/220/347/273/264/346/212/244.md +281 -0
  344. package/skills/meritdata-platform-integration/references/external-api/full/40_3.13/347/254/254/344/270/211/346/226/271/350/265/204/346/272/220/347/273/264/346/212/244.md +310 -0
  345. package/skills/meritdata-platform-integration/references/external-api/full/41_3.14/346/234/215/345/212/241/347/256/241/347/220/206.md +521 -0
  346. package/skills/meritdata-platform-integration/references/external-api/full/42_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/212/345/215/212.md +767 -0
  347. package/skills/meritdata-platform-integration/references/external-api/full/43_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/213/345/215/212.md +378 -0
  348. package/skills/meritdata-platform-integration/references/external-api/full/44_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/212/345/215/212.md +311 -0
  349. package/skills/meritdata-platform-integration/references/external-api/full/45_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/213/345/215/212.md +242 -0
  350. package/skills/meritdata-platform-integration/references/external-api/full/46_3.17/345/241/253/346/212/245/346/212/245/350/241/250+3.18/351/252/214/350/257/201/347/240/201.md +178 -0
  351. package/skills/meritdata-platform-integration/references/external-api/full/47_3.19/345/267/245/344/275/234/345/217/260/347/273/264/346/212/244.md +196 -0
  352. package/skills/meritdata-platform-integration/references/external-api/full/48_3.20/350/260/203/345/272/246/347/274/226/346/216/222.md +106 -0
  353. package/skills/meritdata-platform-integration/references/external-api/full/49_/351/231/204/345/275/225-4.1-4.3/350/277/224/345/233/236/347/240/201/344/270/216/347/211/210/346/234/254/346/270/205/345/215/225.md +43 -0
  354. package/skills/meritdata-platform-integration/references/external-api.md +260 -0
  355. package/skills/meritdata-platform-integration/references/notification-detail/11_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.6/346/234/215/345/212/241/351/200/232/347/237/245-CloudFeignMessageClient.md +467 -0
  356. package/skills/meritdata-platform-integration/references/org-user-sync.md +121 -0
  357. package/skills/meritdata-platform-integration/references/service-notification.md +168 -0
  358. package/skills/meritdata-platform-job/SKILL.md +76 -30
  359. package/skills/meritdata-platform-job/agents/openai.yaml +30 -0
  360. package/skills/meritdata-platform-job/references/iclient-detail/13_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.2/350/260/203/345/272/246/347/273/204/344/273/266ICloudClient.md +92 -0
  361. package/skills/meritdata-platform-job/references/ijobapi-detail/14_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.3/345/256/232/346/227/266/344/273/273/345/212/241IJobApi.md +59 -0
  362. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-00_/346/200/273/350/247/210.md +49 -0
  363. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20201_/344/275/277/347/224/250/350/203/214/346/231/257.md +12 -0
  364. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20202_/346/233/264/346/226/260/350/256/260/345/275/225.md +14 -0
  365. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20203_/350/260/203/345/272/246/347/233/270/345/205/263/345/272/224/347/224/250/345/214/205.md +15 -0
  366. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20204_/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +23 -0
  367. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20205_/350/260/203/345/272/246/345/212/237/350/203/275/344/275/277/347/224/250.md +132 -0
  368. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20206_/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +14 -0
  369. package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20207_/345/257/271/345/244/226/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +245 -0
  370. package/skills/meritdata-platform-job/references/scheduler.md +13 -0
  371. package/skills/meritdata-platform-job/references/xxl-job.md +30 -0
  372. package/skills/meritdata-platform-logging/SKILL.md +54 -0
  373. package/skills/meritdata-platform-logging/agents/openai.yaml +16 -0
  374. package/skills/meritdata-platform-logging/references/api-quick-ref.md +90 -0
  375. package/skills/meritdata-platform-logging/references/assets/06_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/234/215/345/212/241-ILogPostService.md +323 -0
  376. package/skills/meritdata-platform-logging/references/assets/07_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/263/250/350/247/243-LogDesc-LogOperation.md +210 -0
  377. package/skills/meritdata-platform-logging/references/logging.md +256 -0
  378. package/skills/meritdata-platform-menu-config/SKILL.md +218 -39
  379. package/skills/meritdata-platform-menu-config/agents/openai.yaml +22 -0
  380. package/skills/meritdata-platform-menu-config/references/README.md +10 -0
  381. package/skills/meritdata-platform-menu-config/references/environment.md +32 -0
  382. package/skills/meritdata-platform-menu-config/references/field-mapping.md +64 -0
  383. package/skills/meritdata-platform-menu-config/references/insert-menu-template.sql +89 -0
  384. package/skills/meritdata-platform-menu-config/references/troubleshooting.md +177 -0
  385. package/skills/meritdata-platform-messaging/SKILL.md +56 -0
  386. package/skills/meritdata-platform-messaging/agents/openai.yaml +15 -0
  387. package/skills/meritdata-platform-messaging/references/announcement-api.md +258 -0
  388. package/skills/meritdata-platform-messaging/references/feign-client.md +83 -0
  389. package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-00_/346/200/273/350/247/210.md +56 -0
  390. package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20201_/346/266/210/346/201/257/344/270/255/345/277/203/344/275/277/347/224/250/345/234/272/346/231/257.md +12 -0
  391. package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20202_/346/266/210/346/201/257/344/270/255/345/277/203/351/241/265/351/235/242/345/212/237/350/203/275/344/275/277/347/224/250.md +396 -0
  392. package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20203_/346/266/210/346/201/257/344/270/255/345/277/203/346/216/245/345/217/243/345/212/237/350/203/275/344/275/277/347/224/250.md +578 -0
  393. package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20204_/351/231/204/357/274/232/351/231/204/344/273/266/344/270/212/344/274/240/344/270/213/350/275/275/345/210/240/351/231/244/346/216/245/345/217/243.md +183 -0
  394. package/skills/meritdata-platform-nacos-importer/SKILL.md +120 -0
  395. package/skills/meritdata-platform-nacos-importer/agents/openai.yaml +22 -0
  396. package/skills/meritdata-platform-nacos-importer/references/README.md +9 -0
  397. package/skills/meritdata-platform-nacos-importer/scripts/import-nacos.ps1 +95 -0
  398. package/skills/meritdata-platform-nacos-importer/scripts/import-nacos.sh +100 -0
  399. package/skills/meritdata-platform-org-sync/SKILL.md +72 -0
  400. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-00_/346/200/273/350/247/210.md +99 -0
  401. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +16 -0
  402. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20202_/347/273/204/347/273/207/345/220/214/346/255/245.md +318 -0
  403. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20203_/344/272/272/345/221/230/345/220/214/346/255/245.md +187 -0
  404. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20204_/350/265/204/346/272/220/350/217/234/345/215/225/345/220/214/346/255/245.md +124 -0
  405. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20205_/350/247/222/350/211/262/345/220/214/346/255/245.md +79 -0
  406. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20206_/350/265/204/346/272/220/346/235/203/351/231/220/345/220/214/346/255/245.md +116 -0
  407. package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20207_/347/273/204/347/273/207/345/220/214/346/255/245/351/205/215/347/275/256.md +173 -0
  408. package/skills/meritdata-platform-playbook/SKILL.md +172 -30
  409. package/skills/meritdata-platform-playbook/agents/openai.yaml +29 -0
  410. package/skills/meritdata-platform-playbook/examples/existing-increment/README.md +83 -0
  411. package/skills/meritdata-platform-playbook/examples/new-project/README.md +73 -0
  412. package/skills/meritdata-platform-playbook/references/code-spec.md +67 -0
  413. package/skills/meritdata-platform-playbook/references/full-workflow.md +299 -0
  414. package/skills/meritdata-platform-playbook/references/git-integration.md +111 -0
  415. package/skills/meritdata-platform-playbook/references/governance.md +97 -0
  416. package/skills/meritdata-platform-playbook/references/legacy-detect.md +154 -0
  417. package/skills/meritdata-platform-playbook/references/public-entry-map.json +135 -0
  418. package/skills/meritdata-platform-playbook/references/skill-decision-tree.md +125 -0
  419. package/skills/meritdata-platform-playbook/references/svn-integration.md +117 -0
  420. package/skills/meritdata-platform-portal-customization/SKILL.md +78 -0
  421. package/skills/meritdata-platform-portal-customization/references/cloud-utils-theme-generator.md +97 -0
  422. package/skills/meritdata-platform-portal-customization/references/home-frame-config-api.md +145 -0
  423. package/skills/meritdata-platform-portal-customization/references/portal-frontend-layouts.md +160 -0
  424. package/skills/meritdata-platform-portal-customization/references/portal-product-config.md +78 -0
  425. package/skills/meritdata-platform-portal-customization/references/theme-management.md +144 -0
  426. package/skills/meritdata-platform-portal-customization/references/workbench-entities.md +134 -0
  427. package/skills/meritdata-platform-resource-auth/SKILL.md +49 -0
  428. package/skills/meritdata-platform-resource-auth/agents/openai.yaml +14 -0
  429. package/skills/meritdata-platform-resource-auth/references/endpoints.md +171 -0
  430. package/skills/meritdata-platform-session/SKILL.md +41 -36
  431. package/skills/meritdata-platform-session/agents/openai.yaml +9 -0
  432. package/skills/meritdata-platform-session/references/api-quick-ref.md +52 -0
  433. package/skills/meritdata-platform-session/references/assets/08_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/344/274/232/350/257/235/344/277/241/346/201/257-SessionUtils.md +349 -0
  434. package/skills/meritdata-platform-session/references/assets/09_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/345/234/250/347/272/277/347/224/250/346/210/267-IUserOnlineTime.md +63 -0
  435. package/skills/meritdata-platform-session/references/session.md +125 -0
  436. package/skills/meritdata-platform-sso/SKILL.md +49 -31
  437. package/skills/meritdata-platform-sso/agents/openai.yaml +19 -0
  438. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-00_/346/200/273/350/247/210.md +47 -0
  439. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20201_/347/263/273/347/273/237/350/256/244/350/257/201/351/233/206/346/210/220/344/273/213/347/273/215.md +14 -0
  440. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20202_token_/350/256/244/350/257/201/351/233/206/346/210/220.md +568 -0
  441. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20203_cas_/347/273/237/344/270/200/350/256/244/350/257/201/344/270/255/345/277/203.md +128 -0
  442. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20204_/347/254/254/344/270/211/346/226/271/350/256/244/350/257/201/344/270/255/345/277/203.md +151 -0
  443. package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20205_/351/231/204/345/275/225_1_/350/256/244/350/257/201/344/270/255/345/277/203/347/253/257/351/205/215/347/275/256.md +93 -0
  444. package/skills/meritdata-platform-sso/references/cas-token-flow.md +52 -0
  445. package/skills/meritdata-platform-sso/references/iportal-sso-api.md +66 -0
  446. package/skills/meritdata-platform-sso/references/spring-session-pitfalls.md +71 -0
  447. package/skills/meritdata-platform-ui-components/SKILL.md +64 -36
  448. package/skills/meritdata-platform-ui-components/agents/openai.yaml +33 -0
  449. package/skills/meritdata-platform-ui-components/references/catalog/15_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/212/345/215/212.md +514 -0
  450. package/skills/meritdata-platform-ui-components/references/catalog/16_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/213/345/215/212.md +302 -0
  451. package/skills/meritdata-platform-ui-components/references/components-api.md +166 -0
  452. package/skills/meritdata-platform-ui-components/references/utils-and-meritbpm.md +98 -0
  453. package/skills/prototype/LOGIC.md +79 -0
  454. package/skills/prototype/SKILL.md +26 -0
  455. package/skills/prototype/UI.md +112 -0
  456. package/skills/prototype/agents/openai.yaml +3 -0
  457. package/skills/receiving-code-review/SKILL.md +205 -0
  458. package/skills/requesting-code-review/SKILL.md +95 -0
  459. package/skills/requesting-code-review/code-reviewer.md +172 -0
  460. package/skills/requirement-low-level-check/SKILL.md +84 -0
  461. package/skills/requirement-low-level-check/references//344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +139 -0
  462. package/skills/requirement-low-level-check/references//344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +210 -0
  463. package/skills/requirement-pm-review/SKILL.md +181 -0
  464. package/skills/requirement-pm-review/references/PM/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +223 -0
  465. package/skills/requirement-review/SKILL.md +212 -0
  466. package/skills/requirement-review/references//351/234/200/346/261/202/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +99 -0
  467. package/skills/requirement-review-report/SKILL.md +152 -0
  468. package/skills/requirement-review-report/references//351/234/200/346/261/202/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +187 -0
  469. package/skills/research/SKILL.md +12 -0
  470. package/skills/research/agents/openai.yaml +3 -0
  471. package/skills/resolving-merge-conflicts/SKILL.md +14 -0
  472. package/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  473. package/skills/rest-api-design/SKILL.md +90 -0
  474. package/skills/rest-api-design/references/complete-example-expressjs.md +114 -0
  475. package/skills/rest-api-design/references/http-status-codes.md +65 -0
  476. package/skills/rest-api-design/references/openapi-documentation.md +92 -0
  477. package/skills/rest-api-design/references/query-parameters.md +23 -0
  478. package/skills/rest-api-design/references/request-examples.md +50 -0
  479. package/skills/rest-api-design/references/resource-naming.md +35 -0
  480. package/skills/rest-api-design/references/response-formats.md +70 -0
  481. package/skills/rest-api-design/scripts/validate-api.sh +18 -0
  482. package/skills/rest-api-design/templates/api-scaffold.yaml +22 -0
  483. package/skills/security-review/SKILL.md +527 -0
  484. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  485. package/skills/setup-matt-pocock-skills/SKILL.md +116 -0
  486. package/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  487. package/skills/setup-matt-pocock-skills/domain.md +51 -0
  488. package/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  489. package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  490. package/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  491. package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  492. package/skills/setup-pre-commit/SKILL.md +91 -0
  493. package/skills/setup-pre-commit/agents/openai.yaml +3 -0
  494. package/skills/speckit-analyze/SKILL.md +260 -0
  495. package/skills/speckit-checklist/SKILL.md +372 -0
  496. package/skills/speckit-clarify/SKILL.md +254 -0
  497. package/skills/speckit-constitution/SKILL.md +157 -0
  498. package/skills/speckit-git-commit/SKILL.md +53 -0
  499. package/skills/speckit-git-feature/SKILL.md +72 -0
  500. package/skills/speckit-git-initialize/SKILL.md +54 -0
  501. package/skills/speckit-git-remote/SKILL.md +50 -0
  502. package/skills/speckit-git-validate/SKILL.md +54 -0
  503. package/skills/speckit-implement/SKILL.md +209 -0
  504. package/skills/speckit-plan/SKILL.md +152 -0
  505. package/skills/speckit-specify/SKILL.md +330 -0
  506. package/skills/speckit-tasks/SKILL.md +202 -0
  507. package/skills/speckit-taskstoissues/SKILL.md +106 -0
  508. package/skills/springboot-patterns/SKILL.md +313 -0
  509. package/skills/springboot-security/SKILL.md +272 -0
  510. package/skills/springboot-tdd/SKILL.md +158 -0
  511. package/skills/subagent-driven-development/SKILL.md +503 -0
  512. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  513. package/skills/subagent-driven-development/implementer-prompt.md +142 -0
  514. package/skills/subagent-driven-development/re-review-prompt.md +106 -0
  515. package/skills/subagent-driven-development/scripts/review-package +46 -0
  516. package/skills/subagent-driven-development/scripts/sdd-workspace +40 -0
  517. package/skills/subagent-driven-development/scripts/task-brief +41 -0
  518. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  519. package/skills/subagent-driven-development/task-reviewer-prompt.md +185 -0
  520. package/skills/system-design/SKILL.md +42 -0
  521. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  522. package/skills/systematic-debugging/SKILL.md +283 -0
  523. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  524. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  525. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  526. package/skills/systematic-debugging/find-polluter.sh +72 -0
  527. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  528. package/skills/systematic-debugging/test-academic.md +14 -0
  529. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  530. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  531. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  532. package/skills/tdd/SKILL.md +36 -0
  533. package/skills/tdd/agents/openai.yaml +3 -0
  534. package/skills/tdd/mocking.md +59 -0
  535. package/skills/tdd/tests.md +77 -0
  536. package/skills/teach/GLOSSARY-FORMAT.md +35 -0
  537. package/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  538. package/skills/teach/MISSION-FORMAT.md +31 -0
  539. package/skills/teach/RESOURCES-FORMAT.md +32 -0
  540. package/skills/teach/SKILL.md +140 -0
  541. package/skills/teach/agents/openai.yaml +5 -0
  542. package/skills/tech-design-doc/SKILL.md +160 -0
  543. package/skills/tech-design-doc/description_ar.txt +1 -0
  544. package/skills/tech-design-doc/description_cn.txt +1 -0
  545. package/skills/tech-design-doc/description_de.txt +1 -0
  546. package/skills/tech-design-doc/description_en.txt +1 -0
  547. package/skills/tech-design-doc/description_es.txt +1 -0
  548. package/skills/tech-design-doc/description_fr.txt +1 -0
  549. package/skills/tech-design-doc/description_it.txt +1 -0
  550. package/skills/tech-design-doc/description_ja.txt +1 -0
  551. package/skills/tech-design-doc/description_ko.txt +1 -0
  552. package/skills/tech-design-doc/description_ru.txt +1 -0
  553. package/skills/tech-design-doc/description_tw.txt +1 -0
  554. package/skills/tech-design-doc/stats.json +4 -0
  555. package/skills/test-driven-development/SKILL.md +320 -0
  556. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  557. package/skills/test-driven-development/writing-good-tests.md +198 -0
  558. package/skills/test-fixing/SKILL.md +121 -0
  559. package/skills/test-master/SKILL.md +94 -0
  560. package/skills/test-master/references/automation-frameworks.md +294 -0
  561. package/skills/test-master/references/e2e-testing.md +128 -0
  562. package/skills/test-master/references/integration-testing.md +120 -0
  563. package/skills/test-master/references/performance-testing.md +118 -0
  564. package/skills/test-master/references/qa-methodology.md +247 -0
  565. package/skills/test-master/references/security-testing.md +127 -0
  566. package/skills/test-master/references/tdd-iron-laws.md +174 -0
  567. package/skills/test-master/references/test-reports.md +104 -0
  568. package/skills/test-master/references/testing-anti-patterns.md +231 -0
  569. package/skills/test-master/references/unit-testing.md +113 -0
  570. package/skills/to-spec/SKILL.md +75 -0
  571. package/skills/to-spec/agents/openai.yaml +5 -0
  572. package/skills/to-tickets/SKILL.md +105 -0
  573. package/skills/to-tickets/agents/openai.yaml +5 -0
  574. package/skills/triage/AGENT-BRIEF.md +207 -0
  575. package/skills/triage/OUT-OF-SCOPE.md +105 -0
  576. package/skills/triage/SKILL.md +112 -0
  577. package/skills/triage/agents/openai.yaml +5 -0
  578. package/skills/ui-ux-pro-max/SKILL.md +43 -0
  579. package/skills/ui-ux-pro-max/_meta.json +6 -0
  580. package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
  581. package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
  582. package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
  583. package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
  584. package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
  585. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
  586. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
  587. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
  588. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
  589. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
  590. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
  591. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
  592. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
  593. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
  594. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
  595. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
  596. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
  597. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
  598. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
  599. package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
  600. package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
  601. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
  602. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
  603. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
  604. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  605. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  606. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  607. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  608. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  609. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  610. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  611. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  612. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  613. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  614. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  615. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  616. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  617. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  618. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  619. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  620. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  621. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  622. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  623. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  624. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  625. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  626. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  627. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  628. package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
  629. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
  630. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  631. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  632. package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
  633. package/skills/ui-ux-pro-max/scripts/search.py +111 -0
  634. package/skills/using-git-worktrees/SKILL.md +167 -0
  635. package/skills/using-superpowers/SKILL.md +62 -0
  636. package/skills/using-superpowers/references/antigravity-tools.md +23 -0
  637. package/skills/using-superpowers/references/codex-tools.md +39 -0
  638. package/skills/using-superpowers/references/gemini-tools.md +63 -0
  639. package/skills/using-superpowers/references/pi-tools.md +16 -0
  640. package/skills/verification-before-completion/SKILL.md +120 -0
  641. package/skills/wait-what/SKILL.md +7 -0
  642. package/skills/wait-what/agents/openai.yaml +5 -0
  643. package/skills/wayfinder/SKILL.md +128 -0
  644. package/skills/wayfinder/agents/openai.yaml +5 -0
  645. package/skills/write-design-document-by-template/SKILL.md +97 -0
  646. package/skills/write-design-document-by-template/references//350/256/276/350/256/241/350/257/264/346/230/216/344/271/246/346/250/241/346/235/277.md +235 -0
  647. package/skills/write-requirement-document-by-template/SKILL.md +98 -0
  648. package/skills/write-requirement-document-by-template/references//351/234/200/346/261/202/350/257/264/346/230/216/344/271/246/346/250/241/346/235/277.md +150 -0
  649. package/skills/writing-great-skills/GLOSSARY.md +201 -0
  650. package/skills/writing-great-skills/SKILL.md +83 -0
  651. package/skills/writing-great-skills/agents/openai.yaml +5 -0
  652. package/skills/writing-plans/SKILL.md +168 -0
  653. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  654. package/skills/writing-skills/SKILL.md +679 -0
  655. package/skills/writing-skills/anthropic-best-practices.md +1150 -0
  656. package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  657. package/skills/writing-skills/graphviz-conventions.dot +172 -0
  658. package/skills/writing-skills/persuasion-principles.md +187 -0
  659. package/skills/writing-skills/render-graphs.js +168 -0
  660. package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
@@ -0,0 +1,2037 @@
1
+ <!-- ⚠️ 业务实体根包待确认:TravelExpense 不应在 com.meritdata.cloud.entity 下,应为 com.<公司>.<项目>.entity -->
2
+ ## 样例说明
3
+
4
+ 本文件保留历史差旅报销样例的结构,不是可直接部署的模板。先用目标项目的 BOM、JDK、网关、Nacos、认证与前端构建配置替换全部占位项;历史截图、默认账号和环境地址已移除。
5
+ - <b>案例:</b> 差旅费报销功能的开发案例
6
+ - <b>场景说明</b>
7
+ - 员工填写差旅费报销单,包括出差地,出差时间,出差费用等,将差旅费报销单提交给部门领导。
8
+ - 部门领导审批,如果审批结束(批准或者不批准),流程结束。如果需要员工修改申请,退回去给员工进行修改。
9
+ - <b>流程应用后端工程:</b>`<business-service>`
10
+ - 功能简介:
11
+ - 1.根据条件查找差旅费
12
+ - 2.删除差旅费
13
+ - 3.修改差旅费
14
+ - 4.保存差旅费
15
+ - <b>流程应用前端工程:</b>`<frontend-app>`
16
+ - 功能简介:
17
+ - 1.引入流程按钮
18
+ - 2.查看差旅费表单界面
19
+ - 3.编辑/新增差旅费表单界面
20
+ - <b>参考文档</b>
21
+ 《二次开发--流程接口》
22
+ **以下为手动搭建方案,另一种方案直接利用代码生成工具生成流程前后端应用,具体生成指导见代码生成工具文档**。
23
+
24
+ ## 目录
25
+
26
+ - [样例说明](#样例说明)
27
+ - [1. 后端工程创建](#1-后端工程创建)
28
+ - [2. 后端工程配置](#2-后端工程配置)
29
+ - [3. 后端工程业务类创建](#3-后端工程业务类创建)
30
+ - [4. 启动后端应用工程](#4-启动后端应用工程)
31
+ - [5. 流程应用前端开发](#5-流程应用前端开发)
32
+
33
+ ## 1. 后端工程创建
34
+ ### 1.1 操作场景
35
+ 使用 IntelliJ IDEA 新建一个 Maven 工程;按照工程创建操作步骤,生成后端工程;修改相关配置信息;加载依赖包,启动工程,nacos 中查看。
36
+ ### 1.2 操作步骤
37
+ 根据《应用开发平台使用攻略(一):系统环境搭建》 的后端工程创建,进行后端工程搭建。
38
+ 创建目标业务服务工程。
39
+ 按目标项目的模块约定创建目录结构。
40
+ ## 2. 后端工程配置
41
+ ### 2.1 修改 pom.xml 文件
42
+ 引入流程 jar 包,${cloud-system-bpm.version}、${cloud-starter-core.version}、${cloud-starter-dbinit.version}、${cloud-system-bpm-module-core.version}版本信息根据需要自适配。
43
+ ```xml
44
+ <parent>
45
+ <artifactId>cloud-system-bpm</artifactId>
46
+ <groupId>com.meritdata.cloud</groupId>
47
+ <version>${cloud-system-bpm.version}</version>
48
+ </parent>
49
+ ```
50
+ 完整配置信息如下:
51
+ ```xml
52
+ <?xml version="1.0" encoding="UTF-8"?>
53
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
54
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
55
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
56
+ <parent>
57
+ <artifactId>cloud-system-bpm</artifactId>
58
+ <groupId>com.meritdata.cloud</groupId>
59
+ <version>${cloud-system-bpm.version}</version>
60
+ </parent>
61
+ <modelVersion>4.0.0</modelVersion>
62
+
63
+ <artifactId>${business.service.artifact-id}</artifactId>
64
+
65
+ <dependencies>
66
+ <dependency>
67
+ <groupId>com.meritdata.cloud</groupId>
68
+ <artifactId>cloud-starter-core</artifactId>
69
+ <version>${cloud-starter-core.version}</version>
70
+ </dependency>
71
+ <dependency>
72
+ <groupId>com.meritdata.cloud</groupId>
73
+ <artifactId>cloud-starter-dbinit</artifactId>
74
+ <version>${cloud-starter-dbinit.version}</version>
75
+ </dependency>
76
+ <dependency>
77
+ <groupId>org.springframework.boot</groupId>
78
+ <artifactId>spring-boot-devtools</artifactId>
79
+ <optional>true</optional>
80
+ </dependency>
81
+ <dependency>
82
+ <groupId>com.meritdata.cloud</groupId>
83
+ <artifactId>cloud-system-bpm-module-core</artifactId>
84
+ <version>${cloud-system-bpm-module-core.version}</version>
85
+ </dependency>
86
+ <!--QueryDSL支持-->
87
+ <dependency>
88
+ <groupId>com.querydsl</groupId>
89
+ <artifactId>querydsl-apt</artifactId>
90
+ <scope>provided</scope>
91
+ <exclusions>
92
+ <exclusion>
93
+ <groupId>org.javassist</groupId>
94
+ <artifactId>javassist</artifactId>
95
+ </exclusion>
96
+ </exclusions>
97
+ </dependency>
98
+ <!--QueryDSL支持-->
99
+ <dependency>
100
+ <groupId>com.querydsl</groupId>
101
+ <artifactId>querydsl-jpa</artifactId>
102
+ </dependency>
103
+ <dependency>
104
+ <groupId>org.projectlombok</groupId>
105
+ <artifactId>lombok</artifactId>
106
+ <version>1.16.10</version>
107
+ <scope>provided</scope>
108
+ </dependency>
109
+ </dependencies>
110
+ <build>
111
+ <!--使配置文件可以直接读取pom中的系统参数 -->
112
+ <resources>
113
+ <resource>
114
+ <directory>src/main/resources</directory>
115
+ <filtering>true</filtering>
116
+ </resource>
117
+ </resources>
118
+ <plugins>
119
+ <plugin>
120
+ <groupId>org.springframework.boot</groupId>
121
+ <artifactId>spring-boot-maven-plugin</artifactId>
122
+ <configuration>
123
+ <!--fork : 如果没有该项配置,肯定devtools不会起作用,即应用不会restart -->
124
+ <fork>true</fork>
125
+ </configuration>
126
+ </plugin>
127
+ <plugin>
128
+ <groupId>net.alchim31.maven</groupId>
129
+ <artifactId>yuicompressor-maven-plugin</artifactId>
130
+ <version>1.3.0</version>
131
+ <executions>
132
+ <execution>
133
+ <phase>prepare-package</phase>
134
+ <goals>
135
+ <goal>compress</goal>
136
+ </goals>
137
+ </execution>
138
+ </executions>
139
+ <configuration>
140
+ <encoding>UTF-8</encoding>
141
+ <jswarn>false</jswarn>
142
+ <nosuffix>true</nosuffix>
143
+ <linebreakpos>-1</linebreakpos>
144
+ <force>true</force>
145
+ <includes>
146
+ <include>**/*.css</include>
147
+ <include>**/*.js</include>
148
+ </includes>
149
+ </configuration>
150
+ </plugin>
151
+ <!-- css、js文件打包后添加版本号插件 -->
152
+ <plugin>
153
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
154
+ <artifactId>replacer</artifactId>
155
+ <version>1.5.3</version>
156
+ <executions>
157
+ <execution>
158
+ <phase>prepare-package</phase>
159
+ <goals>
160
+ <goal>replace</goal>
161
+ </goals>
162
+ </execution>
163
+ </executions>
164
+ <configuration>
165
+ <basedir>${build.directory}</basedir>
166
+ <includes>
167
+ <include>**/*.ftl</include>
168
+ </includes>
169
+ <replacements>
170
+ <replacement>
171
+ <token>\.css\"</token>
172
+ <value>.css?v=${maven.build.timestamp}\"</value>
173
+ </replacement>
174
+ <replacement>
175
+ <token>\.css\'</token>
176
+ <value>.css?v=${maven.build.timestamp}\'</value>
177
+ </replacement>
178
+ <replacement>
179
+ <token>\.js\"</token>
180
+ <value>.js?v=${maven.build.timestamp}\"</value>
181
+ </replacement>
182
+ <replacement>
183
+ <token>\.js\'</token>
184
+ <value>.js?v=${maven.build.timestamp}\'</value>
185
+ </replacement>
186
+ </replacements>
187
+ </configuration>
188
+ </plugin>
189
+ <!--因为是类型安全的,所以还需要加上Maven APT plugin,使用 APT 自动生成一些类:-->
190
+ <plugin>
191
+ <groupId>com.mysema.maven</groupId>
192
+ <artifactId>apt-maven-plugin</artifactId>
193
+ <version>1.1.3</version>
194
+ <executions>
195
+ <execution>
196
+ <phase>generate-sources</phase>
197
+ <goals>
198
+ <goal>process</goal>
199
+ </goals>
200
+ <configuration>
201
+ <outputDirectory>target/generated-sources</outputDirectory>
202
+ <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
203
+ </configuration>
204
+ </execution>
205
+ </executions>
206
+ </plugin>
207
+ </plugins>
208
+ </build>
209
+ </project>
210
+ ```
211
+ ### 2.2 修改 bootstrap.properties 文件
212
+ 在 src 目录->resources 目录-> bootstrap.properties 文件
213
+ 不要复制历史端口、Nacos 地址、命名空间或产品名。将这些值放在目标环境的部署配置中,以下仅展示变量引用方式。
214
+ ```properties
215
+ #由部署环境提供
216
+ server.port=${SERVER_PORT}
217
+ meritdata.cloud.nacos-addr=${NACOS_ADDR}
218
+ spring.cloud.nacos.config.server-addr=${meritdata.cloud.nacos-addr}
219
+ spring.cloud.nacos.discovery.server-addr=${meritdata.cloud.nacos-addr}
220
+ #按目标平台基线配置
221
+ spring.profiles.include=<profile-placeholder>,@project.artifactId@
222
+ spring.cloud.nacos.config.prefix=common
223
+ spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE:}
224
+ spring.application.name=@project.artifactId@
225
+ meritdata.cloud.product-name=${PRODUCT_NAME}
226
+ logfile-max-history=30
227
+ logging-level=info
228
+ ```
229
+ ## 3. 后端工程业务类创建
230
+ - 点击 com.meritdata.cloud ——>鼠标右键——> 点击 New ——> 选择 Package
231
+ 在"New Package"界面 分别创建 controller,entity,repository,service 包
232
+ - 添加完包后,创建对应的 Java 文件:
233
+ 点击包名 ——>鼠标右键 ——>点击 New ——> 选择 java class
234
+ ### 3.1 实体类
235
+ | 类名 | 类型 | 父类 | 说明 |
236
+ | ------------- | ----- | ----------------------- | --------------------------------------------------------------------------------------------- |
237
+ | TravelExpense | class | 继承 CloudBaseEntity 类 | CloudBaseEntity 属于系统基础实体类,维护多租户标识 添加创建时间,更新时间,作者和更新人员信息 |
238
+ 完整代码如下:
239
+ ```java
240
+ package com.meritdata.cloud.cets.entity;
241
+ import com.meritdata.cloud.base.entity.CloudBaseEntity;
242
+ import lombok.Data;
243
+ import org.hibernate.annotations.GenericGenerator;
244
+ import javax.persistence.*;
245
+ /**
246
+ * 出差费用报价单
247
+ */
248
+ @Entity
249
+ @Data
250
+ @Table(name = "pf_bpm_travel_expense")
251
+ @GenericGenerator(name = "jpa-uuid", strategy = "uuid")
252
+ public class TravelExpense extends CloudBaseEntity {
253
+
254
+ @Id
255
+ @GeneratedValue(generator = "jpa-uuid")
256
+ @Column(name = "[ID]")
257
+ private String id;
258
+
259
+ /**
260
+ * 标题
261
+ */
262
+ @Column(name = "[PROJECT]")
263
+ private String project;
264
+
265
+ /**
266
+ * 所属部门
267
+ */
268
+ @Column(name = "[BELONG_DEPART]")
269
+ private String belongDepart;
270
+
271
+ /**
272
+ * 申请人
273
+ */
274
+ @Column(name = "[NAME]")
275
+ private String name;
276
+
277
+ /**
278
+ * 出差类型 0.项目支持,1.售前支撑
279
+ */
280
+ @Column(name = "[TYPE]")
281
+ private String type;
282
+
283
+ /**
284
+ * 金额
285
+ */
286
+ @Column(name = "[AMOUNT]")
287
+ private Double amount;
288
+
289
+ /**
290
+ * 出差目的地
291
+ */
292
+ @Column(name = "[DESTINATION]")
293
+ private String destination;
294
+
295
+ /**
296
+ * 出差事由
297
+ */
298
+ @Column(name = "[TRAVEL_REMARK]")
299
+ private String travel_remark;
300
+
301
+ /**
302
+ * 出差时间
303
+ */
304
+ @Column(name = "[TRAVEL_TIME]")
305
+ private Long travel_time;
306
+ }
307
+
308
+ ```
309
+ ### 3.2 持久层
310
+ 系统持久层框架使用 JPA+QueryDsl。JPA 主要负责数据库的新增、修改、删除。QueryDsl 主要负责对数据库的查询操作。
311
+ | 类名 | 类型 | 父类 | 说明|
312
+ | ------------- | ----- | ----------------------- |-----|
313
+ | TravelExpenseRepository | interface | 分别继承 JpaRepository 类,QuerydslPredicateExecutor 类 | JpaRepository 提供了默认的保存查找等方法,QuerydslPredicateExecutor 接口是为了使用 QueryDsl|
314
+ JpaRepository 的使用和 QueryDsl 的使用
315
+ 查看《二次开发:业务应用》 附件 1
316
+ 完整代码如下:
317
+ ```java
318
+ package com.meritdata.cloud.repository;
319
+
320
+ import com.meritdata.cloud.cets.entity.TravelExpense;
321
+ import org.springframework.data.jpa.repository.JpaRepository;
322
+ import org.springframework.data.querydsl.QuerydslPredicateExecutor;
323
+
324
+ /**
325
+ * 查看单表
326
+ */
327
+ public interface TravelExpenseRepository extends JpaRepository<TravelExpense, String>, QuerydslPredicateExecutor<TravelExpense> {
328
+
329
+ }
330
+ ```
331
+ ### 3.3 服务层
332
+ #### 3.3.1 服务层接口
333
+ | 类名 | 类型 |
334
+ | --------------------- | --------- |
335
+ | ITravelExpenseService | interface |
336
+ 完整代码如下:
337
+ ```java
338
+ package com.meritdata.cloud.service;
339
+ import com.meritdata.cloud.base.mvc.entity.GridView;
340
+ import com.meritdata.cloud.cets.entity.TravelExpense;
341
+ import javax.validation.constraints.NotNull;
342
+ import java.util.List;
343
+ import java.util.Map;
344
+
345
+ public interface ITravelExpenseService {
346
+
347
+ /**
348
+ * 保存差旅费
349
+ * @return
350
+ */
351
+ TravelExpense saveTravelExpense(TravelExpense travelExpense);
352
+
353
+ /**
354
+ * 修改差旅费
355
+ */
356
+ TravelExpense updateTravelExpense(TravelExpense travelExpense);
357
+
358
+
359
+ /**
360
+ * 删除多条差旅费
361
+ * @param exampleIds
362
+ * @return
363
+ */
364
+ boolean deleteByIds(List<String> exampleIds);
365
+
366
+ /**
367
+ * 根据id查看单条
368
+ * @param id
369
+ * @return
370
+ */
371
+ TravelExpense getTravelExpense(String id);
372
+
373
+ /**
374
+ * page分页查询
375
+ * @param procDefKey
376
+ * @param bpmStatus
377
+ * @param pageSize
378
+ * @param pageNumber
379
+ * @param nextStartResults
380
+ * @param type
381
+ * @return
382
+ */
383
+ Object pageTravelExpense(@NotNull String procDefKey, @NotNull String bpmStatus, int pageSize, long pageNumber, Long nextStartResults, String type);
384
+ //理想化查询
385
+ GridView<Map> pageTravelExpenseIdeal(String procDefKey, String bpmStatus, Integer pageSize, Long pageNumber);
386
+ }
387
+
388
+ ```
389
+ #### 3.3.2 服务层实现
390
+ | 类名 | 类型 | 父类 |
391
+ | ----------------- | ----- | ----------------------------- |
392
+ | TravelExpenseImpl | class | 实现 ITravelExpenseService 类 |
393
+ 完整代码如下:
394
+ ```java
395
+ package com.meritdata.cloud.service.impl;
396
+
397
+ import com.alibaba.fastjson.JSON;
398
+ import com.google.common.collect.Lists;
399
+ import com.meritdata.cloud.base.mvc.entity.GridView;
400
+ import com.meritdata.cloud.bpm.base.dto.MainFormQueryDTO;
401
+ import com.meritdata.cloud.bpm.core.BpmEngine;
402
+ import com.meritdata.cloud.cets.entity.QTravelExpense;
403
+ import com.meritdata.cloud.cets.entity.TravelExpense;
404
+ import com.meritdata.cloud.repository.TravelExpenseRepository;
405
+ import com.meritdata.cloud.resultmodel.ResultBody;
406
+ import com.meritdata.cloud.service.ITravelExpenseService;
407
+ import com.querydsl.core.types.ExpressionUtils;
408
+ import com.querydsl.core.types.Predicate;
409
+ import com.querydsl.jpa.impl.JPAQueryFactory;
410
+ import org.apache.commons.collections.CollectionUtils;
411
+ import org.apache.commons.lang3.StringUtils;
412
+ import org.springframework.beans.factory.annotation.Autowired;
413
+ import org.springframework.stereotype.Service;
414
+ import org.springframework.transaction.annotation.Transactional;
415
+
416
+ import java.beans.IntrospectionException;
417
+ import java.beans.PropertyDescriptor;
418
+ import java.lang.reflect.Field;
419
+ import java.lang.reflect.InvocationTargetException;
420
+ import java.lang.reflect.Method;
421
+ import java.util.*;
422
+ import java.util.stream.Collectors;
423
+
424
+ @Service
425
+ @Transactional
426
+ public class TravelExpenseImpl implements ITravelExpenseService {
427
+
428
+ @Autowired
429
+ JPAQueryFactory jpaQueryFactory;
430
+
431
+ @Autowired
432
+ TravelExpenseRepository travelExpenseDao;
433
+
434
+ //引入流程
435
+ @Autowired
436
+ BpmEngine bpmEngine ;
437
+
438
+ /**
439
+ *
440
+ * @param procDefKey
441
+ * @param bpmStatus
442
+ * @param pageSize
443
+ * @param pageNumber
444
+ * @param nextStartResults
445
+ * @param type
446
+ * @return
447
+ */
448
+ @Override
449
+ public Object pageTravelExpense( String procDefKey, String bpmStatus, int pageSize, long pageNumber, Long nextStartResults, String type) {
450
+
451
+ //流程代码
452
+ MainFormQueryDTO formQuery = new MainFormQueryDTO();
453
+ formQuery.setBpmStatus(bpmStatus); //流程状态
454
+ formQuery.setOrderFields(Lists.newArrayList(formQuery.new Field(MainFormQueryDTO.SORT_BY_UPDATE_TIME, true)));
455
+
456
+ //业务代码 ideal理想化查询
457
+ if ("ideal".equals(type)) {
458
+ return this.getIdealProcExample(procDefKey, formQuery, pageSize, pageNumber);
459
+ }
460
+ return new GridView<>();
461
+ }
462
+
463
+
464
+ @Override
465
+ public GridView<Map> pageTravelExpenseIdeal(String procDefKey, String bpmStatus, Integer pageSize, Long pageNumber) {
466
+ MainFormQueryDTO formQuery = new MainFormQueryDTO();
467
+ formQuery.setBpmStatus(bpmStatus);
468
+ formQuery.setOrderFields(Lists.newArrayList(formQuery.new Field(MainFormQueryDTO.SORT_BY_UPDATE_TIME, true)));
469
+ return getIdealProcExample(procDefKey, formQuery, pageSize, pageNumber);
470
+
471
+ }
472
+
473
+ @Override
474
+ public TravelExpense saveTravelExpense(TravelExpense travelExpense) {
475
+ return travelExpenseDao.save(travelExpense);
476
+ }
477
+
478
+ @Override
479
+ public TravelExpense updateTravelExpense(TravelExpense travelExpense) {
480
+ return travelExpenseDao.save(travelExpense) ;
481
+ }
482
+
483
+
484
+ @Override
485
+ public boolean deleteByIds(List<String> travelIds) {
486
+ QTravelExpense travelExpense = QTravelExpense.travelExpense;
487
+ Predicate predicate = travelExpense.id.in(travelIds);
488
+ Iterable<TravelExpense> all = travelExpenseDao.findAll(predicate);
489
+ return this.deleteList(all);
490
+ }
491
+
492
+ @Override
493
+ public TravelExpense getTravelExpense(String id) {
494
+ TravelExpense exampleById = travelExpenseDao.findById(id).get();
495
+ return exampleById;
496
+ }
497
+
498
+ /**
499
+ *理想化查询
500
+ * @param procDefKey 流程key
501
+ * @param formQueryDTO dto
502
+ * @param pageSize
503
+ * @param pageNumber
504
+ * @return
505
+ */
506
+ public GridView<Map> getIdealProcExample(String procDefKey, MainFormQueryDTO formQueryDTO, long pageSize, long pageNumber) {
507
+
508
+ long nextStrartIdx =(pageNumber -1) * pageSize;
509
+ nextStrartIdx = nextStrartIdx < 0 ? 0:nextStrartIdx;
510
+ long total = 0;
511
+ // 流程实例获取 根据流程key和流程状态
512
+ ResultBody<GridView> resultBody = bpmEngine.queryMainForms(JSON.toJSONString(formQueryDTO), procDefKey, nextStrartIdx, pageSize);
513
+ List<Map> mainForms = new ArrayList<>();
514
+ if(null != resultBody && resultBody.isSuccess() && null != resultBody.getData()) {
515
+ List<Map> rows = resultBody.getData().getRows();
516
+ if (CollectionUtils.isNotEmpty(rows)) {
517
+ mainForms.addAll(rows);
518
+ }
519
+ total = resultBody.getData().getTotal();
520
+ }
521
+
522
+ // 获取流程中的businessId(业务Id)
523
+ Map<String, Map> mainFormMap = new HashMap<String, Map>();
524
+ List<String> businessIdAll = new ArrayList<>();
525
+ for (Map map: mainForms) {
526
+ Object businessIdObj = map.get("businessId"); //获取到其中的业务id
527
+ if (null != businessIdObj && StringUtils.isNotBlank(businessIdObj.toString())) {
528
+ String businessId = businessIdObj.toString();
529
+ businessIdAll.add(businessId);
530
+ mainFormMap.put(businessId,map);
531
+ }
532
+ }
533
+ //根据获取的业务id 查询业务数据
534
+ List<Map> result = null;
535
+ QTravelExpense travelExpense = QTravelExpense.travelExpense;
536
+ Predicate predicate = null;
537
+ predicate = ExpressionUtils.and(predicate,travelExpense.id.in(businessIdAll));
538
+ result = jpaQueryFactory.select(travelExpense)
539
+ .from(travelExpense)
540
+ .where(predicate)
541
+ .orderBy(travelExpense.updateTime.desc())
542
+ .fetch()
543
+ .stream()
544
+ .map(item ->{
545
+ return this.covertMainFormToMap(mainFormMap,item);
546
+ }).collect(Collectors.toList());
547
+
548
+
549
+ return new GridView<>(result,total);
550
+ }
551
+ //获取流程中未处理人,处理状态,处理节点
552
+ private Map covertMainFormToMap(Map<String, Map> mainFormMap, TravelExpense item) {
553
+ Field[] fields=item.getClass().getDeclaredFields();
554
+ Map map = new HashMap();
555
+ for (Field field : fields) {
556
+ try {
557
+ PropertyDescriptor pd =new PropertyDescriptor(field.getName(),item.getClass());
558
+ Method method = pd.getReadMethod();
559
+ map.put(field.getName(),method.invoke(item));
560
+ } catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) {
561
+ }
562
+ }
563
+ Map mainform = mainFormMap.get(item.getId());
564
+ if (null != mainform) {
565
+ map.put("flowAuthorNames", mainform.get("flowAuthorNames"));
566
+ map.put("flowReaderIds", mainform.get("flowReaderIds"));
567
+ map.put("nodeNames", mainform.get("nodeNames"));
568
+ map.put("procDealStatus", mainform.get("procDealStatus"));
569
+ }
570
+ return map;
571
+ }
572
+
573
+ // 根据流程实例Ids删除流程实例
574
+ private boolean deleteList(Iterable<TravelExpense> all) {
575
+ if (null != all) {
576
+ Iterator<TravelExpense> iterator = all.iterator();
577
+ List<String> businessIds = new ArrayList<>();
578
+ while (iterator.hasNext()) {
579
+ String businessId = iterator.next().getId();
580
+ businessIds.add(businessId);
581
+ }
582
+ if (CollectionUtils.isNotEmpty(businessIds)) {
583
+ // 流程代码
584
+ ResultBody<Boolean> resultBody = bpmEngine.deleteProcInsts(businessIds);
585
+ if (null != resultBody && resultBody.isSuccess() && resultBody.getData()) {
586
+ // 业务代码
587
+ travelExpenseDao.deleteAll(all);
588
+ return true;
589
+ }
590
+ }
591
+ }
592
+ return false;
593
+ }
594
+ }
595
+ ```
596
+ 注意:添加完 TravelExpenseImpl 类中代码后,编译工程,maven->compile
597
+ ### 3.4 控制层
598
+ | 类名 | 类型 |
599
+ | ----------------------- | ----- |
600
+ | TravelExpenseController | class |
601
+ 完整代码如下:
602
+ ```java
603
+ package com.meritdata.cloud.controller;
604
+
605
+ import cn.hutool.core.util.StrUtil;
606
+ import com.meritdata.cloud.base.mvc.entity.GridView;
607
+ import com.meritdata.cloud.bpm.base.utils.StringUtils;
608
+ import com.meritdata.cloud.cets.entity.TravelExpense;
609
+ import com.meritdata.cloud.resultmodel.ResultBody;
610
+ import com.meritdata.cloud.service.ITravelExpenseService;
611
+ import io.swagger.annotations.Api;
612
+ import io.swagger.annotations.ApiOperation;
613
+ import io.swagger.annotations.ApiParam;
614
+ import org.springframework.beans.factory.annotation.Autowired;
615
+ import org.springframework.web.bind.annotation.*;
616
+
617
+ import java.util.*;
618
+
619
+ /**
620
+ * 差旅费报销流程
621
+ */
622
+ @RestController
623
+ @RequestMapping(value = "/api/travel-expense")
624
+ @Api(value = "TravelExpenseController}", tags = "")
625
+ public class TravelExpenseController {
626
+
627
+ @Autowired
628
+ private ITravelExpenseService travelExpenseService;
629
+
630
+ /**
631
+ * 修改
632
+ */
633
+ @PostMapping("/update")
634
+ @ApiOperation(value = "修改")
635
+ public ResultBody<TravelExpense> update(@RequestParam TravelExpense travelExpense) {
636
+ TravelExpense result = null;
637
+ try {
638
+ result = travelExpenseService.updateTravelExpense(travelExpense);
639
+ } catch (Exception e) {
640
+ e.printStackTrace();
641
+ return ResultBody.failure(e.getMessage());
642
+ }
643
+ return ResultBody.success(result);
644
+ }
645
+
646
+ /**
647
+ * 新增
648
+ */
649
+ @PostMapping("/save")
650
+ @ApiOperation(value = "新增")
651
+ public ResultBody<TravelExpense> save(TravelExpense travelExpense) {
652
+ TravelExpense result = null;
653
+ try {
654
+ result = travelExpenseService.saveTravelExpense(travelExpense);
655
+ } catch (Exception e) {
656
+ e.printStackTrace();
657
+ return ResultBody.failure(e.getMessage());
658
+ }
659
+
660
+ return ResultBody.success(result);
661
+ }
662
+
663
+
664
+ /**
665
+ * 批量删除
666
+ */
667
+ @PostMapping("/delete")
668
+ @ApiOperation(value = "批量删除")
669
+ public ResultBody<Boolean> remove(String ids) {
670
+ List<String> idList = Arrays.asList(StrUtil.split(ids, ","));
671
+ boolean result;
672
+ try {
673
+ result = travelExpenseService.deleteByIds(idList);
674
+ } catch (Exception e) {
675
+ e.printStackTrace();
676
+ return ResultBody.failure(e.getMessage());
677
+ }
678
+
679
+ return ResultBody.success(result);
680
+ }
681
+
682
+ /**
683
+ * 获取单个差旅费流程
684
+ *
685
+ * @param id
686
+ * @return
687
+ */
688
+ @PostMapping("/get-travel-expense")
689
+ @ApiOperation(value = "获取单个差旅费流程")
690
+ public ResultBody<TravelExpense> getTravelExpense(String id) {
691
+ TravelExpense travelExpense = new TravelExpense();
692
+ try {
693
+ if (!"".equals(id)) {
694
+ travelExpense = travelExpenseService.getTravelExpense(id);
695
+ }
696
+ } catch (Exception e) {
697
+ e.printStackTrace();
698
+ return ResultBody.failure(e.getMessage());
699
+ }
700
+ return ResultBody.success(travelExpense);
701
+ }
702
+
703
+ /**
704
+ * 理想化查询
705
+ *
706
+ * @param procDefKey
707
+ * @param bpmStatus
708
+ * @param pageSize
709
+ * @param pageNumber
710
+ * @return
711
+ */
712
+ @RequestMapping(value = "/page/ideal", method = RequestMethod.POST)
713
+ public @ResponseBody
714
+ ResultBody<GridView<Map>>
715
+ pageProcExampleIdeal(@RequestParam(name = "procDefKey") String procDefKey,
716
+ @RequestParam(name = "bpmStatus") String bpmStatus,
717
+ @RequestParam(name = "pageSize", required = false, defaultValue = "10") Integer pageSize,
718
+ @RequestParam(name = "pageNumber", required = false, defaultValue = "1") Long pageNumber) {
719
+ GridView<Map> gridView = travelExpenseService.pageTravelExpenseIdeal(procDefKey, bpmStatus, pageSize, pageNumber);
720
+ return ResultBody.success(gridView);
721
+ }
722
+
723
+ }
724
+ ```
725
+ ## 4. 启动后端应用工程
726
+ ### 4.1 启动后端工程服务
727
+ 从目标环境的密钥和认证管理系统取得启动配置;不要将密钥文件或认证信息提交到工程、文档或 VM options 历史记录中。
728
+ ```
729
+ -DCLOUD_HOME=<home-placeholder>
730
+ ```
731
+ 认证配置由目标环境提供,例如:
732
+ -Dmeritdata.cloud.authentication-server-url=${CLOUD_HOME}/key
733
+ 不要通过 `allow-circular-references` 掩盖依赖循环,应拆分或重构循环依赖。
734
+ 启动后端应用
735
+ 选择 <ApplicationClass>,右键,选择 Run "<ApplicationClass>"
736
+ 启动成功
737
+ ### 4.2 检查后端工程服务
738
+ 在目标环境提供的 Nacos 控制台确认服务已注册。使用受管账号或 SSO 登录;不要记录、猜测或复用默认账号与密码。
739
+ ## 5. 流程应用前端开发
740
+ ### 5.1 前置条件
741
+ 根据《应用开发平台使用攻略(一):系统环境搭建》 的前端工程创建,进行前端工程搭建。
742
+ 创建 `<frontend-app>` 工程应用。
743
+ ### 5.2 前端工程配置
744
+ #### 5.2.1 删除文件
745
+ 按目标前端基线创建 `<frontend-app>` 工程应用。
746
+ - 删除的文件如下:
747
+ - 1.删除 node_modules 文件夹
748
+ - 2.删除 src 文件夹下面的所有内容
749
+ - 3.删除.browserslistrc 文件
750
+ - 4.删除.eslintrc 文件
751
+ - 5.删除 package-lock.json 文件
752
+ 注意:为避免出现不知名的错误,所以删除这些文件;在删除时,根据以上内容,没有找到某个文件,可以忽略此文件
753
+ 删除后的目录结构:
754
+ #### 5.2.2 修改 package.json 文件
755
+ 说明:
756
+ package.json 文件是对项目或者模块包的描述,里面包含许多元信息,比如项目名称,项目版本,项目执行入口文件等。
757
+ 分别替换 package.json 文件中"dependencies" 和 "devDependencies" 内容
758
+ 添加:"eslintConfig" 和 "browserslist"
759
+ "dependencies"表示:生产环境下,项目运行所需依赖
760
+ "devDependencies"表示:开发环境下,项目所需依赖
761
+ ```json
762
+ {
763
+ "name": "<frontend-app>",
764
+ "version": "0.1.0",
765
+ "private": true,
766
+ "scripts": {
767
+ "serve": "vue-cli-service serve",
768
+ "build": "vue-cli-service build",
769
+ "lint": "vue-cli-service lint"
770
+ },
771
+ "dependencies": {
772
+ "axios": "0.19.0",
773
+ "babel-loader": "^8.0.6",
774
+ "babel-plugin-transform-remove-strict-mode": "0.0.2",
775
+ "bpmn-js": "^6.4.0",
776
+ "cloud-module-bpm": "6.9.0",
777
+ "codemirror": "^5.52.2",
778
+ "core-js": "^3.4.4",
779
+ "css-loader": "^3.4.1",
780
+ "element-ui": "^2.13.2",
781
+ "less": "^3.10.3",
782
+ "less-loader": "^5.0.0",
783
+ "moment": "^2.24.0",
784
+ "qs": "^6.9.1",
785
+ "vue": "^2.6.10",
786
+ "vue-axios": "^2.1.5",
787
+ "vue-i18n": "^8.15.3",
788
+ "vue-router": "^3.1.3",
789
+ "vuex": "^3.1.2",
790
+ "webpack": "^4.41.5",
791
+ "webpack-chain": "^6.3.0"
792
+ },
793
+ "devDependencies": {
794
+ "@vue/cli-plugin-babel": "^4.1.0",
795
+ "@vue/cli-plugin-eslint": "^4.1.0",
796
+ "@vue/cli-service": "^4.1.0",
797
+ "babel-eslint": "^10.0.3",
798
+ "eslint": "^5.16.0",
799
+ "eslint-plugin-vue": "^5.0.0",
800
+ "vue-template-compiler": "^2.6.10"
801
+ },
802
+ "eslintConfig": {
803
+ "root": true,
804
+ "env": {
805
+ "node": true
806
+ },
807
+ "extends": ["plugin:vue/essential", "eslint:recommended"],
808
+ "rules": {
809
+ "no-console": "off",
810
+ "no-": "off",
811
+ "no-undef": "off"
812
+ },
813
+ "parserOptions": {
814
+ "parser": "babel-eslint"
815
+ }
816
+ },
817
+ "browserslist": ["> 1%", "last 2 versions"]
818
+ }
819
+ ```
820
+ ### 5.3 安装依赖
821
+ 打开终端 : Ctrl+Shift+`
822
+ 在终端输入:npm install 命令, 按 "Enter" 执行命令
823
+ 注意:在项目根目录下执行 npm install
824
+ nmp 命令
825
+ ```shell
826
+ npm install
827
+ ```
828
+ 安装后检查锁文件和实际解析版本,确保与目标 BPM 版本兼容。
829
+ 安装 cloud-module-bpm
830
+ 平台将流程工具封装在 `cloud-module-bpm`。依赖应从组织批准的 npm registry 安装,registry 由 `.npmrc`、环境变量或 CI 凭据管理,不写入示例。
831
+ ```shell
832
+ npm install cloud-module-bpm@6.13.2
833
+ ```
834
+ ### 5.4 前端工程创建
835
+ 需要创建目录结构如下
836
+ - src
837
+ - components
838
+ - common-header.vue
839
+ - no-access.vue
840
+ - httpConfig
841
+ - http.js
842
+ - pages
843
+ - expense
844
+ - i18n
845
+ - langs
846
+ - en_US.js
847
+ - index.js
848
+ - zh_CN.js
849
+ - i18n.js
850
+ - view
851
+ - form-edit.vue
852
+ - form-read.vue
853
+ - Grid.vue
854
+ - App.vue
855
+ - Index.vue
856
+ - main.js
857
+ - router.js
858
+ - vue.config.js
859
+ | 文件名 | 文件说明 |
860
+ | ------------- | --------------------------------------------------------- |
861
+ | httpConfig | http 配置文件目录 |
862
+ | i18n | 国际化配置目录 |
863
+ | view | 业务表单目录包括(form-edit.vue/form-read.vue/Grid.vue) |
864
+ | main.js | 引入相关依赖,注入到 vue 全局和服务访问路径 |
865
+ | router.js | 路由跳转。配置跳转界面 |
866
+ | vue.config.js | 程序编译打包信息配置 多页面管理、编译路径、后端代理配置等 |
867
+ 完整的目录结构如下:
868
+ ### 5.5 业务代码
869
+ 包含以下目录的完整代码
870
+ - src
871
+ - components
872
+ - common-header.vue
873
+ - no-access.vue
874
+ - httpConfig
875
+ - http.js
876
+ - pages
877
+ - expense
878
+ - i18n
879
+ - langs
880
+ - en_US.js
881
+ - index.js
882
+ - zh_CN.js
883
+ - i18n.js
884
+ - view
885
+ - form-edit.vue
886
+ - form-read.vue
887
+ - Grid.vue
888
+ - App.vue
889
+ - Index.vue
890
+ - main.js
891
+ - router.js
892
+ - vue.config.js
893
+ #### 5.5.1 main.js 文件
894
+ - main.js 中引入流程引擎
895
+ ```
896
+ import base from 'cloud-module-base';
897
+ import bpm from 'cloud-module-bpm';
898
+
899
+ Vue.use(base);
900
+ Vue.use(bpm);
901
+ ```
902
+ - main.js 完整代码如下:
903
+ ```js
904
+ import Vue from 'vue';
905
+ import ElementUI from 'element-ui'; // 引入element-ui
906
+ import i18n from './i18n/i18n'; // 引入国际化
907
+ import 'cloud-module-base/static/theme/default/index.css';
908
+ import 'cloud-module-base/static/theme/default/tempo.css';
909
+ import App from './App.vue'; // 引入首页
910
+ import router from './router'; // 引入路由
911
+ import axios from '@/httpConfig/http'; // 引入http配置
912
+ import VueAxios from 'vue-axios'; // 引入 axios
913
+ import base from 'cloud-module-base'; // 引入基础的cloud-module-base相关依赖
914
+ import bpm from 'cloud-module-bpm'; // 引入流程相关依赖
915
+ // 使用Vue.use 加载到全局
916
+ Vue.use(ElementUI);
917
+ Vue.use(VueAxios, axios);
918
+ Vue.use(base);
919
+ Vue.use(bpm);
920
+ Vue.prototype.HOST = '/api/travel-expense'; //服务访问路径
921
+ Vue.prototype.EventBus = new Vue();
922
+ new Vue({
923
+ router,
924
+ i18n,
925
+ render: h => h(App)
926
+ }).$mount('#app');
927
+ ```
928
+ #### 5.5.2 Index.vue 文件
929
+ - 主页面 Index.vue 完整代码如下:
930
+ ```html
931
+ <template>
932
+ <el-container class="el-root-container">
933
+ <el-header height="50px">
934
+ <v-header></v-header>
935
+ </el-header>
936
+ <el-container class="el-main-container">
937
+ <v-grid />
938
+ </el-container>
939
+ </el-container>
940
+ </template>
941
+ <script>
942
+ import grid from './view/Grid';
943
+ import header from '@/components/common-header';
944
+ export default {
945
+ data() {
946
+ return {
947
+ isCollapse: false,
948
+ containerStyle: {
949
+ height: '100%'
950
+ }
951
+ };
952
+ },
953
+ components: {
954
+ 'v-grid': grid,
955
+ 'v-header': header
956
+ },
957
+ created() {
958
+ this.containerStyle.height = window.innerHeight - 30 + 'px';
959
+ },
960
+ mounted() {},
961
+ methods: {}
962
+ };
963
+ </script>
964
+ <style scoped>
965
+ .el-aside {
966
+ width: 250px !important;
967
+ }
968
+ </style>
969
+ ```
970
+ #### 5.5.3 router.js 文件
971
+ router.js 完整代码如下:
972
+ - 说明
973
+ 路由的跳转,跳转界面配置
974
+ ```js
975
+ import Vue from 'vue';
976
+ import Router from 'vue-router';
977
+ import Index from './Index.vue';
978
+ import FormEdit from './view/form-edit';
979
+ import FormRead from './view/form-read';
980
+ Vue.use(Router);
981
+ //路由
982
+ export default new Router({
983
+ routes: [
984
+ {
985
+ path: '/',
986
+ name: 'Index',
987
+ component: Index,
988
+ meta: {
989
+ keepAlive: true, // 需要缓存
990
+ savedPosition: 0,
991
+ title: 'exp.travlExpenselManagement'
992
+ }
993
+ },
994
+ {
995
+ path: '/formEdit',
996
+ name: 'formEdit',
997
+ component: FormEdit
998
+ },
999
+ {
1000
+ path: '/formRead',
1001
+ name: 'formRead',
1002
+ component: FormRead
1003
+ }
1004
+ ]
1005
+ });
1006
+ ```
1007
+ #### 5.5.4 App.vue 文件
1008
+ 完整代码如下:
1009
+ ```html
1010
+ <template>
1011
+ <div id="app">
1012
+ <keep-alive>
1013
+ <router-view v-if="$route.meta.keepAlive"></router-view>
1014
+ </keep-alive>
1015
+ <router-view v-if="!$route.meta.keepAlive"></router-view>
1016
+ </div>
1017
+ </template>
1018
+ <script>
1019
+ export default {
1020
+ name: 'App'
1021
+ };
1022
+ </script>
1023
+ <style lang="less">
1024
+ html,
1025
+ body {
1026
+ height: 100%;
1027
+ }
1028
+ </style>
1029
+ ```
1030
+ #### 5.5.5 i18n 文件夹
1031
+ 说明:
1032
+ 在 il8n->langs->en_US.js 和 zh_CN.js 中修改 impot 路径为
1033
+ 目的是加载流程相关的 zh_CN.js 和 en_US.js
1034
+ ```js
1035
+ 在zh_CN.js中;
1036
+ import zh_CNLocale from 'cloud-module-bpm/packages/i18n/langs/zh_CN';
1037
+ 在en_US.js中;
1038
+ import en_USLocale from 'cloud-module-bpm/packages/i18n/langs/en_US';
1039
+ ```
1040
+ - en_US.js 文件
1041
+ il8n 目录->langs 目录->en_US.js
1042
+ 完整代码如下:
1043
+ ```js
1044
+ import en_USLocale from 'cloud-module-bpm/packages/i18n/langs/en_US';
1045
+ const en = {
1046
+ exp: {
1047
+ id: 'id',
1048
+ project: 'title',
1049
+ name: 'name',
1050
+ flowAuthorNames: 'Outstanding pepople',
1051
+ procDealStatus: 'Processing state',
1052
+ nodeNames: 'Processing nodes',
1053
+ belong_depart: 'Subordinate departments',
1054
+
1055
+ type: 'Type',
1056
+ amount: 'Amount',
1057
+ destination: 'Destination',
1058
+ travel_time: 'Travel Time',
1059
+ travel_remark: 'Travel Reason',
1060
+
1061
+ enter_the_amout: 'Enter the amout',
1062
+
1063
+ travlExpenselManagement: 'TravlExpenselManagement'
1064
+ },
1065
+ select: {
1066
+ selectOpinion: 'Please select a',
1067
+ IdealizedQuery: 'Idealized Query',
1068
+ pageQuery: 'Page Query'
1069
+ },
1070
+ statusColor: {
1071
+ draft: 'warning',
1072
+ track: '',
1073
+ over: 'success'
1074
+ },
1075
+ status: {
1076
+ draft: 'draft',
1077
+ track: 'tracking',
1078
+ over: 'over'
1079
+ },
1080
+ comm: {
1081
+ message_info_delete: 'delete',
1082
+ message_error_delete: 'Delete failed',
1083
+ messagee_success_delete: 'Delete the success',
1084
+ tooltip: 'tooltip',
1085
+ del: 'are you sure delete ?',
1086
+ message_action: 'please select at last one action!',
1087
+ confirm: 'confirm',
1088
+ cancel: 'cancel'
1089
+ },
1090
+ ...en_USLocale
1091
+ };
1092
+ export default en;
1093
+ ```
1094
+ - zh_CN.js 文件
1095
+ il8n 目录->langs 目录->zh_CN.js
1096
+ 完整代码如下:
1097
+ ```js
1098
+ import zh_CNLocale from 'cloud-module-bpm/packages/i18n/langs/zh_CN';
1099
+ const zh_CN = {
1100
+ exp: {
1101
+ id: '编号',
1102
+ project: '标题',
1103
+ name: '姓名',
1104
+ flowAuthorNames: '未处理人',
1105
+ procDealStatus: '处理状态',
1106
+ nodeNames: '处理节点',
1107
+ belong_depart: '所属部门',
1108
+
1109
+ type: '出差类型',
1110
+ amount: '金额',
1111
+ destination: '出差目的地',
1112
+ startTime: '开始时间',
1113
+ endTime: '结束时间',
1114
+ travel_remark: '出差事由',
1115
+ travel_time: '出差时间',
1116
+ remark: '出差事由',
1117
+ enter_the_amout: '输入金额',
1118
+ travlExpenselManagement: '差旅费管理'
1119
+ },
1120
+ status: {
1121
+ draft: '草稿',
1122
+ track: '跟踪',
1123
+ over: '办结'
1124
+ },
1125
+ statusColor: {
1126
+ draft: 'warning',
1127
+ track: '',
1128
+ over: 'success'
1129
+ },
1130
+ select: {
1131
+ selectOpinion: '请选择',
1132
+ IdealizedQuery: '理想化查询'
1133
+ },
1134
+ apiType: {
1135
+ ideal: {
1136
+ name: '理想化查询',
1137
+ explain: '不含其他查询条件下的查询,每次按照分页条件,服务间只做有效数据查询.'
1138
+ }
1139
+ },
1140
+ comm: {
1141
+ message_info_delete: '取消删除',
1142
+ message_error_delete: '删除失败',
1143
+ messagee_success_delete: '删除成功',
1144
+ tooltip: '提示',
1145
+ del: '确定删除吗?',
1146
+ message_action: '请至少选择一条记录进行操作!',
1147
+ confirm: '确认',
1148
+ cancel: '取消'
1149
+ },
1150
+ ...zh_CNLocale
1151
+ };
1152
+ export default zh_CN;
1153
+ ```
1154
+ - langs->index.js 完整代码如下:
1155
+ ```js
1156
+ import en_US from './en_US';
1157
+ import zh_CN from './zh_CN';
1158
+ export default {
1159
+ zh: zh_CN,
1160
+ en: en_US
1161
+ };
1162
+ ```
1163
+ - i18n.js 完整代码如下:
1164
+ ```js
1165
+ import Vue from 'vue';
1166
+ import locale from 'element-ui/lib/locale'; //elementUI的国际化
1167
+ import VueI18n from 'vue-i18n';
1168
+ import messages from './langs';
1169
+ Vue.use(VueI18n);
1170
+ const i18n = new VueI18n({
1171
+ //从localStorage中取,没有就默认的中文
1172
+ locale: window.localStorage.getItem('qinLang') || 'zh',
1173
+ messages
1174
+ });
1175
+ locale.i18n((key, value) => i18n.t(key, value)); //elementui多语言切换
1176
+
1177
+ export default i18n;
1178
+ ```
1179
+ #### 5.5.6 httpConfig 文件夹
1180
+ 说明:
1181
+ 该文件夹主要配置了 http 请求相关配置
1182
+ - http.js 文件
1183
+ 设置请求后端应用的相关配置,get(),post()请求
1184
+ 以下配置了访问 2 个后端应用的 get().post() 请求
1185
+ <business-service> 和 <system-service> 后端应用
1186
+ 完整代码如下:
1187
+ ```js
1188
+ import Axios from 'cloud-module-base/packages/httpConfig/http-plugin';
1189
+ const appPath = {
1190
+ '<business-service-client>': '/<business-service>',
1191
+ '<system-service-client>': '/<system-service>'
1192
+ };
1193
+ export default {
1194
+ '<business-service-client>': {
1195
+ post: (url, params) => {
1196
+ return Axios.post('/gateway' + appPath['<business-service-client>'] + url, params).then(res => res);
1197
+ },
1198
+ get: (url, params) => {
1199
+ return Axios.get('/gateway' + appPath['<business-service-client>'] + url, {
1200
+ params: params
1201
+ }).then(res => res);
1202
+ }
1203
+ },
1204
+ '<system-service-client>': {
1205
+ post: (url, params) => {
1206
+ return Axios.post('/gateway' + appPath['<system-service-client>'] + url, params).then(res => res);
1207
+ },
1208
+ get: (url, params) => {
1209
+ return Axios.get('/gateway' + appPath['<system-service-client>'] + url, {
1210
+ params: params
1211
+ }).then(res => res);
1212
+ }
1213
+ }
1214
+ };
1215
+ ```
1216
+ #### 5.5.7 components 文件夹
1217
+ - common-header.vue
1218
+ 完整代码如下:
1219
+ ```html
1220
+ <template>
1221
+ <el-breadcrumb separator="/">
1222
+ <el-breadcrumb-item v-for="item in routerItems" :key="item.path" :to="{ path: item.path }"
1223
+ >{{ $t(item.meta.title) }}</el-breadcrumb-item
1224
+ >
1225
+ </el-breadcrumb>
1226
+ </template>
1227
+
1228
+ <script>
1229
+ export default {
1230
+ data() {
1231
+ return {
1232
+ routerItems: []
1233
+ };
1234
+ },
1235
+ props: {
1236
+ modelName: {
1237
+ type: String,
1238
+ required: false
1239
+ }
1240
+ },
1241
+ computed: {},
1242
+ watch: {
1243
+ $route() {
1244
+ this.getBreadcrumb();
1245
+ }
1246
+ },
1247
+ methods: {
1248
+ getBreadcrumb() {
1249
+ let matched = this.$route.matched.filter(item => item.name);
1250
+ const first = matched[0];
1251
+ if (first && first.name.trim().toLocaleLowerCase() !== 'index'.toLocaleLowerCase()) {
1252
+ matched = [
1253
+ {
1254
+ path: '/',
1255
+ meta: {
1256
+ title: this.modelName !== undefined ? this.modelName : '首页'
1257
+ }
1258
+ }
1259
+ ].concat(matched);
1260
+ }
1261
+ this.routerItems = matched;
1262
+ }
1263
+ },
1264
+ created() {
1265
+ this.getBreadcrumb();
1266
+ }
1267
+ };
1268
+ </script>
1269
+ <style scoped>
1270
+ .el-breadcrumb {
1271
+ width: 100%;
1272
+ height: 100%;
1273
+ line-height: 50px;
1274
+ text-align: start;
1275
+ cursor: pointer;
1276
+ }
1277
+ .logInfo {
1278
+ top: 0px;
1279
+ position: relative;
1280
+ display: inline;
1281
+ }
1282
+ .tempo-api-right-menu-login-icon {
1283
+ display: inline-block;
1284
+ background-position: 0px -33px;
1285
+ margin-right: 20px;
1286
+ margin-top: 18px;
1287
+ width: 24px;
1288
+ height: 25px;
1289
+ margin-left: 10px;
1290
+ }
1291
+ .el-popover {
1292
+ padding: 0px;
1293
+ }
1294
+ </style>
1295
+ ```
1296
+ - no-access.vue
1297
+ 完整代码如下:
1298
+ ```html
1299
+ <template>
1300
+ <div class="context">
1301
+ <img src="../assets/images/not_found.png" />
1302
+ <h2><font color="#DB1260">无访问权限!</font></h2>
1303
+ </div>
1304
+ </template>
1305
+ ```
1306
+ #### 5.5.8 vue.config.js 文件
1307
+ vue.config.js 完整代码如下:
1308
+ - 说明
1309
+ 程序编译打包信息配置、多页面管理、编译路径、后端代理配置等
1310
+ ```js
1311
+ var path = require('path');
1312
+ const resolve = function(dir) {
1313
+ return path.join(__dirname, dir);
1314
+ };
1315
+ module.exports = {
1316
+ pages: {
1317
+ //流程
1318
+ expense: {
1319
+ entry: 'src/pages/expense/main.js',
1320
+ template: '/bpm/expense/view',
1321
+ filename: 'expense/index.html'
1322
+ }
1323
+
1324
+ // template 默认会去找 public/subpage.html 页面,如果找不到会使用 public/index.html 文件
1325
+ // 输出文件会默认的推断为 subpage.html
1326
+ //subpage: 'src/subpage/main.js'
1327
+ },
1328
+ publicPath: '/<frontend-app>/',
1329
+ //打包输出路径
1330
+ outputDir: '<frontend-app>',
1331
+ lintOnSave: false,
1332
+ //后端代理服务器
1333
+ devServer: {
1334
+ proxy: {
1335
+ '/gateway/': {
1336
+ target: process.env.GATEWAY_ORIGIN,
1337
+ changeOrigin: true,
1338
+ pathRewrite: {
1339
+ '^/gateway/': ''
1340
+ }
1341
+ }
1342
+ }
1343
+ },
1344
+ chainWebpack: config => {
1345
+ config.module
1346
+ .rule('compile')
1347
+ .test(/\.js$/)
1348
+ .include.add(resolve('src'))
1349
+ .add(resolve('node_modules/cloud-module-base/packages'))
1350
+ .add(resolve('node_modules/cloud-module-base/static'))
1351
+ .add(resolve('node_modules/cloud-module-bpm/packages'))
1352
+ .end()
1353
+ .use('babel')
1354
+ .loader('babel-loader')
1355
+ .options({
1356
+ presets: [
1357
+ [
1358
+ '@babel/preset-env',
1359
+ {
1360
+ modules: false
1361
+ }
1362
+ ]
1363
+ ]
1364
+ });
1365
+ }
1366
+ };
1367
+ ```
1368
+ #### 5.5.9 view 文件夹
1369
+ - Grid.vue
1370
+ 说明:
1371
+ 引入 bpm-grid-buttons 流程新建,查询按钮
1372
+ ```html
1373
+ <bpm-grid-buttons :procDefKey="procDefKey" :isShowButton="true" @bpm-query="queryExample" @bpm-delete="deleteRow"></bpm-grid-buttons>
1374
+ ```
1375
+ | 名称 | 说明 |
1376
+ | ------------------- | --------------------------------------------------------- |
1377
+ | procDefKey | 流程 key |
1378
+ | queryExample | 查询方法 |
1379
+ | deleteRow | 删除方法 |
1380
+ | isShowButton | 是否显示:我的工作,所有工作 true 显示 false 不显示 |
1381
+ | isDisabledAddButton | 是否禁用新建按钮, true 禁用,false 不禁用 |
1382
+ 效果图如下:
1383
+ 另外一种:
1384
+ ```vue
1385
+ <bpm-grid-buttons-new :procDefKey="procDefKey" :isShowButton="false" @bpm-query="queryExample" @bpm-delete="deleteRow"></bpm-grid-buttons-new>
1386
+ ```
1387
+ | 名称 | 说明 |
1388
+ | ------------------- | ------------------------------------------------------------ |
1389
+ | procDefKey | 流程 key |
1390
+ | queryExample | 查询方法 |
1391
+ | deleteRow | 删除方法 |
1392
+ | isShowButton | 是否显示:我的工作,所有工作,我的审批按钮 true 显示 false 不显示 |
1393
+ | isDisabledAddButton | 是否禁用新建按钮, true 禁用,false 不禁用 |
1394
+ 不显示效果:
1395
+ 引入可以调用流程的方法的工具
1396
+ ```js
1397
+ import { MeritBPM } from 'cloud-module-bpm/packages/utils/merit-bpm';
1398
+ export default {
1399
+ data() {
1400
+ return {
1401
+ MeritBPM
1402
+ };
1403
+ }
1404
+ };
1405
+ ```
1406
+ 使用 MeritBPM.open()方法打开流程
1407
+ Grid.vue 完整代码如下:
1408
+ ```html
1409
+ <template>
1410
+ <el-container>
1411
+ <el-main style="padding: 8px 12px;height:auto">
1412
+ <el-row justify="space-between" type="flex" style="margin-bottom: 10px;">
1413
+ <el-col :span="7">
1414
+ <bpm-grid-buttons :procDefKey="procDefKey" @bpm-query="queryExample" @bpm-delete="deleteRow"></bpm-grid-buttons>
1415
+ </el-col>
1416
+
1417
+ <div class="tooltipI">
1418
+ <el-tooltip placement="bottom">
1419
+ <div slot="content" v-for="typeEnum in queryTypeEnums" :key="typeEnum" style="margin-top: 8px;">
1420
+ {{ typeEnum }} : {{ $t(typeEnumLabel(typeEnum, "name")) }}
1421
+ <br />
1422
+ {{ $t(typeEnumLabel(typeEnum, "explain")) }}
1423
+ <br />
1424
+ </div>
1425
+ <i class="el-icon-question"></i>
1426
+ </el-tooltip>
1427
+ </div>
1428
+ <el-col :span="7">
1429
+ <el-input class="input-with-select" size="mini" v-model="keyword">
1430
+ <el-select v-model="queryType" slot="prepend" style="width: 125px" :placeholder="$t('select.selectOpinion')">
1431
+ <el-option :label="$t('select.IdealizedQuery')" value="ideal"></el-option>
1432
+ </el-select>
1433
+ <el-button slot="append" size="mini" icon="el-icon-search" @click="queryKeyword()"></el-button>
1434
+ </el-input>
1435
+ </el-col>
1436
+ </el-row>
1437
+ <el-row>
1438
+ <el-table :data="tableData" :height="tableHeight" @selection-change="handleSelectionChange">
1439
+ <el-table-column type="selection" width="55"></el-table-column>
1440
+ <el-table-column fixed type="index" :label="$t('exp.id')" align="left" :index="customIndex"></el-table-column>
1441
+ <el-table-column prop="name" :label="$t('exp.name')" align="left"></el-table-column>
1442
+ <el-table-column prop="project" :label="$t('exp.project')" align="left"></el-table-column>
1443
+ <el-table-column prop="flowAuthorNames" :label="$t('exp.flowAuthorNames')" align="left"></el-table-column>
1444
+ <el-table-column prop="procDealStatus" :label="$t('exp.procDealStatus')" align="left">
1445
+ <template slot-scope="scope">
1446
+ <el-tag :type="$t(statusColorLabel(scope.row.procDealStatus))">{{ $t(statusLabel(scope.row.procDealStatus)) }}</el-tag>
1447
+ </template>
1448
+ </el-table-column>
1449
+ <el-table-column prop="nodeNames" :label="$t('exp.nodeNames')" align="left"></el-table-column>
1450
+ <el-table-column :label="$t('base.table.action')" width="100">
1451
+ <template slot-scope="scope">
1452
+ <el-button style="border: none;" size="mini" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)"> </el-button>
1453
+ </template>
1454
+ </el-table-column>
1455
+ </el-table>
1456
+ <el-pagination
1457
+ @size-change="handleSizeChange"
1458
+ @current-change="handleCurrentChange"
1459
+ :current-page="currentPage"
1460
+ :page-sizes="[10, 20, 30, 40]"
1461
+ :page-size="pageSize"
1462
+ layout="total, sizes, prev, pager, next, jumper"
1463
+ :total="total"
1464
+ background
1465
+ ></el-pagination>
1466
+ </el-row>
1467
+ </el-main>
1468
+ </el-container>
1469
+ </template>
1470
+ <script>
1471
+ import { MeritBPM } from 'cloud-module-bpm/packages/utils/merit-bpm';
1472
+ export default {
1473
+ data() {
1474
+ return {
1475
+ MeritBPM,
1476
+ myStatusValue: 'my',
1477
+ allStatusValue: 'all',
1478
+ lastStatusValue: 'all', //查询状态
1479
+ procDefKey: 'travel_expense', //流程id
1480
+
1481
+ currentPage: 1,
1482
+ pageSize: 10,
1483
+ total: 10,
1484
+ tableData: [],
1485
+ queryTypeEnums: ['ideal'],
1486
+ keyword: '',
1487
+ queryType: 'ideal',
1488
+ tableHeight: window.innerHeight - 160,
1489
+ selectedData: []
1490
+ };
1491
+ },
1492
+ //方法
1493
+ methods: {
1494
+ //获取所选中的id
1495
+ handleSelectionChange(rows) {
1496
+ this.selectedData = [];
1497
+ rows.forEach(arry => {
1498
+ this.selectedData.push(arry.id);
1499
+ });
1500
+ },
1501
+
1502
+ queryExample(type) {
1503
+ this.lastStatusValue = type;
1504
+ if (type.indexOf('all') != -1) {
1505
+ this.allStatusValue = type;
1506
+ } else {
1507
+ this.myStatusValue = type;
1508
+ }
1509
+ this.queryKeyword();
1510
+ },
1511
+ // 删除操作
1512
+ deleteRow() {
1513
+ let _this = this;
1514
+ let message = _this.$i18n.t('comm.del');
1515
+ if (_this.selectedData.length == 0) {
1516
+ return _this.$message({
1517
+ message: _this.$i18n.t('comm.message_action'),
1518
+ type: 'error'
1519
+ });
1520
+ }
1521
+ //提示框
1522
+ this.$confirm(message, _this.$i18n.t('comm.tooltip'), {
1523
+ confirmButtonText: _this.$i18n.t('comm.confirm'),
1524
+ cancelButtonText: _this.$i18n.t('comm.cancel'),
1525
+ type: 'warning'
1526
+ })
1527
+ .then(() => {
1528
+ let ids = _this.selectedData.join(',');
1529
+ _this.axios['<business-service-client>']
1530
+ .post(this.HOST + '/deleteTravel/batch', {
1531
+ ids: ids
1532
+ })
1533
+ .then(function(res) {
1534
+ if (res.status == '1') {
1535
+ _this.$message.success(_this.$i18n.t('comm.messagee_success_delete'));
1536
+ } else {
1537
+ _this.$message.error(_this.$i18n.t('comm.message_error_delete'));
1538
+ }
1539
+ _this.selectedData = [];
1540
+ _this.requestGridData();
1541
+ });
1542
+ })
1543
+ .catch(() => {
1544
+ this.$message.info(_this.$i18n.t('comm.message_info_delete'));
1545
+ });
1546
+ },
1547
+ // 按照查询条件查询
1548
+ queryKeyword() {
1549
+ if (this.queryType == 'ideal') {
1550
+ this.queryIdealData();
1551
+ }
1552
+ },
1553
+
1554
+ //理想化查询
1555
+ queryIdealData() {
1556
+ var _this = this;
1557
+ _this.axios['<business-service-client>']
1558
+ .post(this.HOST + '/page/ideal', {
1559
+ pageNumber: _this.currentPage,
1560
+ pageSize: _this.pageSize,
1561
+ procDefKey: _this.procDefKey,
1562
+ bpmStatus: _this.lastStatusValue
1563
+ })
1564
+ .then(function(res) {
1565
+ if (res.status == '1') {
1566
+ _this.tableData = res.data.rows;
1567
+ _this.total = res.data.total;
1568
+ } else {
1569
+ console.log(res.stackmessage);
1570
+ }
1571
+ })
1572
+ .catch(function(err) {
1573
+ console.log(err);
1574
+ });
1575
+ },
1576
+
1577
+ //编辑
1578
+ handleEdit(index, row) {
1579
+ // 打开流程
1580
+ MeritBPM.open(this, { businessId: row.id }, {});
1581
+ },
1582
+
1583
+ //请求数据
1584
+ requestGridData() {
1585
+ //理想化查询
1586
+ this.queryIdealData();
1587
+ },
1588
+ statusColorLabel(status) {
1589
+ let color = 'statusColor.' + status;
1590
+ return color;
1591
+ },
1592
+ statusLabel(status) {
1593
+ return 'status.' + status;
1594
+ },
1595
+ customIndex(index) {
1596
+ return index + 1 + (this.currentPage - 1) * this.pageSize;
1597
+ },
1598
+ //每页显示数据个数变化时调用
1599
+ handleSizeChange(val) {
1600
+ this.pageSize = val;
1601
+ this.requestGridData();
1602
+ },
1603
+ //页码变化时调用
1604
+ handleCurrentChange(val) {
1605
+ this.currentPage = val;
1606
+ this.requestGridData();
1607
+ },
1608
+ typeEnumLabel(type, param) {
1609
+ return 'apiType.' + type + '.' + param;
1610
+ }
1611
+ },
1612
+
1613
+ mounted() {
1614
+ this.requestGridData();
1615
+ }
1616
+ };
1617
+ </script>
1618
+
1619
+ <style scoped>
1620
+ .el-col-7 {
1621
+ width: auto !important;
1622
+ }
1623
+ .tooltipI {
1624
+ margin-top: 6px;
1625
+ flex: auto;
1626
+ text-align: right;
1627
+ margin-right: 10px;
1628
+ }
1629
+ </style>
1630
+ ```
1631
+ 如上 html 中流程引入的相关参数说明,请参考《流程应用模块相关接口》中业务模块--主页部分
1632
+ - form-edit.vue
1633
+ 说明:
1634
+ 在主页 Grid.vue 中的 handleEdit()方法中调用了 MeritBPM.open 就是打开流程的方法
1635
+ 引入流程操作按钮
1636
+ ```html
1637
+ <bpm-form-tools :procDefKey="procDefKey" @init="init" @save="save" ref="bpmformtools"></bpm-form-tools>
1638
+ ```
1639
+ 效果图如下:
1640
+ form-edit.vue 完整代码如下:
1641
+ ```html
1642
+ <template>
1643
+ <el-form :model="expense" label-width="80px" style="padding: 16px;width:850px;margin:20px auto;border:1px solid #cecece;">
1644
+ <!--引入流程操作按钮-->
1645
+ <el-row type="flex" style="margin:20px 0 10px 0;">
1646
+ <bpm-form-tools :procDefKey="procDefKey" @init="init" @save="save" ref="bpmformtools"></bpm-form-tools>
1647
+ </el-row>
1648
+
1649
+ <!--业务相关-->
1650
+ <el-row type="flex" style="margin:10px 0 10px 0;">
1651
+ <el-col style="font-size:24px;font-weight:bold" align="center">出差费用报销单</el-col>
1652
+ </el-row>
1653
+ <el-row>
1654
+ <el-col :span="24">
1655
+ <el-form-item :label="$t('exp.project')" prop="project">
1656
+ <el-input v-model="expense.project" :maxlength="100" show-word-limit size="mini" style="width:100%"></el-input>
1657
+ </el-form-item>
1658
+ </el-col>
1659
+ </el-row>
1660
+ <el-row>
1661
+ <el-col :span="12">
1662
+ <el-form-item :label="$t('exp.belong_depart')" prop="belongDept">
1663
+ <el-input
1664
+ v-model="expense.belongDept"
1665
+ readonly="readonly"
1666
+ :maxlength="100"
1667
+ show-word-limit
1668
+ size="mini"
1669
+ style="width:100%"
1670
+ ></el-input>
1671
+ </el-form-item>
1672
+ </el-col>
1673
+ <el-col :span="12">
1674
+ <el-form-item :label="$t('exp.name')" prop="name">
1675
+ <el-input v-model="expense.name" readonly="readonly" :maxlength="100" show-word-limit size="mini" style="width:100%"></el-input>
1676
+ </el-form-item>
1677
+ </el-col>
1678
+ </el-row>
1679
+ <el-row>
1680
+ <el-col :span="12">
1681
+ <el-form-item :label="$t('exp.type')" prop="type">
1682
+ <el-select v-model="expense.type" placeholder="请选择" style="width:100%;">
1683
+ <el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
1684
+ </el-select>
1685
+ </el-form-item>
1686
+ </el-col>
1687
+ <el-col :span="12">
1688
+ <el-form-item :label="$t('exp.amount')" prop="amount">
1689
+ <el-input-number
1690
+ v-model="expense.amount"
1691
+ style="width:100%;"
1692
+ :min="0"
1693
+ :max="100000"
1694
+ size="mini"
1695
+ :precision="2"
1696
+ @blur="blurAmount"
1697
+ ></el-input-number>
1698
+ </el-form-item>
1699
+ </el-col>
1700
+ </el-row>
1701
+ <el-row>
1702
+ <el-col :span="8">
1703
+ <el-form-item :label="$t('exp.destination')" prop="destination">
1704
+ <el-input v-model="expense.destination" :maxlength="50" show-word-limit size="mini" style="width:100%"></el-input>
1705
+ </el-form-item>
1706
+ </el-col>
1707
+ <el-col :span="16">
1708
+ <el-form-item :label="$t('exp.travel_time')" prop="time">
1709
+ <el-date-picker
1710
+ v-model="expense.time"
1711
+ value-format="timestamp"
1712
+ style="width:100%;"
1713
+ type="daterange"
1714
+ range-separator="至"
1715
+ start-placeholder="开始日期"
1716
+ end-placeholder="结束日期"
1717
+ >
1718
+ </el-date-picker>
1719
+ </el-form-item>
1720
+ </el-col>
1721
+ </el-row>
1722
+ <el-row>
1723
+ <el-col>
1724
+ <el-form-item :label="$t('exp.travel_remark')" prop="remark">
1725
+ <el-input
1726
+ v-model="expense.remark"
1727
+ type="textarea"
1728
+ :maxlength="300"
1729
+ show-word-limit
1730
+ :autosize="{ minRows: 4, maxRows: 4 }"
1731
+ ></el-input>
1732
+ </el-form-item>
1733
+ </el-col>
1734
+ </el-row>
1735
+ </el-form>
1736
+ </template>
1737
+ <script>
1738
+ import dateFormat from 'cloud-module-base/static/js/utils/dataFormat.js';
1739
+ export default {
1740
+ data() {
1741
+ return {
1742
+ //流程ID
1743
+ procDefKey: 'travel_expense',
1744
+
1745
+ //业务相关
1746
+ expense: {
1747
+ project: '',
1748
+ belongDept: '',
1749
+ name: '',
1750
+ destination: '',
1751
+ amount: 0,
1752
+ type: '',
1753
+ time: [],
1754
+ remark: ''
1755
+ },
1756
+ typeOptions: [
1757
+ {
1758
+ value: 'options1',
1759
+ label: '项目支持'
1760
+ },
1761
+ {
1762
+ value: 'options2',
1763
+ label: '售前支撑'
1764
+ }
1765
+ ]
1766
+ };
1767
+ },
1768
+ computed: {},
1769
+
1770
+ methods: {
1771
+ blurAmount() {
1772
+ let that = this;
1773
+ Object.assign(that.$refs.bpmformtools.ruleEngine, that.example);
1774
+ if (that.example.id == null) {
1775
+ that.$refs.bpmformtools.MeritBPM.initRuleEngine(that.$refs.bpmformtools);
1776
+ } else {
1777
+ that.$refs.bpmformtools.MeritBPM.runRuleEngine(that.$refs.bpmformtools, {}, {});
1778
+ }
1779
+ },
1780
+ // 业务数据初始化表单
1781
+ init(params) {
1782
+ let _this = this;
1783
+ if (params.id == '') {
1784
+ this.initUserInfo(); // 业务代码
1785
+ params.callback(this.expense); //流程中的回调函数
1786
+ return;
1787
+ }
1788
+
1789
+ // 初始化数据
1790
+ _this.axios['<business-service-client>']
1791
+ .post(this.HOST + '/get-travel-expense', {
1792
+ id: params.id
1793
+ })
1794
+ .then(function(res) {
1795
+ Object.assign(_this.expense, res.data);
1796
+ if (_this.expense.startTime != null) {
1797
+ _this.expense.time = [_this.expense.startTime, _this.expense.endTime];
1798
+ }
1799
+ params.callback(_this.expense); //流程中的回调函数
1800
+ });
1801
+ },
1802
+ // 初始化部门,姓名,标题
1803
+ initUserInfo() {
1804
+ let _this = this;
1805
+ this.axios['<system-service-client>']
1806
+ .get('/api/ou/user/session')
1807
+ .then(result => {
1808
+ if (result) {
1809
+ if (_this.expense.project == '') {
1810
+ _this.expense.name = result.name;
1811
+ _this.expense.belongDept = result.deptName;
1812
+ _this.expense.project = result.name + '_' + dateFormat(new Date()) + '_出差报销';
1813
+ }
1814
+ }
1815
+ })
1816
+ .catch(err => {
1817
+ console.log(err);
1818
+ });
1819
+ },
1820
+ // 业务数据保存方法
1821
+ save(bpmSaveAfter) {
1822
+ let _this = this;
1823
+ if (_this.expense.time != undefined && _this.expense.time.length >= 2) {
1824
+ (_this.expense.startTime = _this.expense.time[0]), (_this.expense.endTime = _this.expense.time[1]);
1825
+ }
1826
+ _this.axios['<business-service-client>'].post(this.HOST + '/save', _this.expense).then(function(res) {
1827
+ //流程相关
1828
+ // 保存成功,saveTravel返回expense对象的目的是:获取id,用于保存回调方法。
1829
+ //如果不返回expense对象,则获取不到id,保存回调方法失败
1830
+ Object.assign(_this.expense, res.data);
1831
+ _this.expense['bpmSubject'] = res.data.project;
1832
+ _this.expense['bpmUrgent'] = '普通';
1833
+ _this.expense['bpmSecret'] = '高级';
1834
+ bpmSaveAfter(_this.expense); //流程中的回调函数
1835
+ });
1836
+ }
1837
+ }
1838
+ };
1839
+ </script>
1840
+ <style>
1841
+ .el-range-editor.el-input__inner {
1842
+ padding: 0 10px;
1843
+ }
1844
+ </style>
1845
+ ```
1846
+ 如上 html 中流程引入的相关参数说明,请参考《流程应用模块相关接口》中业务模块--表单
1847
+ - form-read.vue
1848
+ 说明:
1849
+ 引入流程操作按钮
1850
+ ```html
1851
+ <bpm-form-tools :procDefKey="procDefKey" @init="init" @save="save" ref="bpmformtools"></bpm-form-tools>
1852
+ ```
1853
+ 效果图如下:
1854
+ 完整代码如下:
1855
+ ```html
1856
+ <template>
1857
+ <el-form :model="expense" label-width="80px" style="padding: 16px;width:700px;margin:20px auto;border:1px solid #cecece;">
1858
+ <el-row type="flex" style="margin:20px 0 10px 0;">
1859
+ <bpm-form-tools :procDefKey="procDefKey" @init="init" @save="save" ref="bpmformtools"></bpm-form-tools>
1860
+ </el-row>
1861
+ <el-row type="flex" style="margin:10px 0 10px 0;">
1862
+ <el-col style="font-size:24px;font-weight:bold" align="center">出差费用报销单</el-col>
1863
+ </el-row>
1864
+ <el-row>
1865
+ <el-col :span="24">
1866
+ <el-form-item :label="$t('exp.project')" prop="project">
1867
+ <el-input v-model="expense.project" disabled :maxlength="100" show-word-limit size="mini" style="width:100%"></el-input>
1868
+ </el-form-item>
1869
+ </el-col>
1870
+ </el-row>
1871
+ <el-row>
1872
+ <el-col :span="12">
1873
+ <el-form-item :label="$t('exp.belong_depart')" prop="belongDept">
1874
+ <el-input
1875
+ v-model="expense.belongDept"
1876
+ disabled
1877
+ readonly="readonly"
1878
+ :maxlength="100"
1879
+ show-word-limit
1880
+ size="mini"
1881
+ style="width:100%"
1882
+ ></el-input>
1883
+ </el-form-item>
1884
+ </el-col>
1885
+ <el-col :span="12">
1886
+ <el-form-item :label="$t('exp.name')" prop="name">
1887
+ <el-input
1888
+ v-model="expense.name"
1889
+ disabled
1890
+ readonly="readonly"
1891
+ :maxlength="100"
1892
+ show-word-limit
1893
+ size="mini"
1894
+ style="width:100%"
1895
+ ></el-input>
1896
+ </el-form-item>
1897
+ </el-col>
1898
+ </el-row>
1899
+ <el-row>
1900
+ <el-col :span="12">
1901
+ <el-form-item :label="$t('exp.type')" prop="type">
1902
+ <el-select v-model="expense.type" disabled placeholder="请选择" style="width:100%;">
1903
+ <el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
1904
+ </el-select>
1905
+ </el-form-item>
1906
+ </el-col>
1907
+ <el-col :span="12">
1908
+ <el-form-item :label="$t('exp.amount')" prop="amount">
1909
+ <el-input-number
1910
+ v-model="expense.amount"
1911
+ disabled
1912
+ :min="0"
1913
+ :max="100000"
1914
+ size="mini"
1915
+ :precision="2"
1916
+ style="width:100%"
1917
+ ></el-input-number>
1918
+ </el-form-item>
1919
+ </el-col>
1920
+ </el-row>
1921
+ <el-row>
1922
+ <el-col :span="8">
1923
+ <el-form-item :label="$t('exp.destination')" prop="destination">
1924
+ <el-input v-model="expense.destination" disabled :maxlength="50" show-word-limit size="mini" style="width:100%"></el-input>
1925
+ </el-form-item>
1926
+ </el-col>
1927
+ <el-col :span="16">
1928
+ <el-form-item :label="$t('exp.travel_time')" prop="time">
1929
+ <el-date-picker
1930
+ disabled
1931
+ v-model="expense.time"
1932
+ style="width:100%;"
1933
+ type="daterange"
1934
+ value-format="timestamp"
1935
+ range-separator="至"
1936
+ start-placeholder="开始日期"
1937
+ end-placeholder="结束日期"
1938
+ >
1939
+ </el-date-picker>
1940
+ </el-form-item>
1941
+ </el-col>
1942
+ </el-row>
1943
+ <el-row>
1944
+ <el-col>
1945
+ <el-form-item :label="$t('exp.travel_remark')" prop="remark">
1946
+ <el-input
1947
+ v-model="expense.remark"
1948
+ type="textarea"
1949
+ disabled
1950
+ :maxlength="300"
1951
+ show-word-limit
1952
+ :autosize="{ minRows: 4, maxRows: 4 }"
1953
+ ></el-input>
1954
+ </el-form-item>
1955
+ </el-col>
1956
+ </el-row>
1957
+ </el-form>
1958
+ </template>
1959
+ <script>
1960
+ import dateFormat from 'cloud-module-base/static/js/utils/dataFormat.js';
1961
+ export default {
1962
+ data() {
1963
+ return {
1964
+ procDefKey: 'travel_expense',
1965
+ expense: {
1966
+ project: '',
1967
+ belongDept: '',
1968
+ name: '',
1969
+ destination: '',
1970
+ amount: 0,
1971
+ type: '',
1972
+ time: [],
1973
+ remark: ''
1974
+ },
1975
+ typeOptions: [
1976
+ {
1977
+ value: 'options1',
1978
+ label: '项目支持'
1979
+ },
1980
+ {
1981
+ value: 'options2',
1982
+ label: '售前支撑'
1983
+ }
1984
+ ]
1985
+ };
1986
+ },
1987
+ computed: {},
1988
+
1989
+ methods: {
1990
+ init(params) {
1991
+ let _this = this;
1992
+ if (params.id == '') {
1993
+ params.callback(this.expense);
1994
+ return;
1995
+ }
1996
+
1997
+ // 初始化数据
1998
+ _this.axios['<business-service-client>']
1999
+ .post(this.HOST + '/get-travel-expense', {
2000
+ id: params.id
2001
+ })
2002
+ .then(function(res) {
2003
+ Object.assign(_this.expense, res.data);
2004
+ if (_this.expense.startTime != null) {
2005
+ _this.expense.time = [_this.expense.startTime, _this.expense.endTime];
2006
+ }
2007
+ params.callback(_this.expense);
2008
+ });
2009
+ },
2010
+
2011
+ save(bpmSaveAfter) {
2012
+ let _this = this;
2013
+ if (_this.expense.time != undefined && _this.expense.time.length == 2) {
2014
+ (_this.expense.startTime = _this.expense.time[0]), (_this.expense.endTime = _this.expense.time[1]);
2015
+ }
2016
+ _this.axios['<business-service-client>'].post(this.HOST + '/save', _this.expense).then(function(res) {
2017
+ Object.assign(_this.expense, res.data);
2018
+ _this.expense['bpmSubject'] = res.data.project;
2019
+ _this.expense['bpmUrgent'] = '普通';
2020
+ _this.expense['bpmSecret'] = '高级';
2021
+ bpmSaveAfter(_this.expense);
2022
+ });
2023
+ }
2024
+ }
2025
+ };
2026
+ </script>
2027
+ <style>
2028
+ html,
2029
+ body {
2030
+ width: 100%;
2031
+ height: 98%;
2032
+ }
2033
+ </style>
2034
+ ```
2035
+ 只读表单(form-edit.vue)和编辑表单(form-read.vue)区别:
2036
+ 相同点:流程部分相同,方法相同
2037
+ 不同点:业务部分,不能做任何编辑,只能读,加上 disabled