create-yss-spec 2.2.9 → 2.2.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 (580) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/mcp_config.json +8 -0
  4. package/template/.agents/rules/yss-ai-skills.md +3 -1
  5. package/template/.agents/skills/.yss-skills-manifest.json +51 -25
  6. package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -3
  7. package/template/.agents/skills/component-selection-imports/SKILL.md +2 -2
  8. package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
  9. package/template/.agents/skills/yss-api-integration/SKILL.md +85 -339
  10. package/template/.agents/skills/yss-application/SKILL.md +7 -5
  11. package/template/.agents/skills/yss-application/references/application-layer-guide.md +60 -105
  12. package/template/.agents/skills/yss-components/SKILL.md +1 -1
  13. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  18. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  23. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  24. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  25. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  31. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  32. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  33. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  34. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  35. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  36. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  37. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  38. package/template/.agents/skills/yss-design-system/references/design-system.md +2 -2
  39. package/template/.agents/skills/yss-domain/SKILL.md +3 -3
  40. package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +61 -236
  41. package/template/.agents/skills/yss-dto/SKILL.md +5 -5
  42. package/template/.agents/skills/yss-dto/references/README.md +2 -2
  43. package/template/.agents/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  44. package/template/.agents/skills/yss-exception/SKILL.md +2 -0
  45. package/template/.agents/skills/yss-formily/SKILL.md +1 -1
  46. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  47. package/template/.agents/skills/yss-page-module-development/SKILL.md +2 -0
  48. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  49. package/template/.agents/skills/yss-repository/SKILL.md +7 -5
  50. package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  51. package/template/.agents/skills/yss-router/references/router-contract.yaml +41 -7
  52. package/template/.agents/skills/yss-ui/SKILL.md +6 -5
  53. package/template/.agents/skills/yss-ui/references/component-routing.md +1 -1
  54. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  55. package/template/.agents/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  56. package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  57. package/template/.agents/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  58. package/template/.agents/skills/yss-use-table-height/SKILL.md +78 -297
  59. package/template/.agents/skills/yss-use-tree-height/SKILL.md +51 -393
  60. package/template/.agents/skills/yss-web-controller/SKILL.md +12 -11
  61. package/template/.agents/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  62. package/template/.agents/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  63. package/template/{.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .agents/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
  64. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  65. package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  66. package/template/.agents/skills/yss-web-controller/assets/templates/{domain/dto/cmd/AddCmd.java.template → web/dto/UpdateRequest.java.template} +7 -11
  67. package/template/.agents/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  68. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  69. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  70. package/template/.claude/skills/code-review/references/yss-review-standards.md +3 -3
  71. package/template/.claude/skills/component-selection-imports/SKILL.md +2 -2
  72. package/template/.claude/skills/frontend-commit/SKILL.md +1 -1
  73. package/template/.claude/skills/yss-api-integration/SKILL.md +85 -339
  74. package/template/.claude/skills/yss-application/SKILL.md +7 -5
  75. package/template/.claude/skills/yss-application/references/application-layer-guide.md +60 -105
  76. package/template/.claude/skills/yss-components/SKILL.md +1 -1
  77. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  78. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  79. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  80. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  81. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  82. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  83. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  84. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  85. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  86. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  87. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  88. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  89. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  90. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  91. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  92. package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  93. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  94. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  95. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  96. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  97. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  98. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  99. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  100. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  101. package/template/.claude/skills/yss-design-system/SKILL.md +2 -2
  102. package/template/.claude/skills/yss-design-system/references/design-system.md +2 -2
  103. package/template/.claude/skills/yss-domain/SKILL.md +3 -3
  104. package/template/.claude/skills/yss-domain/references/domain-layer-guide.md +61 -236
  105. package/template/.claude/skills/yss-dto/SKILL.md +5 -5
  106. package/template/.claude/skills/yss-dto/references/README.md +2 -2
  107. package/template/.claude/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  108. package/template/.claude/skills/yss-exception/SKILL.md +2 -0
  109. package/template/.claude/skills/yss-formily/SKILL.md +1 -1
  110. package/template/.claude/skills/yss-mybatis/SKILL.md +2 -2
  111. package/template/.claude/skills/yss-page-module-development/SKILL.md +2 -0
  112. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  113. package/template/.claude/skills/yss-repository/SKILL.md +7 -5
  114. package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  115. package/template/.claude/skills/yss-router/references/router-contract.yaml +41 -7
  116. package/template/.claude/skills/yss-ui/SKILL.md +6 -5
  117. package/template/.claude/skills/yss-ui/references/component-routing.md +1 -1
  118. package/template/.claude/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  119. package/template/.claude/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  120. package/template/.claude/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  121. package/template/.claude/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  122. package/template/.claude/skills/yss-use-table-height/SKILL.md +78 -297
  123. package/template/.claude/skills/yss-use-tree-height/SKILL.md +51 -393
  124. package/template/.claude/skills/yss-web-controller/SKILL.md +12 -11
  125. package/template/.claude/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  126. package/template/.claude/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  127. package/template/{.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
  128. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  129. package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  130. package/template/{.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template} +7 -11
  131. package/template/.claude/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  132. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  133. package/template/.claude/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  134. package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -3
  135. package/template/.codex/skills/component-selection-imports/SKILL.md +2 -2
  136. package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
  137. package/template/.codex/skills/yss-api-integration/SKILL.md +85 -339
  138. package/template/.codex/skills/yss-application/SKILL.md +7 -5
  139. package/template/.codex/skills/yss-application/references/application-layer-guide.md +60 -105
  140. package/template/.codex/skills/yss-components/SKILL.md +1 -1
  141. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  142. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  143. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  144. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  145. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  146. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  147. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  148. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  149. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  150. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  151. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  152. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  153. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  154. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  155. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  156. package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  157. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  158. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  159. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  160. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  161. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  162. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  163. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  164. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  165. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  166. package/template/.codex/skills/yss-design-system/references/design-system.md +2 -2
  167. package/template/.codex/skills/yss-domain/SKILL.md +3 -3
  168. package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +61 -236
  169. package/template/.codex/skills/yss-dto/SKILL.md +5 -5
  170. package/template/.codex/skills/yss-dto/references/README.md +2 -2
  171. package/template/.codex/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  172. package/template/.codex/skills/yss-exception/SKILL.md +2 -0
  173. package/template/.codex/skills/yss-formily/SKILL.md +1 -1
  174. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  175. package/template/.codex/skills/yss-page-module-development/SKILL.md +2 -0
  176. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  177. package/template/.codex/skills/yss-repository/SKILL.md +7 -5
  178. package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  179. package/template/.codex/skills/yss-router/references/router-contract.yaml +41 -7
  180. package/template/.codex/skills/yss-ui/SKILL.md +6 -5
  181. package/template/.codex/skills/yss-ui/references/component-routing.md +1 -1
  182. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  183. package/template/.codex/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  184. package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  185. package/template/.codex/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  186. package/template/.codex/skills/yss-use-table-height/SKILL.md +78 -297
  187. package/template/.codex/skills/yss-use-tree-height/SKILL.md +51 -393
  188. package/template/.codex/skills/yss-web-controller/SKILL.md +12 -11
  189. package/template/.codex/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  190. package/template/.codex/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  191. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  192. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  193. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  194. package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  195. package/template/.codex/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  196. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  197. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  198. package/template/.cursor/mcp.json +8 -0
  199. package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -3
  200. package/template/.cursor/skills/component-selection-imports/SKILL.md +2 -2
  201. package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
  202. package/template/.cursor/skills/yss-api-integration/SKILL.md +85 -339
  203. package/template/.cursor/skills/yss-application/SKILL.md +7 -5
  204. package/template/.cursor/skills/yss-application/references/application-layer-guide.md +60 -105
  205. package/template/.cursor/skills/yss-components/SKILL.md +1 -1
  206. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  207. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  208. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  209. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  210. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  211. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  212. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  213. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  214. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  215. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  216. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  217. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  218. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  219. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  220. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  221. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  222. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  223. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  224. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  225. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  226. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  227. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  228. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  229. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  230. package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
  231. package/template/.cursor/skills/yss-design-system/references/design-system.md +2 -2
  232. package/template/.cursor/skills/yss-domain/SKILL.md +3 -3
  233. package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +61 -236
  234. package/template/.cursor/skills/yss-dto/SKILL.md +5 -5
  235. package/template/.cursor/skills/yss-dto/references/README.md +2 -2
  236. package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  237. package/template/.cursor/skills/yss-exception/SKILL.md +2 -0
  238. package/template/.cursor/skills/yss-formily/SKILL.md +1 -1
  239. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  240. package/template/.cursor/skills/yss-page-module-development/SKILL.md +2 -0
  241. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  242. package/template/.cursor/skills/yss-repository/SKILL.md +7 -5
  243. package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  244. package/template/.cursor/skills/yss-router/references/router-contract.yaml +41 -7
  245. package/template/.cursor/skills/yss-ui/SKILL.md +6 -5
  246. package/template/.cursor/skills/yss-ui/references/component-routing.md +1 -1
  247. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  248. package/template/.cursor/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  249. package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  250. package/template/.cursor/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  251. package/template/.cursor/skills/yss-use-table-height/SKILL.md +78 -297
  252. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +51 -393
  253. package/template/.cursor/skills/yss-web-controller/SKILL.md +12 -11
  254. package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  255. package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  256. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  257. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  258. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  259. package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  260. package/template/.cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  261. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  262. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  263. package/template/.cursorrules +9 -5
  264. package/template/.gemini/settings.json +8 -0
  265. package/template/.hermes/skills/code-review/references/yss-review-standards.md +3 -3
  266. package/template/.hermes/skills/component-selection-imports/SKILL.md +2 -2
  267. package/template/.hermes/skills/frontend-commit/SKILL.md +1 -1
  268. package/template/.hermes/skills/yss-api-integration/SKILL.md +85 -339
  269. package/template/.hermes/skills/yss-application/SKILL.md +7 -5
  270. package/template/.hermes/skills/yss-application/references/application-layer-guide.md +60 -105
  271. package/template/.hermes/skills/yss-components/SKILL.md +1 -1
  272. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  273. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  274. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  275. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  276. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  277. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  278. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  279. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  280. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  281. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  282. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  283. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  284. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  285. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  286. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  287. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  288. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  289. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  290. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  291. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  292. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  293. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  294. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  295. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  296. package/template/.hermes/skills/yss-design-system/SKILL.md +2 -2
  297. package/template/.hermes/skills/yss-design-system/references/design-system.md +2 -2
  298. package/template/.hermes/skills/yss-domain/SKILL.md +3 -3
  299. package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +61 -236
  300. package/template/.hermes/skills/yss-dto/SKILL.md +5 -5
  301. package/template/.hermes/skills/yss-dto/references/README.md +2 -2
  302. package/template/.hermes/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  303. package/template/.hermes/skills/yss-exception/SKILL.md +2 -0
  304. package/template/.hermes/skills/yss-formily/SKILL.md +1 -1
  305. package/template/.hermes/skills/yss-mybatis/SKILL.md +2 -2
  306. package/template/.hermes/skills/yss-page-module-development/SKILL.md +2 -0
  307. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  308. package/template/.hermes/skills/yss-repository/SKILL.md +7 -5
  309. package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  310. package/template/.hermes/skills/yss-router/references/router-contract.yaml +41 -7
  311. package/template/.hermes/skills/yss-ui/SKILL.md +6 -5
  312. package/template/.hermes/skills/yss-ui/references/component-routing.md +1 -1
  313. package/template/.hermes/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  314. package/template/.hermes/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  315. package/template/.hermes/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  316. package/template/.hermes/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  317. package/template/.hermes/skills/yss-use-table-height/SKILL.md +78 -297
  318. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +51 -393
  319. package/template/.hermes/skills/yss-web-controller/SKILL.md +12 -11
  320. package/template/.hermes/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  321. package/template/.hermes/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  322. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  323. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  324. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  325. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  326. package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  327. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  328. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  329. package/template/.kiro/settings/mcp.json +8 -0
  330. package/template/.mcp.json +8 -0
  331. package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -3
  332. package/template/.pi/skills/component-selection-imports/SKILL.md +2 -2
  333. package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
  334. package/template/.pi/skills/yss-api-integration/SKILL.md +85 -339
  335. package/template/.pi/skills/yss-application/SKILL.md +7 -5
  336. package/template/.pi/skills/yss-application/references/application-layer-guide.md +60 -105
  337. package/template/.pi/skills/yss-components/SKILL.md +1 -1
  338. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  339. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  340. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  341. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  342. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  343. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  344. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  345. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  346. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  347. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  348. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  349. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  350. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  351. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  352. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  353. package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  354. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  355. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  356. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  357. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  358. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  359. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  360. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  361. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  362. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  363. package/template/.pi/skills/yss-design-system/references/design-system.md +2 -2
  364. package/template/.pi/skills/yss-domain/SKILL.md +3 -3
  365. package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +61 -236
  366. package/template/.pi/skills/yss-dto/SKILL.md +5 -5
  367. package/template/.pi/skills/yss-dto/references/README.md +2 -2
  368. package/template/.pi/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  369. package/template/.pi/skills/yss-exception/SKILL.md +2 -0
  370. package/template/.pi/skills/yss-formily/SKILL.md +1 -1
  371. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  372. package/template/.pi/skills/yss-page-module-development/SKILL.md +2 -0
  373. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  374. package/template/.pi/skills/yss-repository/SKILL.md +7 -5
  375. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  376. package/template/.pi/skills/yss-router/references/router-contract.yaml +41 -7
  377. package/template/.pi/skills/yss-ui/SKILL.md +6 -5
  378. package/template/.pi/skills/yss-ui/references/component-routing.md +1 -1
  379. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  380. package/template/.pi/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  381. package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  382. package/template/.pi/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  383. package/template/.pi/skills/yss-use-table-height/SKILL.md +78 -297
  384. package/template/.pi/skills/yss-use-tree-height/SKILL.md +51 -393
  385. package/template/.pi/skills/yss-web-controller/SKILL.md +12 -11
  386. package/template/.pi/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  387. package/template/.pi/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  388. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  389. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  390. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  391. package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  392. package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  393. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  394. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  395. package/template/.qoder/skills/code-review/references/yss-review-standards.md +3 -3
  396. package/template/.qoder/skills/component-selection-imports/SKILL.md +2 -2
  397. package/template/.qoder/skills/frontend-commit/SKILL.md +1 -1
  398. package/template/.qoder/skills/yss-api-integration/SKILL.md +85 -339
  399. package/template/.qoder/skills/yss-application/SKILL.md +7 -5
  400. package/template/.qoder/skills/yss-application/references/application-layer-guide.md +60 -105
  401. package/template/.qoder/skills/yss-components/SKILL.md +1 -1
  402. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  403. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  404. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  405. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  406. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  407. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  408. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  409. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  410. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  411. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  412. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  413. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  414. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  415. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  416. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  417. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  418. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  419. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  420. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  421. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  422. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  423. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  424. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  425. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  426. package/template/.qoder/skills/yss-design-system/SKILL.md +2 -2
  427. package/template/.qoder/skills/yss-design-system/references/design-system.md +2 -2
  428. package/template/.qoder/skills/yss-domain/SKILL.md +3 -3
  429. package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +61 -236
  430. package/template/.qoder/skills/yss-dto/SKILL.md +5 -5
  431. package/template/.qoder/skills/yss-dto/references/README.md +2 -2
  432. package/template/.qoder/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  433. package/template/.qoder/skills/yss-exception/SKILL.md +2 -0
  434. package/template/.qoder/skills/yss-formily/SKILL.md +1 -1
  435. package/template/.qoder/skills/yss-mybatis/SKILL.md +2 -2
  436. package/template/.qoder/skills/yss-page-module-development/SKILL.md +2 -0
  437. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  438. package/template/.qoder/skills/yss-repository/SKILL.md +7 -5
  439. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  440. package/template/.qoder/skills/yss-router/references/router-contract.yaml +41 -7
  441. package/template/.qoder/skills/yss-ui/SKILL.md +6 -5
  442. package/template/.qoder/skills/yss-ui/references/component-routing.md +1 -1
  443. package/template/.qoder/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  444. package/template/.qoder/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  445. package/template/.qoder/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  446. package/template/.qoder/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  447. package/template/.qoder/skills/yss-use-table-height/SKILL.md +78 -297
  448. package/template/.qoder/skills/yss-use-tree-height/SKILL.md +51 -393
  449. package/template/.qoder/skills/yss-web-controller/SKILL.md +12 -11
  450. package/template/.qoder/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  451. package/template/.qoder/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  452. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  453. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  454. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  455. package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  456. package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  457. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  458. package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  459. package/template/.trae/skills/code-review/references/yss-review-standards.md +3 -3
  460. package/template/.trae/skills/component-selection-imports/SKILL.md +2 -2
  461. package/template/.trae/skills/frontend-commit/SKILL.md +1 -1
  462. package/template/.trae/skills/yss-api-integration/SKILL.md +85 -339
  463. package/template/.trae/skills/yss-application/SKILL.md +7 -5
  464. package/template/.trae/skills/yss-application/references/application-layer-guide.md +60 -105
  465. package/template/.trae/skills/yss-components/SKILL.md +1 -1
  466. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
  467. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
  468. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
  469. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
  470. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
  471. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
  472. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
  473. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
  474. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
  475. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
  476. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
  477. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
  478. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
  479. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
  480. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
  481. package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
  482. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
  483. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
  484. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
  485. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
  486. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
  487. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
  488. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
  489. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
  490. package/template/.trae/skills/yss-design-system/SKILL.md +2 -2
  491. package/template/.trae/skills/yss-design-system/references/design-system.md +2 -2
  492. package/template/.trae/skills/yss-domain/SKILL.md +3 -3
  493. package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +61 -236
  494. package/template/.trae/skills/yss-dto/SKILL.md +5 -5
  495. package/template/.trae/skills/yss-dto/references/README.md +2 -2
  496. package/template/.trae/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
  497. package/template/.trae/skills/yss-exception/SKILL.md +2 -0
  498. package/template/.trae/skills/yss-formily/SKILL.md +1 -1
  499. package/template/.trae/skills/yss-mybatis/SKILL.md +2 -2
  500. package/template/.trae/skills/yss-page-module-development/SKILL.md +2 -0
  501. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
  502. package/template/.trae/skills/yss-repository/SKILL.md +7 -5
  503. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
  504. package/template/.trae/skills/yss-router/references/router-contract.yaml +41 -7
  505. package/template/.trae/skills/yss-ui/SKILL.md +6 -5
  506. package/template/.trae/skills/yss-ui/references/component-routing.md +1 -1
  507. package/template/.trae/skills/yss-ui-business-page-generation/SKILL.md +159 -0
  508. package/template/.trae/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
  509. package/template/.trae/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
  510. package/template/.trae/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
  511. package/template/.trae/skills/yss-use-table-height/SKILL.md +78 -297
  512. package/template/.trae/skills/yss-use-tree-height/SKILL.md +51 -393
  513. package/template/.trae/skills/yss-web-controller/SKILL.md +12 -11
  514. package/template/.trae/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
  515. package/template/.trae/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
  516. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
  517. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
  518. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
  519. package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
  520. package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
  521. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
  522. package/template/.trae/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
  523. package/template/.vscode/mcp.json +8 -0
  524. package/template/README.md +3 -0
  525. package/template/docs/agents/digital-human-roles.yaml +1 -1
  526. package/template/docs/agents/skills-maintenance.md +7 -4
  527. package/template/docs/agents/yss-skill-registry.yaml +7 -1
  528. package/template/docs/agents/yss-ui-skills-integration.md +24 -0
  529. package/template/docs/process/template-verification-profiles.yaml +11 -0
  530. package/template/docs/templates/implementation-routing-template.md +5 -3
  531. package/template/docs/templates/review-report-template.md +2 -2
  532. package/template/docs/user-guide/yss-ui-mcp.md +43 -0
  533. package/template/scripts/lib/scenario-checks.mjs +3 -3
  534. package/template/scripts/lib/skill-governance.mjs +36 -2
  535. package/template/scripts/lib/skill-registry.mjs +2 -1
  536. package/template/scripts/lib/skill-supply-chain.mjs +72 -1
  537. package/template/scripts/verify-scaffold-generator-scenarios +150 -44
  538. package/template/scripts/verify-skill-governance +1 -1
  539. package/template/scripts/verify-upstream-skill-source +38 -3
  540. package/template/scripts/verify-yss-dto-openapi-profile +4 -2
  541. package/template/skills-lock.json +159 -84
  542. package/template/yss-public-skills.json +2 -0
  543. package/template.manifest.json +4 -0
  544. package/template.snapshot.json +5 -5
  545. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  546. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  547. package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  548. package/template/.agents/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  549. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  550. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  551. package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  552. package/template/.claude/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  553. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  554. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  555. package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  556. package/template/.codex/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  557. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  558. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  559. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  560. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  561. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  562. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  563. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  564. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  565. package/template/.hermes/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  566. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  567. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  568. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  569. package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  570. package/template/.pi/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  571. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  572. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  573. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  574. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  575. package/template/.qoder/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
  576. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
  577. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
  578. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
  579. package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
  580. package/template/.trae/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
@@ -1,199 +1,31 @@
1
1
  ---
2
- name: "yss-backend-scaffold-adapter"
3
- description: "YSS 后端开发脚手架的适配器层开发框架和技术指南。在实现 Web 控制器、调度器或外部系统适配器时调用。"
2
+ name: yss-backend-scaffold-adapter
3
+ description: Use when the YSS DDD scaffold workflow reaches Web, scheduler, or external-adapter implementation and needs the shared target-profile skills.
4
4
  ---
5
5
 
6
- # Adapter Layer Development Guide
6
+ # Adapter Layer Reference
7
7
 
8
- 本技能为开发 YSS 后端开发脚手架服务的**适配器层**(接口层)提供指导和框架。
9
- 适配器层负责处理外部请求(HTTP、计划任务),并将其适配到应用层,以及为外部系统(连接器、执行器)实现插件式适配器。
8
+ 本文件只负责从脚手架路由到共享权威技能,不维护第二套 Adapter 规范。
10
9
 
11
- ## 1. 核心职责 (Core Responsibilities)
10
+ ## Web Adapter
12
11
 
13
- The Adapter Layer serves as the entry point and integration point of the system:
12
+ **REQUIRED SUB-SKILL:** 使用 `yss-web-controller` 作为 Web Adapter 的唯一实现指南,并同时消费 `yss-dto`、`yss-exception`:
14
13
 
15
- - **Web Adapter (REST API)**: Handles HTTP requests, validates input, calls Application Services, and formats responses (standard `Result` wrappers).
16
- - **Job Adapter (Scheduler)**: Adapts scheduled task triggers (e.g., DolphinScheduler, Quartz) to Application logic.
17
- - **SPI Adapter (Plugins)**: Implements specific technical adapters defined by the Domain or Application layer (e.g., specific Database Connectors, Rule Executors).
14
+ - HTTP Request / Response DTO 默认位于 Web module。
15
+ - Controller 只调用 Application Service,不直连 Domain Gateway 或 Infrastructure。
16
+ - 映射链固定为 Web DTO → Spring MapStruct WebConvertor → Application Command / Query / Result → Domain。
17
+ - HTTP/YSS wrapper/异常脱敏在 Web 边界完成;Domain 只表达领域错误语义。
18
18
 
19
- ## 2. 代码结构 (Code Structure)
19
+ ## Scheduler / External Adapter
20
20
 
21
- Depending on the module type (Web Application or Plugin), the structure varies:
21
+ - Adapter 只做协议、调度器或外部系统适配,不承载领域规则。
22
+ - 输入先转换为 Application Command / Query,再调用 Application Service。
23
+ - 若实现 Application 或 Domain 声明的端口,端口签名不得泄漏 HTTP DTO、PO、Mapper、第三方 SDK 类型。
24
+ - 具体持久化端口实现继续使用 `yss-repository`;不得把 Repository 规则复制到本文件。
22
25
 
23
- ### 2.1 Web Adapter (Usually in `bootstrap` or `web` module)
26
+ ## 禁止事项
24
27
 
25
- ```
26
- com.yss.{module}.rest
27
- ├── {Domain}Controller.java # REST API 控制器
28
- └── {Domain}ReportController.java # 报表/统计类控制器
29
- ```
30
-
31
- ### 2.2 Scheduler Adapter (In `adapter/scheduler` module)
32
-
33
- ```
34
- com.yss.{module}.scheduler
35
- └── {Domain}ScheduleServiceImpl.java # 调度服务实现 (实现 API 接口)
36
- ```
37
-
38
- ### 2.3 Plugin Adapter (In `adapter/connector` or `adapter/executor` modules)
39
-
40
- ```
41
- com.yss.{module}.executor
42
- ├── {Tech}Executor.java # 执行器实现 (e.g., MybatisExecutor)
43
- └── {Tech}DataSource.java # 数据源适配实现
44
- ```
45
-
46
- ## 3. 开发规范 (Development Guidelines)
47
-
48
- ### 3.1 Web Controller 规范
49
-
50
- - **注解**: 使用 `@RestController` 和 `@RequestMapping("/api/{module}/{resource}")`。
51
- - **依赖注入**: 优先注入 **Application Service** (`XxxService`)。对于简单的查询 (CQRS),允许直接注入 **Domain Gateway** (`XxxGateway`)。
52
- - **请求参数**:
53
- - `POST`/`PUT` 使用 `@RequestBody` 接收 `Cmd` 对象 (e.g., `QualityRuleAddCmd`)。
54
- - `GET` 使用 `Query` 对象或 `@RequestParam` (e.g., `QualityRulePage`)。
55
- - 必须使用 `@Valid` 进行参数校验。
56
- - **响应格式**: 必须使用统一的 `Result` 包装器:
57
- - 单个对象: `SingleResult<T>`
58
- - 列表对象: `MultiResult<T>`
59
- - 分页对象: `PageResult<T>`
60
-
61
- ### 3.2 Scheduler Adapter 规范
62
-
63
- - **接口实现**: 实现 `adapter-api` 定义的接口 (e.g., `QualityScheduleService`)。
64
- - **条件加载**: 使用 `@ConditionalOnProperty` 支持多调度引擎切换 (e.g., `dolphin`, `quartz`)。
65
- - **异常处理**: 捕获运行时异常并转换为调度系统可识别的状态。
66
-
67
- ### 3.3 Plugin Adapter 规范
68
-
69
- - **SPI 模式**: 实现核心定义的接口 (Interface),不包含业务逻辑,仅负责技术适配。
70
- - **上下文隔离**: 插件应包含自己独立的配置和依赖,避免污染核心上下文。
71
-
72
- ## 4. 代码示例 (Code Examples)
73
-
74
- ### 4.1 Web Controller (REST API)
75
-
76
- ```java
77
- package com.yss.{module}.rest;
78
-
79
- import com.yss.cloud.dto.result.PageResult;
80
- import com.yss.cloud.dto.result.SingleResult;
81
- import com.yss.{module}.client.dto.cmd.{Domain}AddCmd;
82
- import com.yss.{module}.client.dto.cmd.{Domain}UpdateCmd;
83
- import com.yss.{module}.client.dto.query.{Domain}Page;
84
- import com.yss.{module}.client.vo.{Domain}VO;
85
- import com.yss.{module}.core.service.{Domain}Service;
86
- import lombok.RequiredArgsConstructor;
87
- import org.springframework.web.bind.annotation.*;
88
-
89
- import javax.validation.Valid;
90
-
91
- /**
92
- * {Domain} 管理控制器
93
- */
94
- @RestController
95
- @RequestMapping("/api/{module}/{domain}")
96
- @RequiredArgsConstructor
97
- public class {Domain}Controller {
98
-
99
- private final {Domain}Service {domain}Service;
100
-
101
- /**
102
- * 分页查询
103
- */
104
- @PostMapping("/page")
105
- public PageResult<{Domain}VO> page(@Valid @RequestBody {Domain}Page query) {
106
- return {domain}Service.page(query);
107
- }
108
-
109
- /**
110
- * 新增
111
- */
112
- @PostMapping
113
- public SingleResult<Long> add(@Valid @RequestBody {Domain}AddCmd cmd) {
114
- return SingleResult.of({domain}Service.add(cmd));
115
- }
116
-
117
- /**
118
- * 更新
119
- */
120
- @PutMapping
121
- public SingleResult<Boolean> update(@Valid @RequestBody {Domain}UpdateCmd cmd) {
122
- {domain}Service.update(cmd);
123
- return SingleResult.of(true);
124
- }
125
- }
126
- ```
127
-
128
- ### 4.2 Scheduler Adapter (Task Runner)
129
-
130
- ```java
131
- package com.yss.{module}.scheduler;
132
-
133
- import com.yss.{module}.scheduler.api.QualityScheduleService;
134
- import lombok.RequiredArgsConstructor;
135
- import lombok.extern.slf4j.Slf4j;
136
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
137
- import org.springframework.stereotype.Service;
138
-
139
- @Slf4j
140
- @Service
141
- @RequiredArgsConstructor
142
- @ConditionalOnProperty(prefix = "yss.scheduler", name = "plugin", havingValue = "dolphin")
143
- public class DolphinScheduleServiceImpl implements QualityScheduleService {
144
-
145
- private final QualityScheduleGateway qualityScheduleGateway;
146
- // External Scheduler Facade
147
- // private final SchedulerFacadeApi schedulerFacadeApi;
148
-
149
- @Override
150
- public List<QualityScheduleVO> listSchedules(QualityScheduleQuery query) {
151
- return qualityScheduleGateway.list(query);
152
- }
153
-
154
- @Override
155
- public Long addSchedule(QualityScheduleAddCmd cmd) {
156
- // 适配 DolphinScheduler 的创建逻辑
157
- // Long code = schedulerFacadeApi.createTask(cmd);
158
- // cmd.setScheduleCode(String.valueOf(code));
159
- return qualityScheduleGateway.add(cmd);
160
- }
161
- }
162
- ```
163
-
164
- ### 4.3 Executor Adapter (MyBatis Plugin)
165
-
166
- ```java
167
- package com.yss.{module}.executor;
168
-
169
- import com.yss.cloud.exception.SysException;
170
- import com.yss.quality.executor.Executor;
171
- import com.yss.quality.executor.cmd.QualityRuleResultSingleCmd;
172
- import lombok.extern.slf4j.Slf4j;
173
- import org.springframework.stereotype.Component;
174
- import java.util.LinkedHashMap;
175
-
176
- @Component
177
- @Slf4j
178
- public class MybatisExecutor implements Executor {
179
-
180
- @Override
181
- public LinkedHashMap<String, Object> execute(QualityRuleResultSingleCmd cmd) {
182
- try {
183
- // 构建 MyBatis 执行上下文
184
- // ApiCmd apiCmd = ...
185
- // 执行查询
186
- // return data;
187
- return new LinkedHashMap<>();
188
- } catch (Exception e) {
189
- log.error("MyBatis execution failed: {}", e.getMessage());
190
- throw new SysException("Execution failed: " + e.getMessage());
191
- }
192
- }
193
-
194
- @Override
195
- public String engineType() {
196
- return "MYBATIS";
197
- }
198
- }
199
- ```
28
+ - 禁止 Web Controller 直接注入 Domain Gateway。
29
+ - 禁止 `client.dto`、VO、`PageQuery` 进入 Domain。
30
+ - 禁止静态 `Mappers.getMapper(...)` / `INSTANCE`;MapStruct 必须 `componentModel = "spring"` 并构造器注入。
31
+ - 禁止把旧式 Controller 示例当成 `target-domain-model` 的方案。旧架构对新脚手架一律 `unsupported`;旧项目继续在原工程维护,现代化改造必须单独立项。
@@ -1,138 +1,57 @@
1
1
  ---
2
- name: "yss-backend-scaffold-parent"
3
- description: "YSS 服务的后端开发脚手架框架和技术指南。在开发后端功能、创建新模块或检查架构标准时需要用到。"
2
+ name: yss-backend-scaffold-parent
3
+ description: YSS DDD scaffold Engineering Baseline entry for profile, module, dependency, build, and downstream-skill routing checks.
4
4
  ---
5
5
 
6
- # 赢时胜数据质量管理服务后端开发规范 (YSS Data Quality Backend Dev Guide)
6
+ # YSS DDD Scaffold Engineering Baseline
7
7
 
8
- 本 Skill 包含了项目的核心技术栈、架构设计原则以及开发规范,旨在帮助开发者快速上手并遵循项目标准。
8
+ 本文件只定义脚手架工程基线和路由,不复制 Domain、Application、Repository、Web 的实现细则。
9
9
 
10
- 在产品生命周期中,本 Skill 是后端 Engineering Baseline / YSS DDD Review 的入口。它用于确认技术栈、模块边界、依赖方向、DTO/Gateway/Repository 约定和实现前检查;具体代码仍按垂直切片加载 `yss-domain`、`yss-repository`、`yss-web-controller` 等专项 Skill。
10
+ ## 当前可验证 Profile
11
11
 
12
- ## 1. 技术栈 (Tech Stack)
12
+ - Architecture: `target-domain-model`
13
+ - Persistence: `mybatis-plus`
14
+ - Database: `mysql`
15
+ - Platform: `spring-boot-2.7-jdk8`
16
+ - Validation namespace: `javax`
17
+ - DTO placement: `web`
18
+ - Repository: `yss-internal`
13
19
 
14
- ### 核心框架
20
+ 未具备独立 fixture、受控合同和真实验证证据的组合统一为 `unsupported`。旧架构不存在可选 Profile,也不能作为回退。
15
21
 
16
- - **JDK**: 8
17
- - **Spring Boot**: 2.7.18
18
- - **Spring Framework**: 5.3.x
19
- - **ORM**: MyBatis Plus (底层封装于 `yss-component-mybatis-starter`)
20
- - **连接池**: HikariCP
22
+ ## 模块与依赖方向
21
23
 
22
- ### 数据库支持
23
-
24
- - **MySQL**: 8.0+
25
- - **Oracle**: 12c+
26
- - **PostgreSQL**: 12+
27
- - **OpenGauss**
28
- - **DuckDB**
29
-
30
- ### 工具库
31
-
32
- - **Lombok**: 减少样板代码
33
- - **Hutool**: Java 通用工具库
34
- - **MapStruct**: 高性能对象映射
35
- - **Jackson**: JSON 处理
36
- - **Guava**: Google 核心库
37
-
38
- ### 构建工具
39
-
40
- - **Maven**: 3.x (必须使用项目根目录下的 `./mvnw` 脚本进行构建、测试、运行和 CI 验证;不要默认使用裸 `mvn ...` 命令)
41
-
42
- ## 2. 架构设计 (Architecture)
43
-
44
- 项目采用基于 DDD (领域驱动设计) 的分层架构:
45
-
46
- ### 分层职责
47
-
48
- 1. **Adapter (适配层)**: `adapter`
49
- - 处理外部请求 (Web API, Job Runner)
50
- - 适配数据库连接器
51
- 2. **Application (应用层)**: `application`
52
- - 业务用例编排
53
- - Command/Query/Event Handlers
54
- 3. **Domain (领域层)**: `domain`
55
- - 核心业务逻辑
56
- - 包含:聚合根, 实体, 值对象, 领域服务, 仓储接口
57
- 4. **Infrastructure (基础设施层)**: `infrastructure`
58
- - 仓储接口实现 (Repository Impl)
59
- - 外部服务适配
60
- - 配置管理
61
-
62
- ### 模块依赖
63
-
64
- - `Domain` 是核心层,不依赖 Application、Infrastructure、Adapter 或 Bootstrap。
65
- - `Application` 依赖 `Domain`,负责用例编排、事务边界和 Command/Query/Event Handler。
66
- - `Adapter` / Web 层依赖 `Application`,负责协议适配、参数校验、DTO/VO 转换和统一响应。
67
- - `Infrastructure` 依赖 `Domain`,实现 Domain 中定义的 Gateway / Repository / 外部系统接口。
68
- - `Bootstrap` 负责组装和启动,不承载业务规则。
69
-
70
- 依赖方向必须服务于领域核心,不能让 PO、Mapper、HTTP、RPC、Excel、文件、缓存等基础设施细节泄漏到 Domain。
71
-
72
- ## 3. 开发规范 (Development Guidelines)
73
-
74
- ### 命名规范
75
-
76
- - **PO (Persistent Object)**: 持久化对象,对应数据库表。
77
- - **VO (Value Object)**: 视图对象,用于 API 返回。
78
- - **CMD (Command)**: 命令对象,用于增删改操作参数。
79
- - **Query**: 查询对象,用于查询条件参数。
80
-
81
- ### 调用链路
82
-
83
- 标准的调用流向为:
84
- `Controller / Adapter` -> `Application Use Case / Handler` -> `Domain Aggregate / Domain Service` -> `Gateway / Repository Interface` -> `Infrastructure Implementation` -> `Database / External System`
85
-
86
- 不要把传统 `Controller -> Service -> Repository` 三层模型作为默认设计。只有当现有工程已经采用 Application Service 命名时,`Service` 才代表应用层用例编排,不应承载领域规则或直接泄漏持久化细节。
87
-
88
- 数据转换边界:
89
- `Request DTO / Command / Query` -> `Domain Model` -> `PO / External DTO` -> `Domain Model` -> `Response VO`
90
-
91
- ### Repository 开发
92
-
93
- - 接口继承 `BasePlusRepository<PO>`。
94
- - 实体类字段使用 `@TableField` 映射。
95
- - 主键使用 `@TableId(value = "id", type = IdType.ASSIGN_ID)`。
96
- - 实体类继承 `AuditableEntity` 以自动处理审计字段 (创建人、时间等)。
97
-
98
- ### 对象转换
99
-
100
- - 必须使用 **MapStruct** 进行对象转换。
101
- - 定义接口并添加 `@Mapper` 注解。
102
-
103
- ### API 设计
104
-
105
- - 遵循 RESTful 风格 (GET/POST/PUT/DELETE)。
106
- - 使用统一响应包装类:
107
- - 单个对象: `SingleResult<T>`
108
- - 列表: `MultiResult<T>`
109
- - 分页: `PageResult<T>`
110
- - 涉及新增或变更前后端契约时,先在 `docs/.scratch/<feature>/api/<feature>.yaml` 形成 OpenAPI Draft,经工程基线、架构 / Spec Delta 设计和设计审查后 Freeze,再实现 Controller、DTO、前端调用和契约测试。
111
-
112
- ## 4. 工程基线检查清单
24
+ ```text
25
+ domain <- application <- web
26
+ ^ ^
27
+ | |
28
+ infrastructure-+
29
+ ^
30
+ bootstrap
31
+ ```
113
32
 
114
- 进入实现前至少确认:
33
+ - `domain`:纯 Java 领域模型、领域服务、领域事件、Domain Gateway;不得依赖 YSS DTO/Exception、Web Validation、Jackson、Swagger、MyBatis。
34
+ - `application`:用例编排、Command / Query / Result、事务边界、Application Query Port;可以依赖 Domain 和必要的 YSS result wrapper。
35
+ - `infrastructure`:实现 Domain Gateway / Application Query Port,拥有 PO、Mapper、持久化转换器;依赖 Domain 与 Application。
36
+ - `adapter/web`:拥有 HTTP DTO、Controller、异常翻译、WebConvertor;只依赖 Application。
37
+ - `bootstrap`:装配与启动,不放业务逻辑。
115
38
 
116
- - 模块是否采用 Domain / Application / Infrastructure / Adapter / Bootstrap 分层,或已有工程的等价边界。
117
- - 新服务是否先由 `yss-ddd-scaffold-generator` 生成骨架;现有服务是否沿用既有模块和包命名。
118
- - Domain 是否只包含聚合、实体、值对象、领域服务和 Gateway / Repository 接口。
119
- - Infrastructure 是否只实现 Gateway / Repository,并隔离 PO、Mapper、SQL、外部系统客户端。
120
- - Web / Adapter 是否只做协议适配、鉴权上下文、参数校验、DTO/VO 转换和响应包装。
121
- - Application 是否承载用例编排、事务边界和跨聚合协调,不把领域规则下沉到 Controller 或 Mapper。
122
- - OpenAPI Draft / Freeze、ADR、测试 seam 和已批准的架构约束是否已经明确。
39
+ 依赖方向由 Maven Reactor、Maven Enforcer 与 ArchUnit 共同约束。MapStruct 统一使用 Spring component model,父 POM 配置 annotation processor、Lombok 与 `lombok-mapstruct-binding`。
123
40
 
124
- ## 5. 常用命令
41
+ ## 生成与验证
125
42
 
126
- ```bash
127
- # 清理并编译
128
- ./mvnw clean compile
43
+ - 输入是批准且持久化的服务级 scaffold contract schema v2,身份为 `scaffold_request_id`,不使用 `slice_id`。
44
+ - 生成器严格 initialize-only:目标工程目录必须不存在,`--force`、旧项目迁移和当前模板升级均为 `unsupported`。
45
+ - Maven 内部仓库通过命名 profile `yss-internal` 与环境变量注入;共享模板不写内部 URL 或凭据。
46
+ - Wrapper 必须带 checksum;DEBUG 和 MyBatis stdout SQL 只允许在 `application-local.yml`。
47
+ - `./mvnw validate`、`./mvnw test`、`./mvnw package` 全部成功只得到 `empty-scaffold-verified`。
48
+ - 只有 golden first slice 真实组合 Domain/Application/Infrastructure/Web 并通过根 Wrapper,才能得到 `first-slice-verified`。
129
49
 
130
- # 完整验证
131
- ./mvnw clean verify
132
- ```
50
+ ## 下游权威技能
133
51
 
134
- ## 6. 阶段 7 合同
52
+ - Domain:`yss-domain`
53
+ - Application:`yss-application`
54
+ - Persistence:`yss-repository` + `yss-mybatis`
55
+ - Web:`yss-web-controller` + `yss-dto` + `yss-exception`
135
56
 
136
- - 工程基线校验必须消费批准合同、实现仓库登记和 scaffold 状态。
137
- - 脚手架只属于 `controlled-generation`;生成后必须重新路由业务 work units,不能把骨架标为业务完成。
138
- - 输出统一 `YSS Skill Execution Result`,包含模块边界、Wrapper、编译/测试、OpenAPI/CI 证据和所有偏离。
57
+ 业务代码必须回到 `yss-router`,消费批准且版本当前的 Slice Implementation Contract,并采用 `behavior-tdd`;脚手架只生成机械工程资产。
@@ -0,0 +1,191 @@
1
+ import assert from "node:assert/strict";
2
+ import { execFile } from "node:child_process";
3
+ import { chmod, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import test from "node:test";
7
+ import { fileURLToPath } from "node:url";
8
+
9
+ import { generate as generateWeb, parseArgs as parseWebArgs } from "../../yss-web-controller/scripts/generate_controller.mjs";
10
+
11
+ const scripts = path.dirname(fileURLToPath(import.meta.url));
12
+ const generator = path.join(scripts, "generate_scaffold.mjs");
13
+ const execute = (file, args, options = {}) => new Promise((resolve) => execFile(file, args, { encoding: "utf8", ...options }, (error, stdout, stderr) => resolve({ code: error?.code ?? 0, stdout, stderr })));
14
+
15
+ function scaffoldContract(output) {
16
+ return {
17
+ schema_version: 2,
18
+ contract_id: "golden-scaffold-1",
19
+ contract_version: 1,
20
+ scaffold_request_id: "golden-request-1",
21
+ status: "approved",
22
+ router_draft_ref: "router-golden-1",
23
+ lifecycle_approval_ref: "approval-golden-1",
24
+ persisted_ref: "persisted-golden-1",
25
+ current_version: 1,
26
+ implementation_repository: "external",
27
+ backend_repository: "external",
28
+ scaffold_status: "required",
29
+ project_name: "golden-service",
30
+ target_output_dir: output,
31
+ base_package: "com.yss.golden",
32
+ maven_coordinates: { group_id: "com.yss.datamiddle", project_version: "1.0.0-SNAPSHOT", parent: { group_id: "com.yss.datamiddle", artifact_id: "yss-datamiddle-parent", version: "2.0.0-SNAPSHOT" }, yss_components_version: "2.0.0-SNAPSHOT" },
33
+ profiles: { architecture: "target-domain-model", persistence: "mybatis-plus", database: "mysql", platform: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", repository: "yss-internal" },
34
+ allowed_write_paths: ["."],
35
+ expected_evidence_files: [".yss/scaffold-generation.json"],
36
+ verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"],
37
+ approval: { approval_ref: "approval-golden-1", approver: "maintainer", persisted_ref: "persisted-golden-1", current_version: 1 },
38
+ work_unit: { id: "golden-unit-1", behavior: "scaffold", primary_skill: "yss-ddd-scaffold-generator", supporting_skills: ["yss-router"], tdd_mode: "controlled-generation", allowed_write_paths: ["."], expected_evidence: ["manifest"], verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"], controlled_generation: true },
39
+ generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" }
40
+ };
41
+ }
42
+
43
+ async function writeJava(project, relative, source) {
44
+ const target = path.join(project, relative);
45
+ await mkdir(path.dirname(target), { recursive: true });
46
+ await writeFile(target, `${source.trim()}\n`, "utf8");
47
+ }
48
+
49
+ async function prepareGoldenProject(t) {
50
+ const root = await mkdtemp(path.join(os.tmpdir(), "yss-golden-slice-"));
51
+ t.after(() => rm(root, { recursive: true, force: true }));
52
+ const output = path.join(root, "implementation");
53
+ await mkdir(output);
54
+ const contractFile = path.join(root, "scaffold-contract.json");
55
+ await writeFile(contractFile, `${JSON.stringify(scaffoldContract(output), null, 2)}\n`);
56
+ const args = ["--project-name", "golden-service", "--base-package", "com.yss.golden", "--output-dir", output, "--database", "mysql", "--contract-id", "golden-scaffold-1", "--contract-version", "1", "--approval-ref", "approval-golden-1", "--router-draft-ref", "router-golden-1", "--persisted-ref", "persisted-golden-1", "--contract-file", contractFile, "--group-id", "com.yss.datamiddle", "--project-version", "1.0.0-SNAPSHOT", "--parent-group-id", "com.yss.datamiddle", "--parent-artifact-id", "yss-datamiddle-parent", "--parent-version", "2.0.0-SNAPSHOT", "--yss-components-version", "2.0.0-SNAPSHOT"];
57
+ const generated = await execute(process.execPath, [generator, ...args]);
58
+ assert.equal(generated.code, 0, generated.stderr);
59
+ const project = path.join(output, "golden-service");
60
+ const java = "src/main/java/com/yss/golden";
61
+ const testJava = "src/test/java/com/yss/golden";
62
+ await writeJava(project, `golden-service-domain/${java}/domain/quality/model/QualityRule.java`, `package com.yss.golden.domain.quality.model;
63
+ public final class QualityRule { private final Long id; private final String name; public QualityRule(Long id, String name) { if (name == null || name.trim().isEmpty()) throw new IllegalArgumentException("quality-rule-name-required"); this.id=id; this.name=name; } public Long getId(){return id;} public String getName(){return name;} }`);
64
+ await writeJava(project, `golden-service-domain/${java}/domain/quality/gateway/QualityRuleGateway.java`, `package com.yss.golden.domain.quality.gateway;
65
+ import com.yss.golden.domain.quality.model.QualityRule; public interface QualityRuleGateway { void save(QualityRule rule); }`);
66
+ await writeJava(project, `golden-service-domain/${testJava}/domain/quality/model/QualityRuleTest.java`, `package com.yss.golden.domain.quality.model;
67
+ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; class QualityRuleTest { @Test void rejectsBlankName(){ assertThrows(IllegalArgumentException.class, () -> new QualityRule(1L, " ")); } }`);
68
+ for (const [relative, source] of Object.entries({
69
+ [`golden-service-application/${java}/application/command/QualityRuleCreateCommand.java`]: `package com.yss.golden.application.command; public class QualityRuleCreateCommand { private String ruleName; public String getRuleName(){return ruleName;} public void setRuleName(String value){this.ruleName=value;} }`,
70
+ [`golden-service-application/${java}/application/command/QualityRuleUpdateCommand.java`]: `package com.yss.golden.application.command; public class QualityRuleUpdateCommand { private Long id; private String ruleName; public Long getId(){return id;} public void setId(Long value){this.id=value;} public String getRuleName(){return ruleName;} public void setRuleName(String value){this.ruleName=value;} }`,
71
+ [`golden-service-application/${java}/application/query/QualityRulePageQuery.java`]: `package com.yss.golden.application.query; public class QualityRulePageQuery { private int pageIndex; private int pageSize; private String ruleName; public int getPageIndex(){return pageIndex;} public void setPageIndex(int value){this.pageIndex=value;} public int getPageSize(){return pageSize;} public void setPageSize(int value){this.pageSize=value;} public String getRuleName(){return ruleName;} public void setRuleName(String value){this.ruleName=value;} }`,
72
+ [`golden-service-application/${java}/application/result/QualityRuleResult.java`]: `package com.yss.golden.application.result; import java.io.Serializable; public class QualityRuleResult implements Serializable { private Long id; private String ruleName; public Long getId(){return id;} public void setId(Long value){this.id=value;} public String getRuleName(){return ruleName;} public void setRuleName(String value){this.ruleName=value;} }`,
73
+ [`golden-service-application/${java}/application/port/QualityRuleQueryPort.java`]: `package com.yss.golden.application.port; import com.yss.cloud.dto.result.PageResult; import com.yss.golden.application.query.QualityRulePageQuery; import com.yss.golden.application.result.QualityRuleResult; public interface QualityRuleQueryPort { PageResult<QualityRuleResult> page(QualityRulePageQuery query); }`,
74
+ [`golden-service-application/${java}/application/service/QualityRuleService.java`]: `package com.yss.golden.application.service; import com.yss.cloud.dto.result.PageResult; import com.yss.golden.application.command.*; import com.yss.golden.application.query.QualityRulePageQuery; import com.yss.golden.application.result.QualityRuleResult; public interface QualityRuleService { PageResult<QualityRuleResult> page(QualityRulePageQuery query); QualityRuleResult detail(Long id); Long add(QualityRuleCreateCommand command); Boolean update(QualityRuleUpdateCommand command); Boolean delete(Long id); }`,
75
+ [`golden-service-application/${java}/application/error/QualityRuleConflictException.java`]: `package com.yss.golden.application.error; public final class QualityRuleConflictException extends RuntimeException { public QualityRuleConflictException(String message) { super(message); } }`,
76
+ [`golden-service-application/${java}/application/error/QualityRuleSystemException.java`]: `package com.yss.golden.application.error; public final class QualityRuleSystemException extends RuntimeException { public QualityRuleSystemException(String message, Throwable cause) { super(message, cause); } }`,
77
+ [`golden-service-infrastructure/${java}/infrastructure/persistence/po/QualityRulePO.java`]: `package com.yss.golden.infrastructure.persistence.po; public class QualityRulePO { private Long id; private String name; public Long getId(){return id;} public void setId(Long value){this.id=value;} public String getName(){return name;} public void setName(String value){this.name=value;} }`,
78
+ [`golden-service-infrastructure/${java}/infrastructure/persistence/convertor/QualityRulePersistenceConvertor.java`]: `package com.yss.golden.infrastructure.persistence.convertor; import com.yss.golden.domain.quality.model.QualityRule; import com.yss.golden.infrastructure.persistence.po.QualityRulePO; import org.mapstruct.Mapper; @Mapper(componentModel="spring") public interface QualityRulePersistenceConvertor { QualityRule toDomain(QualityRulePO source); QualityRulePO toPO(QualityRule source); }`
79
+ })) await writeJava(project, relative, source);
80
+ const metadata = path.join(root, "metadata.json");
81
+ const webContract = path.join(root, "web-contract.json");
82
+ await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", table_comment: "质量规则", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }, { name: "rule_name", sql_type: "varchar(64)", nullable: false }] }] }));
83
+ await writeFile(webContract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.golden", module_name: "golden", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: ["rule_name"], update: ["id", "rule_name"], query: ["rule_name"], response: ["id", "rule_name"] } } }));
84
+ await generateWeb(parseWebArgs(["--metadata-file", metadata, "--contract-file", webContract, "--base-package", "com.yss.golden", "--module-name", "golden", "--domain-segment", "quality", "--web-project-dir", path.join(project, "golden-service-adapter", "golden-service-web"), "--application-service-package", "com.yss.golden.application.service", "--validation-namespace", "javax"]), { log() {}, warn() {} });
85
+ await writeJava(project, `golden-service-adapter/golden-service-web/${java}/rest/advice/TargetProfileExceptionAdvice.java`, `package com.yss.golden.rest.advice;
86
+ import com.yss.golden.application.error.QualityRuleConflictException;
87
+ import com.yss.golden.application.error.QualityRuleSystemException;
88
+ import org.springframework.core.Ordered;
89
+ import org.springframework.core.annotation.Order;
90
+ import org.springframework.http.HttpStatus;
91
+ import org.springframework.http.ResponseEntity;
92
+ import org.springframework.web.bind.annotation.ExceptionHandler;
93
+ import org.springframework.web.bind.annotation.RestControllerAdvice;
94
+ @Order(Ordered.HIGHEST_PRECEDENCE)
95
+ @RestControllerAdvice
96
+ public final class TargetProfileExceptionAdvice {
97
+ @ExceptionHandler(QualityRuleConflictException.class)
98
+ public ResponseEntity<ErrorResponse> handleConflict(QualityRuleConflictException ignored) { return response(HttpStatus.CONFLICT, "QUALITY_RULE_CONFLICT", "质量规则冲突", "请检查质量规则后重试"); }
99
+ @ExceptionHandler(QualityRuleSystemException.class)
100
+ public ResponseEntity<ErrorResponse> handleKnownSystem(QualityRuleSystemException ignored) { return response(HttpStatus.SERVICE_UNAVAILABLE, "QUALITY_RULE_SYSTEM", "服务暂不可用", "请稍后重试"); }
101
+ @ExceptionHandler(RuntimeException.class)
102
+ public ResponseEntity<ErrorResponse> handleUnknown(RuntimeException ignored) { return response(HttpStatus.INTERNAL_SERVER_ERROR, "SYS_ERROR", "后台服务异常,请联系技术管理员", "请联系技术管理员"); }
103
+ private ResponseEntity<ErrorResponse> response(HttpStatus status, String errCode, String message, String tips) { return ResponseEntity.status(status).body(new ErrorResponse(errCode, message, tips)); }
104
+ public static final class ErrorResponse {
105
+ private final String errCode;
106
+ private final String message;
107
+ private final String tips;
108
+ ErrorResponse(String errCode, String message, String tips) { this.errCode = errCode; this.message = message; this.tips = tips; }
109
+ public String getErrCode() { return errCode; }
110
+ public String getMessage() { return message; }
111
+ public String getTips() { return tips; }
112
+ }
113
+ }`);
114
+ await writeJava(project, `golden-service-adapter/golden-service-web/${testJava}/rest/GoldenExceptionIntegrationTest.java`, `package com.yss.golden.rest;
115
+ import com.yss.cloud.exception.advice.GlobalExceptionAdvice;
116
+ import com.yss.golden.application.error.QualityRuleConflictException;
117
+ import com.yss.golden.application.error.QualityRuleSystemException;
118
+ import org.junit.jupiter.api.Test;
119
+ import org.springframework.beans.factory.annotation.Autowired;
120
+ import org.springframework.boot.SpringBootConfiguration;
121
+ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
122
+ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
123
+ import org.springframework.boot.test.context.SpringBootTest;
124
+ import org.springframework.context.ApplicationContext;
125
+ import org.springframework.context.annotation.Import;
126
+ import com.yss.golden.rest.advice.TargetProfileExceptionAdvice;
127
+ import org.springframework.http.MediaType;
128
+ import org.springframework.test.web.servlet.MockMvc;
129
+ import org.springframework.web.bind.annotation.GetMapping;
130
+ import org.springframework.web.bind.annotation.RestController;
131
+ import static org.assertj.core.api.Assertions.assertThat;
132
+ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
133
+ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
134
+ @SpringBootTest(classes = GoldenExceptionIntegrationTest.TestApplication.class)
135
+ @AutoConfigureMockMvc
136
+ class GoldenExceptionIntegrationTest {
137
+ @Autowired MockMvc mvc;
138
+ @Autowired ApplicationContext context;
139
+ @Test void actualStarterAutoConfigurationIsLoaded() { assertThat(context.getBeansOfType(GlobalExceptionAdvice.class)).hasSize(1); }
140
+ @Test void businessErrorUsesStablePublicResponse() throws Exception { mvc.perform(get("/exception-probe/business")).andExpect(status().isConflict()).andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)).andExpect(jsonPath("$.errCode").value("QUALITY_RULE_CONFLICT")).andExpect(jsonPath("$.message").value("质量规则冲突")); }
141
+ @Test void knownSystemErrorIsSanitized() throws Exception { mvc.perform(get("/exception-probe/system")).andExpect(status().isServiceUnavailable()).andExpect(jsonPath("$.errCode").value("QUALITY_RULE_SYSTEM")).andExpect(jsonPath("$.message").value("服务暂不可用")).andExpect(content().string(org.hamcrest.Matchers.not(org.hamcrest.Matchers.containsString("database-password")))); }
142
+ @Test void unknownErrorIsSanitizedAndHandledBeforeComponentFallback() throws Exception { mvc.perform(get("/exception-probe/unknown")).andExpect(status().isInternalServerError()).andExpect(jsonPath("$.errCode").value("SYS_ERROR")).andExpect(jsonPath("$.message").value("后台服务异常,请联系技术管理员")).andExpect(content().string(org.hamcrest.Matchers.not(org.hamcrest.Matchers.containsString("runtime-secret")))); }
143
+ @SpringBootConfiguration @EnableAutoConfiguration @Import({ExceptionProbeController.class, TargetProfileExceptionAdvice.class}) static class TestApplication {}
144
+ @RestController static class ExceptionProbeController {
145
+ @GetMapping("/exception-probe/business") void business() { throw new QualityRuleConflictException("internal-business-detail"); }
146
+ @GetMapping("/exception-probe/system") void system() { throw new QualityRuleSystemException("database-password", new IllegalStateException("internal-cause")); }
147
+ @GetMapping("/exception-probe/unknown") void unknown() { throw new RuntimeException("runtime-secret"); }
148
+ }
149
+ }`);
150
+ return { root, project };
151
+ }
152
+
153
+ test("golden first slice 组合 Domain/Application/Infrastructure/Web 且不发生 DTO/PO 穿层", async (t) => {
154
+ const { project } = await prepareGoldenProject(t);
155
+ const domainPom = await readFile(path.join(project, "golden-service-domain", "pom.xml"), "utf8");
156
+ const applicationPom = await readFile(path.join(project, "golden-service-application", "pom.xml"), "utf8");
157
+ const webPom = await readFile(path.join(project, "golden-service-adapter", "golden-service-web", "pom.xml"), "utf8");
158
+ const controller = await readFile(path.join(project, "golden-service-adapter", "golden-service-web", "src/main/java/com/yss/golden/rest/QualityRuleController.java"), "utf8");
159
+ const convertor = await readFile(path.join(project, "golden-service-adapter", "golden-service-web", "src/main/java/com/yss/golden/rest/convertor/QualityRuleWebConvertor.java"), "utf8");
160
+ const pageRequest = await readFile(path.join(project, "golden-service-adapter", "golden-service-web", "src/main/java/com/yss/golden/rest/dto/request/QualityRulePageRequest.java"), "utf8");
161
+ assert.doesNotMatch(domainPom, /yss-component-dto|yss-component-exception|spring-web|swagger/);
162
+ assert.match(applicationPom, /yss-component-dto/);
163
+ assert.doesNotMatch(webPom, /golden-service-domain|golden-service-infrastructure/);
164
+ assert.doesNotMatch(`${controller}\n${convertor}`, /\.domain\.|\.infrastructure\.|\.repository\.|Mappers\.getMapper|INSTANCE/);
165
+ assert.match(convertor, /@Mapper\(componentModel = "spring"\)/);
166
+ assert.doesNotMatch(pageRequest, /offset|needTotalCount|tempTotalCount|extends PageQuery/);
167
+ });
168
+
169
+ test("golden first slice 通过真实 Wrapper 后才允许 first-slice-verified", { timeout: 300_000 }, async (t) => {
170
+ if (!["YSS_MAVEN_REPOSITORY_URL", "MAVEN_REPO_USERNAME", "MAVEN_REPO_PASSWORD"].every((name) => process.env[name])) {
171
+ t.skip("缺少受控 YSS Maven 仓库环境;不得声明 first-slice-verified");
172
+ return;
173
+ }
174
+ const { project } = await prepareGoldenProject(t);
175
+ await chmod(path.join(project, "mvnw"), 0o755);
176
+ for (const phase of ["validate", "test", "package"]) {
177
+ const result = await execute(path.join(project, "mvnw"), [phase], { cwd: project, timeout: 300_000 });
178
+ assert.equal(result.code, 0, `${phase}\n${result.stdout}\n${result.stderr}`);
179
+ }
180
+ });
181
+
182
+ test("真实 YSS exception starter 的自动配置、优先级、三类映射和序列化均受保护", { timeout: 300_000 }, async (t) => {
183
+ if (!["YSS_MAVEN_REPOSITORY_URL", "MAVEN_REPO_USERNAME", "MAVEN_REPO_PASSWORD"].every((name) => process.env[name])) {
184
+ t.skip("缺少受控 YSS Maven 仓库环境;不得声明 exception starter 真实集成已验证");
185
+ return;
186
+ }
187
+ const { project } = await prepareGoldenProject(t);
188
+ await chmod(path.join(project, "mvnw"), 0o755);
189
+ const result = await execute(path.join(project, "mvnw"), ["-pl", "golden-service-adapter/golden-service-web", "-am", "test"], { cwd: project, timeout: 300_000 });
190
+ assert.equal(result.code, 0, `${result.stdout}\n${result.stderr}`);
191
+ });