create-yss-spec 3.4.9 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/src/api/_sync-service.js +111 -18
  4. package/src/cli/args.js +1 -0
  5. package/src/cli/help.js +10 -1
  6. package/src/cli/index.js +3 -0
  7. package/src/cli/prompts.js +5 -1
  8. package/src/cli/router.js +2 -0
  9. package/src/commands/attach.js +12 -2
  10. package/src/commands/init.js +2 -0
  11. package/src/commands/skills.js +253 -0
  12. package/src/commands/sync.js +3 -0
  13. package/src/family-identity.js +1 -1
  14. package/src/template/asset-runtime.js +220 -0
  15. package/src/template/attach-planner.js +5 -0
  16. package/src/template/distribution-runtime.js +165 -0
  17. package/src/template/instance-runtime.js +76 -29
  18. package/src/template/ownership-policy.js +17 -1
  19. package/src/template/prune-planner.js +6 -1
  20. package/src/template/sync-planner.js +8 -0
  21. package/src/template/verification-runtime.js +56 -1
  22. package/src/validation/metadata.js +24 -1
  23. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  24. package/template/.agents/skills/yss-cache/SKILL.md +6 -5
  25. package/template/.agents/skills/yss-cache/references/annotations.md +3 -1
  26. package/template/.agents/skills/yss-cache/references/architecture.md +4 -2
  27. package/template/.agents/skills/yss-cache/references/configuration.md +6 -3
  28. package/template/.agents/skills/yss-cache/references/jetcache.md +21 -0
  29. package/template/.agents/skills/yss-cache/references/redis-fallback.md +5 -3
  30. package/template/.agents/skills/yss-cache/references/verification.md +10 -4
  31. package/template/.agents/skills/yss-cache/scripts/verify-cache-component.sh +26 -20
  32. package/template/.agents/skills/yss-distributed-id/SKILL.md +14 -58
  33. package/template/.agents/skills/yss-distributed-id/agents/openai.yaml +2 -2
  34. package/template/.agents/skills/yss-distributed-id/references/README.md +11 -47
  35. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  36. package/template/.agents/skills/yss-mybatis/SKILL.md +14 -2
  37. package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +2 -0
  38. package/template/.agents/skills/yss-openapi-governance/SKILL.md +4 -0
  39. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +11 -5
  40. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +68 -5
  41. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  42. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +8 -8
  43. package/template/.agents/skills/yss-prototype-stage/SKILL.md +4 -2
  44. package/template/.agents/skills/yss-prototype-stage/scripts/visual-baseline-contract.mjs +2 -2
  45. package/template/.agents/skills/yss-repository/SKILL.md +1 -0
  46. package/template/.agents/skills/yss-stage-decision/SKILL.md +2 -0
  47. package/template/.agents/skills/yss-tactical-design/SKILL.md +2 -0
  48. package/template/.agents/skills/yss-technical-design/SKILL.md +2 -0
  49. package/template/.agents/skills/yss-technical-design/scripts/engineering-design.mjs +1 -1
  50. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +11 -8
  51. package/template/.codex/skills/yss-cache/SKILL.md +6 -5
  52. package/template/.codex/skills/yss-cache/references/annotations.md +3 -1
  53. package/template/.codex/skills/yss-cache/references/architecture.md +4 -2
  54. package/template/.codex/skills/yss-cache/references/configuration.md +6 -3
  55. package/template/.codex/skills/yss-cache/references/jetcache.md +21 -0
  56. package/template/.codex/skills/yss-cache/references/redis-fallback.md +5 -3
  57. package/template/.codex/skills/yss-cache/references/verification.md +10 -4
  58. package/template/.codex/skills/yss-cache/scripts/verify-cache-component.sh +26 -20
  59. package/template/.codex/skills/yss-distributed-id/SKILL.md +14 -58
  60. package/template/.codex/skills/yss-distributed-id/agents/openai.yaml +2 -2
  61. package/template/.codex/skills/yss-distributed-id/references/README.md +11 -47
  62. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  63. package/template/.codex/skills/yss-mybatis/SKILL.md +14 -2
  64. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +2 -0
  65. package/template/.codex/skills/yss-openapi-governance/SKILL.md +4 -0
  66. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +11 -5
  67. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +68 -5
  68. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  69. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +8 -8
  70. package/template/.codex/skills/yss-prototype-stage/SKILL.md +4 -2
  71. package/template/.codex/skills/yss-prototype-stage/scripts/visual-baseline-contract.mjs +2 -2
  72. package/template/.codex/skills/yss-repository/SKILL.md +1 -0
  73. package/template/.codex/skills/yss-stage-decision/SKILL.md +2 -0
  74. package/template/.codex/skills/yss-tactical-design/SKILL.md +2 -0
  75. package/template/.codex/skills/yss-technical-design/SKILL.md +2 -0
  76. package/template/.codex/skills/yss-technical-design/scripts/engineering-design.mjs +1 -1
  77. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +11 -8
  78. package/template/.cursor/skills/yss-cache/SKILL.md +6 -5
  79. package/template/.cursor/skills/yss-cache/references/annotations.md +3 -1
  80. package/template/.cursor/skills/yss-cache/references/architecture.md +4 -2
  81. package/template/.cursor/skills/yss-cache/references/configuration.md +6 -3
  82. package/template/.cursor/skills/yss-cache/references/jetcache.md +21 -0
  83. package/template/.cursor/skills/yss-cache/references/redis-fallback.md +5 -3
  84. package/template/.cursor/skills/yss-cache/references/verification.md +10 -4
  85. package/template/.cursor/skills/yss-cache/scripts/verify-cache-component.sh +26 -20
  86. package/template/.cursor/skills/yss-distributed-id/SKILL.md +14 -58
  87. package/template/.cursor/skills/yss-distributed-id/agents/openai.yaml +2 -2
  88. package/template/.cursor/skills/yss-distributed-id/references/README.md +11 -47
  89. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  90. package/template/.cursor/skills/yss-mybatis/SKILL.md +14 -2
  91. package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +2 -0
  92. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +4 -0
  93. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +11 -5
  94. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +68 -5
  95. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  96. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +8 -8
  97. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +4 -2
  98. package/template/.cursor/skills/yss-prototype-stage/scripts/visual-baseline-contract.mjs +2 -2
  99. package/template/.cursor/skills/yss-repository/SKILL.md +1 -0
  100. package/template/.cursor/skills/yss-stage-decision/SKILL.md +2 -0
  101. package/template/.cursor/skills/yss-tactical-design/SKILL.md +2 -0
  102. package/template/.cursor/skills/yss-technical-design/SKILL.md +2 -0
  103. package/template/.cursor/skills/yss-technical-design/scripts/engineering-design.mjs +1 -1
  104. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +11 -8
  105. package/template/.pi/skills/yss-cache/SKILL.md +6 -5
  106. package/template/.pi/skills/yss-cache/references/annotations.md +3 -1
  107. package/template/.pi/skills/yss-cache/references/architecture.md +4 -2
  108. package/template/.pi/skills/yss-cache/references/configuration.md +6 -3
  109. package/template/.pi/skills/yss-cache/references/jetcache.md +21 -0
  110. package/template/.pi/skills/yss-cache/references/redis-fallback.md +5 -3
  111. package/template/.pi/skills/yss-cache/references/verification.md +10 -4
  112. package/template/.pi/skills/yss-cache/scripts/verify-cache-component.sh +26 -20
  113. package/template/.pi/skills/yss-distributed-id/SKILL.md +14 -58
  114. package/template/.pi/skills/yss-distributed-id/agents/openai.yaml +2 -2
  115. package/template/.pi/skills/yss-distributed-id/references/README.md +11 -47
  116. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  117. package/template/.pi/skills/yss-mybatis/SKILL.md +14 -2
  118. package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +2 -0
  119. package/template/.pi/skills/yss-openapi-governance/SKILL.md +4 -0
  120. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +11 -5
  121. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +68 -5
  122. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  123. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +8 -8
  124. package/template/.pi/skills/yss-prototype-stage/SKILL.md +4 -2
  125. package/template/.pi/skills/yss-prototype-stage/scripts/visual-baseline-contract.mjs +2 -2
  126. package/template/.pi/skills/yss-repository/SKILL.md +1 -0
  127. package/template/.pi/skills/yss-stage-decision/SKILL.md +2 -0
  128. package/template/.pi/skills/yss-tactical-design/SKILL.md +2 -0
  129. package/template/.pi/skills/yss-technical-design/SKILL.md +2 -0
  130. package/template/.pi/skills/yss-technical-design/scripts/engineering-design.mjs +1 -1
  131. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +11 -8
  132. package/template/AGENTS.md +2 -0
  133. package/template/CONTEXT.md +2 -1
  134. package/template/README.md +3 -5
  135. package/template/docs/agents/issue-tracker.md +7 -0
  136. package/template/docs/agents/skill-migrations.md +4 -0
  137. package/template/docs/agents/yss-skill-registry.yaml +7 -6
  138. package/template/docs/design/README.md +0 -1
  139. package/template/docs/design/design.md +2 -2
  140. package/template/docs/design/templates/interaction-spec-template.md +1 -1
  141. package/template/docs/engineering/evidence/aliyun-artifact-resolution.json +446 -0
  142. package/template/docs/process/contract-reading.md +46 -0
  143. package/template/docs/process/lifecycle-artifact-map.md +2 -2
  144. package/template/docs/process/lifecycle-registry-baseline.json +2 -1
  145. package/template/docs/process/lifecycle-registry.yaml +10 -4
  146. package/template/docs/process/schemas/api-contract-decision-v2.schema.json +198 -0
  147. package/template/docs/process/schemas/digital-human-task-package.schema.json +8 -0
  148. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +259 -0
  149. package/template/docs/process/schemas/stage-tracking.schema.json +259 -0
  150. package/template/docs/process/stage-tracking.md +62 -0
  151. package/template/docs/process/strategic-handoff-package.md +8 -0
  152. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +2 -0
  153. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +1 -0
  154. package/template/docs/user-guide//351/230/266/346/256/265/346/216/245/345/205/245/344/270/216/344/272/247/347/211/251/345/244/215/347/224/250/344/275/277/347/224/250/346/211/213/345/206/214.md +243 -0
  155. package/template/scripts/api-contract-decision +16 -0
  156. package/template/scripts/complete-backend-delivery +17 -0
  157. package/template/scripts/contract +13 -0
  158. package/template/scripts/design-md +2 -0
  159. package/template/scripts/dispatch-slice-task +13 -0
  160. package/template/scripts/lib/api-contract-decision.mjs +45 -4
  161. package/template/scripts/lib/approval-record.mjs +1 -1
  162. package/template/scripts/lib/approved-execution-context.mjs +35 -7
  163. package/template/scripts/lib/backend-architecture.mjs +2 -2
  164. package/template/scripts/lib/backend-delivery-terminal.mjs +51 -0
  165. package/template/scripts/lib/backend-platform-provenance.mjs +1 -1
  166. package/template/scripts/lib/backend-platform.mjs +1 -1
  167. package/template/scripts/lib/backend-scaffold-prerequisites.mjs +1 -1
  168. package/template/scripts/lib/context-contract.mjs +1 -1
  169. package/template/scripts/lib/context-reconciliation.mjs +1 -1
  170. package/template/scripts/lib/contract-source.mjs +22 -0
  171. package/template/scripts/lib/contract-views.mjs +109 -0
  172. package/template/scripts/lib/delivery-preflight.mjs +3 -2
  173. package/template/scripts/lib/design-md.mjs +230 -0
  174. package/template/scripts/lib/digital-human-roles.mjs +1 -1
  175. package/template/scripts/lib/existing-backend-architecture.mjs +4 -3
  176. package/template/scripts/lib/existing-ui-baseline.mjs +4 -2
  177. package/template/scripts/lib/frontend-delivery-boundary.mjs +1 -1
  178. package/template/scripts/lib/frontend-delivery.mjs +1 -1
  179. package/template/scripts/lib/harness-execution-scope.mjs +15 -1
  180. package/template/scripts/lib/implementation-contract-compiler.mjs +4 -4
  181. package/template/scripts/lib/json-schema.mjs +19 -4
  182. package/template/scripts/lib/lifecycle-context-query.mjs +5 -1
  183. package/template/scripts/lib/lifecycle-controls.mjs +1 -1
  184. package/template/scripts/lib/lifecycle-execution-scope.mjs +92 -0
  185. package/template/scripts/lib/lifecycle-registry.mjs +2 -1
  186. package/template/scripts/lib/lifecycle-transition.mjs +21 -3
  187. package/template/scripts/lib/openapi-draft-validation.mjs +2 -1
  188. package/template/scripts/lib/skill-registry.mjs +10 -3
  189. package/template/scripts/lib/skill-supply-chain.mjs +33 -14
  190. package/template/scripts/lib/slice-contract-preparation.mjs +16 -14
  191. package/template/scripts/lib/slice-contract-views.mjs +1 -1
  192. package/template/scripts/lib/slice-contract.mjs +18 -3
  193. package/template/scripts/lib/slice-execution-preflight.mjs +7 -3
  194. package/template/scripts/lib/slice-repositories.mjs +1 -1
  195. package/template/scripts/lib/slice-task-package.mjs +3 -2
  196. package/template/scripts/lib/stage-tracking-migration.mjs +176 -0
  197. package/template/scripts/lib/stage-tracking.mjs +184 -0
  198. package/template/scripts/lib/strategic-handoff-consumption.mjs +5 -4
  199. package/template/scripts/lib/strategic-handoff-io.mjs +5 -2
  200. package/template/scripts/lib/strategic-handoff-routing.mjs +31 -0
  201. package/template/scripts/lib/strategic-handoff.mjs +4 -2
  202. package/template/scripts/lib/task-package.mjs +2 -0
  203. package/template/scripts/lib/technical-design-boundary.mjs +4 -2
  204. package/template/scripts/lib/ui-baseline.mjs +1 -1
  205. package/template/scripts/lib/user-decision.mjs +1 -1
  206. package/template/scripts/lib/validation-phase.mjs +72 -0
  207. package/template/scripts/stage-tracking +25 -0
  208. package/template/scripts/strategic-consumer-entry +47 -0
  209. package/template/scripts/verify-context-reconciliation +4 -3
  210. package/template/scripts/verify-lifecycle-checkpoint +10 -0
  211. package/template/scripts/verify-project-instance +11 -10
  212. package/template/skills-lock.json +17 -32
  213. package/template.manifest.json +18 -3
  214. package/template.snapshot.json +5 -5
  215. package/template/.agents/skills/grill-me/SKILL.md +0 -7
  216. package/template/.agents/skills/grill-me/agents/openai.yaml +0 -5
  217. package/template/.agents/skills/yss-distributed-id/assets/AutoIdInterceptor.java +0 -246
  218. package/template/.agents/skills/yss-distributed-id/assets/EnableDistributedId.java +0 -25
  219. package/template/.agents/skills/yss-distributed-id/assets/LeafConf.java +0 -36
  220. package/template/.codex/skills/grill-me/SKILL.md +0 -7
  221. package/template/.codex/skills/grill-me/agents/openai.yaml +0 -5
  222. package/template/.codex/skills/yss-distributed-id/assets/AutoIdInterceptor.java +0 -246
  223. package/template/.codex/skills/yss-distributed-id/assets/EnableDistributedId.java +0 -25
  224. package/template/.codex/skills/yss-distributed-id/assets/LeafConf.java +0 -36
  225. package/template/.cursor/skills/grill-me/SKILL.md +0 -7
  226. package/template/.cursor/skills/grill-me/agents/openai.yaml +0 -5
  227. package/template/.cursor/skills/yss-distributed-id/assets/AutoIdInterceptor.java +0 -246
  228. package/template/.cursor/skills/yss-distributed-id/assets/EnableDistributedId.java +0 -25
  229. package/template/.cursor/skills/yss-distributed-id/assets/LeafConf.java +0 -36
  230. package/template/.pi/skills/grill-me/SKILL.md +0 -7
  231. package/template/.pi/skills/grill-me/agents/openai.yaml +0 -5
  232. package/template/.pi/skills/yss-distributed-id/assets/AutoIdInterceptor.java +0 -246
  233. package/template/.pi/skills/yss-distributed-id/assets/EnableDistributedId.java +0 -25
  234. package/template/.pi/skills/yss-distributed-id/assets/LeafConf.java +0 -36
  235. package/template/docs/agents/yss-plugin-dependency-contract.md +0 -45
  236. package/template/docs/api/.gitkeep +0 -0
  237. package/template/docs/api/specs/.gitkeep +0 -0
  238. package/template/docs/architecture/.gitkeep +0 -0
  239. package/template/docs/design/facts/antdv-next/1.5.2/cli-help.txt +0 -38
  240. package/template/docs/design/facts/antdv-next/1.5.2/component-list.json +0 -434
  241. package/template/docs/design/facts/antdv-next/1.5.2/components/Alert/demo-basic.json +0 -7
  242. package/template/docs/design/facts/antdv-next/1.5.2/components/Alert/info.json +0 -246
  243. package/template/docs/design/facts/antdv-next/1.5.2/components/Alert/semantic.json +0 -40
  244. package/template/docs/design/facts/antdv-next/1.5.2/components/Alert/token.json +0 -32
  245. package/template/docs/design/facts/antdv-next/1.5.2/components/Button/demo-basic.json +0 -7
  246. package/template/docs/design/facts/antdv-next/1.5.2/components/Button/info.json +0 -190
  247. package/template/docs/design/facts/antdv-next/1.5.2/components/Button/semantic.json +0 -20
  248. package/template/docs/design/facts/antdv-next/1.5.2/components/Button/token.json +0 -256
  249. package/template/docs/design/facts/antdv-next/1.5.2/components/Input/demo-basic.json +0 -7
  250. package/template/docs/design/facts/antdv-next/1.5.2/components/Input/info.json +0 -460
  251. package/template/docs/design/facts/antdv-next/1.5.2/components/Input/semantic.json +0 -70
  252. package/template/docs/design/facts/antdv-next/1.5.2/components/Input/token.json +0 -123
  253. package/template/docs/design/facts/antdv-next/1.5.2/components/Modal/demo-basic.json +0 -7
  254. package/template/docs/design/facts/antdv-next/1.5.2/components/Modal/info.json +0 -646
  255. package/template/docs/design/facts/antdv-next/1.5.2/components/Modal/semantic.json +0 -50
  256. package/template/docs/design/facts/antdv-next/1.5.2/components/Modal/token.json +0 -130
  257. package/template/docs/design/facts/antdv-next/1.5.2/components/Select/demo-basic.json +0 -7
  258. package/template/docs/design/facts/antdv-next/1.5.2/components/Select/info.json +0 -640
  259. package/template/docs/design/facts/antdv-next/1.5.2/components/Select/semantic.json +0 -70
  260. package/template/docs/design/facts/antdv-next/1.5.2/components/Select/token.json +0 -172
  261. package/template/docs/design/facts/antdv-next/1.5.2/components/Table/demo-basic.json +0 -7
  262. package/template/docs/design/facts/antdv-next/1.5.2/components/Table/info.json +0 -1010
  263. package/template/docs/design/facts/antdv-next/1.5.2/components/Table/semantic.json +0 -70
  264. package/template/docs/design/facts/antdv-next/1.5.2/components/Table/token.json +0 -263
  265. package/template/docs/design/facts/antdv-next/1.5.2/components/Tag/demo-basic.json +0 -7
  266. package/template/docs/design/facts/antdv-next/1.5.2/components/Tag/info.json +0 -321
  267. package/template/docs/design/facts/antdv-next/1.5.2/components/Tag/semantic.json +0 -25
  268. package/template/docs/design/facts/antdv-next/1.5.2/components/Tag/token.json +0 -25
  269. package/template/docs/design/facts/antdv-next/1.5.2/design-md.json +0 -3
  270. package/template/docs/design/facts/antdv-next/1.5.2/manifest.json +0 -215
  271. package/template/docs/design/facts/antdv-next/1.5.2/resolution-probe.json +0 -5
  272. package/template/docs/design/prototypes/.gitkeep +0 -1
  273. package/template/docs/implementation/.gitkeep +0 -1
  274. package/template/docs/plan/IDEATION.md +0 -96
  275. package/template/docs/process/PDCA-SCRUM.md +0 -10
  276. package/template/docs/process/harness-executive-blueprint.md +0 -10
  277. package/template/docs/releases/.gitkeep +0 -1
  278. package/template/docs/requirements/README.md +0 -85
  279. package/template/docs/requirements/tickets/.gitkeep +0 -1
  280. package/template/docs/templates/agent-brief-template.md +0 -46
  281. package/template/docs/templates/architecture-proposal-template.md +0 -18
  282. package/template/docs/templates/implementation-plan-template.md +0 -16
  283. package/template/docs/templates/implementation-routing-template.md +0 -350
  284. package/template/docs/templates/requirement-freeze-template.md +0 -63
  285. package/template/docs/templates/risk-register-template.md +0 -11
  286. package/template/docs/templates/user-story-template.md +0 -20
  287. package/template/docs/testing/README.md +0 -110
@@ -1,246 +0,0 @@
1
- package com.yss.cloud.sankuai.mybatis;
2
-
3
- import com.baomidou.mybatisplus.annotation.IdType;
4
- import com.baomidou.mybatisplus.annotation.TableId;
5
- import com.baomidou.mybatisplus.annotation.TableName;
6
- import com.yss.cloud.exception.BizException;
7
- import com.yss.cloud.sankuai.CosidSegmentContextHelper;
8
- import com.yss.cloud.sankuai.GenerationTypeSeq;
9
- import com.yss.cloud.sankuai.SegmentContextHelper;
10
- import com.yss.cloud.sankuai.SnowflakeContextHelper;
11
- import lombok.extern.slf4j.Slf4j;
12
- import org.apache.commons.lang3.StringUtils;
13
- import org.apache.ibatis.binding.BindingException;
14
- import org.apache.ibatis.binding.MapperMethod;
15
- import org.apache.ibatis.executor.statement.StatementHandler;
16
- import org.apache.ibatis.mapping.BoundSql;
17
- import org.apache.ibatis.plugin.Interceptor;
18
- import org.apache.ibatis.plugin.Intercepts;
19
- import org.apache.ibatis.plugin.Invocation;
20
- import org.apache.ibatis.plugin.Signature;
21
- import org.springframework.util.ObjectUtils;
22
- import org.springframework.util.ReflectionUtils;
23
-
24
- import javax.persistence.Entity;
25
- import javax.persistence.GeneratedValue;
26
- import javax.persistence.Table;
27
- import java.lang.reflect.Field;
28
- import java.sql.Connection;
29
- import java.util.*;
30
-
31
- @Intercepts(
32
- {
33
- @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})
34
- }
35
- )
36
- @Slf4j
37
- public class AutoIdInterceptor implements Interceptor {
38
-
39
- @Override
40
- public Object intercept(Invocation invocation) throws Throwable {
41
- StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
42
- BoundSql boundSql = statementHandler.getBoundSql();
43
- String boundSqlStr = boundSql.getSql();
44
- if (StringUtils.startsWithIgnoreCase(StringUtils.trim(boundSqlStr),"INSERT")){
45
- processInsertStatement(statementHandler);
46
- }
47
-
48
- return invocation.proceed();
49
- }
50
-
51
- /**
52
- * 1.处理插入的情况
53
- *
54
- * @apiNote 1.处理新增insert
55
- * @param statementHandler 句柄
56
- */
57
- private void processInsertStatement(StatementHandler statementHandler) {
58
- BoundSql boundSql = statementHandler.getBoundSql();
59
- Object parameterObject = boundSql.getParameterObject();
60
-
61
- if (parameterObject != null) {
62
- processParameterObject(parameterObject);
63
- }
64
- }
65
-
66
- /**
67
- * 处理参数对象
68
- *
69
- * @apiNote 2.处理参数对象 mapper->entityList,plus->param1
70
- * @param parameterObject 参数对象
71
- */
72
- private void processParameterObject(Object parameterObject) {
73
- if (parameterObject instanceof MapperMethod.ParamMap<?>){
74
- // 获取批量实体对象,若为空则为single 参数对象
75
- Object entityList = null;
76
- try {
77
- entityList = ((MapperMethod.ParamMap<?>) parameterObject).get("entityList");
78
- }catch (BindingException e){
79
- log.warn("non entityList. info -> {}",e.getLocalizedMessage());
80
- }
81
- // 兼容mybatis默认参数 集合的场景
82
- if (ObjectUtils.isEmpty(entityList)){
83
- try {
84
- entityList = ((MapperMethod.ParamMap<?>) parameterObject).get("collection");
85
- }catch (BindingException e){
86
- log.warn("non entityList & non collection. info -> {}",e.getLocalizedMessage());
87
- }
88
- }
89
- // 兼容mybatis默认参数 数组的场景
90
- if (ObjectUtils.isEmpty(entityList)){
91
- try {
92
- entityList = ((MapperMethod.ParamMap<?>) parameterObject).get("array");
93
- }catch (BindingException e){
94
- log.warn("non entityList & non collection & non array. info -> {}",e.getLocalizedMessage());
95
- }
96
- }
97
- if (ObjectUtils.isEmpty(entityList)){
98
- try {
99
- entityList = ((MapperMethod.ParamMap<?>) parameterObject).get("param1");
100
- }catch (BindingException e){
101
- log.error("non param1. info -> {}",e.getLocalizedMessage());
102
- throw new BizException("FeignAutoIdInterceptor run error");
103
- }
104
- }
105
- if (entityList instanceof List) {
106
- // 批量插入
107
- List<?> el = (List<?>) entityList;
108
- for (Object entity : el) {
109
- processEntity(entity);
110
- }
111
- } else if (entityList.getClass().isArray()) {
112
- // 批量插入
113
- Object[] array = (Object[]) entityList;
114
- for (Object entity : array) {
115
- processEntity(entity);
116
- }
117
- }else {
118
- // 单独插入
119
- processEntity(entityList);
120
- }
121
- } else {
122
- // 单独插入
123
- processEntity(parameterObject);
124
- }
125
- }
126
-
127
- /**
128
- * 3.处理对象实体
129
- *
130
- * @apiNote 3.处理对象实体
131
- * @param entity 对象实体
132
- */
133
- private void processEntity(Object entity) {
134
- Class<?> entityClass = entity.getClass();
135
- if (isEntityClass(entityClass)) {
136
- autoIdSet(entity);
137
- }
138
- }
139
-
140
- /**
141
- * 4.自动为实体设置id
142
- *
143
- * @apiNote 4.自动为实体设置id
144
- * @param entity 对象实体
145
- */
146
- private void autoIdSet(Object entity) {
147
- Class<?> entityClass = entity.getClass();
148
- List<Field> fields = getAllFields(entityClass);
149
- for (Field field : fields) {
150
-
151
- if (field.isAnnotationPresent(GeneratedValue.class)||
152
- field.isAnnotationPresent(TableId.class)) {
153
- processGeneratedValue(entity, field);
154
- }
155
- }
156
- }
157
-
158
- /**
159
- * 5.设置id字段
160
- *
161
- * @param entity 实体对象
162
- * @param field id字段
163
- */
164
- private void processGeneratedValue(Object entity, Field field) {
165
- String genIdType = getGenIdType(field);
166
-
167
- String tableName = getTableName(entity);
168
-
169
- if (Objects.nonNull(genIdType)&&
170
- Objects.nonNull(SegmentContextHelper.LeafConf())&&
171
- SegmentContextHelper.LeafConf().isLeafSegmentEnable()&&
172
- (genIdType.equals(GenerationTypeSeq.SEGMENT) || genIdType.equals(IdType.AUTO.name()) || genIdType.equals(IdType.ASSIGN_ID.name()))) {
173
- long idValue = SegmentContextHelper.nextId(tableName);
174
- setFieldValue(entity, field, idValue);
175
- } else if (Objects.nonNull(genIdType)&&
176
- Objects.nonNull(SnowflakeContextHelper.LeafConf())&&
177
- SnowflakeContextHelper.LeafConf().isLeafSnowflakeEnable()
178
- &&genIdType.equals(GenerationTypeSeq.SNOWFLAKE) ) {
179
- long idValue = SnowflakeContextHelper.nextId();
180
- setFieldValue(entity, field, idValue);
181
- } else if (Objects.nonNull(genIdType)&&
182
- (genIdType.equals(GenerationTypeSeq.UUID)|| genIdType.equals(IdType.ASSIGN_UUID.name()))) {
183
- String idValue = UUID.randomUUID().toString();
184
- setFieldValue(entity, field, idValue);
185
- } else if (Objects.nonNull(genIdType) &&
186
- genIdType.equals(GenerationTypeSeq.COSID_SEGMENT)) {
187
- long idValue = CosidSegmentContextHelper.nextId(tableName);
188
- setFieldValue(entity, field, idValue);
189
- }
190
- }
191
-
192
- private void setFieldValue(Object entity, Field field, Object value) {
193
- field.setAccessible(true);
194
- // 如果value为null,则ID生成服务不可用,使用默认规则替代;有值则覆盖
195
- if(!Objects.isNull(value)) {
196
- if (field.getType() == String.class) {
197
- ReflectionUtils.setField(field,entity,String.valueOf(value));
198
- } else if (field.getType() == Integer.class) {
199
- ReflectionUtils.setField(field,entity,Integer.valueOf(String.valueOf(value)));
200
- } else {
201
- ReflectionUtils.setField(field,entity,value);
202
- }
203
- }
204
- }
205
-
206
- private boolean isEntityClass(Class<?> clazz) {
207
- return clazz.isAnnotationPresent(Entity.class)||clazz.isAnnotationPresent(TableName.class);
208
- }
209
-
210
- private String getTableName(Object entity){
211
- Table table = entity.getClass().getAnnotation(Table.class);
212
- if (Objects.nonNull(table)){
213
- return table.name();
214
- }
215
-
216
- TableName tableName = entity.getClass().getAnnotation(TableName.class);
217
-
218
- if (Objects.nonNull(tableName)){
219
- return tableName.value();
220
- }
221
-
222
- return null;
223
- }
224
- private static List<Field> getAllFields(Class<?> clazz) {
225
- List<Field> fields = new ArrayList<>();
226
- while (clazz != null) {
227
- Collections.addAll(fields, clazz.getDeclaredFields());
228
- clazz = clazz.getSuperclass();
229
- }
230
- return fields;
231
- }
232
- private String getGenIdType(Field field){
233
- GeneratedValue generatedValueAnnotation = field.getAnnotation(GeneratedValue.class);
234
-
235
- if (Objects.nonNull(generatedValueAnnotation)){
236
- return generatedValueAnnotation.generator();
237
- }
238
-
239
- TableId tableId = field.getAnnotation(TableId.class);
240
-
241
- if (Objects.nonNull(tableId)){
242
- return tableId.type().name();
243
- }
244
- return null;
245
- }
246
- }
@@ -1,25 +0,0 @@
1
- package com.yss.cloud;
2
-
3
- import com.yss.cloud.sankuai.config.LeafConf;
4
- import com.yss.cloud.sankuai.config.LeafDataSourceConfiguration;
5
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
6
- import org.springframework.context.annotation.Import;
7
-
8
- import java.lang.annotation.*;
9
-
10
- @Target({ElementType.TYPE})
11
- @Retention(RetentionPolicy.RUNTIME)
12
- @Documented
13
- @Inherited
14
- @Import({LeafDataSourceConfiguration.class, EnableDistributedImportSelector.class})
15
- @EnableConfigurationProperties(LeafConf.class)
16
- public @interface EnableDistributedId {
17
- /**
18
- * 默认自动装载leaf配置,设置默认启用状态
19
- */
20
- boolean autoRegister() default true;
21
- /**
22
- * 是否启用cosid模式
23
- */
24
- boolean cosid() default false;
25
- }
@@ -1,36 +0,0 @@
1
- package com.yss.cloud.sankuai.config;
2
-
3
- import org.springframework.boot.context.properties.ConfigurationProperties;
4
-
5
- @ConfigurationProperties(prefix = "spring.leaf", ignoreInvalidFields = true)
6
- public class LeafConf {
7
- private boolean leafSegmentEnable;
8
- private boolean leafSnowflakeEnable;
9
-
10
- public boolean isLeafSegmentEnable() {
11
- return leafSegmentEnable;
12
- }
13
-
14
- public void setLeafSegmentEnable(boolean leafSegmentEnable) {
15
- this.leafSegmentEnable = leafSegmentEnable;
16
- }
17
-
18
- public boolean isLeafSnowflakeEnable() {
19
- return leafSnowflakeEnable;
20
- }
21
-
22
- public void setLeafSnowflakeEnable(boolean leafSnowflakeEnable) {
23
- this.leafSnowflakeEnable = leafSnowflakeEnable;
24
- }
25
-
26
- @Override
27
- public String toString() {
28
- return "LeafConf{"
29
- + "leafSegmentEnable="
30
- + leafSegmentEnable
31
- + ", leafSnowflakeEnable="
32
- + leafSnowflakeEnable
33
- + ", leafSnowflakePort="
34
- + '}';
35
- }
36
- }
@@ -1,45 +0,0 @@
1
- # YSS 插件依赖契约
2
-
3
- ## 目的
4
-
5
- YSS Codex 插件可以随插件包提供角色 Harness skill,但不拥有目标项目的共享 skill。共享 skill 的权威内容仍是目标项目的 `.agents/skills`,投影、来源和 hash 由目标项目的 `skills-lock.json` 与 `docs/agents/yss-skill-registry.yaml` 管理。
6
-
7
- 插件依赖文件位于插件根目录 `.yss-plugin/dependencies.yaml`,用于声明插件需要的角色契约,而不是复制 `core_skills` 清单。
8
-
9
- ```yaml
10
- schema_version: 1
11
- plugin: yss-backend-harness
12
- requires:
13
- - role_id: role.backend-engineer
14
- registry: docs/agents/digital-human-roles.yaml
15
- minimum_contract_version: 1
16
- ```
17
-
18
- ## 校验规则
19
-
20
- 1. 插件导入时只校验 `dependencies.yaml` 的结构、插件名和 `schema_version`。
21
- 2. 插件调用前必须校验目标项目 `yss-project.yaml`,且 `repository_mode` 合法。
22
- 3. 目标项目必须存在依赖声明中的角色,且 `contract_version` 不低于 `minimum_contract_version`。
23
- 4. 角色的 `core_skills` 由目标项目的 `digital-human-roles.yaml` 动态解析;插件不得维护第二份清单。
24
- 5. 共享 skill 必须通过 `yss-skill-registry.yaml`、`skills-lock.json` 和目标 Agent projection 校验。
25
- 6. 缺少角色、版本不兼容、skill 缺失、来源或 hash 漂移、投影不完整时,插件必须返回 `blocked`,不得降级执行。
26
- 7. 插件不得自动写入 `.agents/skills`、`skills-lock.json` 或任何 Agent projection;修复应回路由到目标项目维护流程。
27
-
28
- ## 运行时结果
29
-
30
- 依赖不满足时至少返回:
31
-
32
- ```yaml
33
- status: blocked
34
- blocking_signals: [missing-role]
35
- diagnostics:
36
- plugin: yss-backend-harness
37
- required_role: role.backend-engineer
38
- next_route: install-or-sync-target-project-skills
39
- ```
40
-
41
- `blocking_signals` 可使用 `repository-identity-invalid`、`missing-role`、`incompatible-contract-version`、`missing-skill`、`skill-source-drift`、`skill-hash-drift` 和 `skill-projection-incomplete`。
42
-
43
- ## 版本策略
44
-
45
- 依赖文件 schema 只保证同一主版本向后兼容。插件的 `minimum_contract_version` 是硬门槛;`tested_with` 等兼容性信息只能作为提示,不能替代目标项目的契约版本校验。
File without changes
File without changes
File without changes
@@ -1,38 +0,0 @@
1
-
2
- @antdv-next/cli v0.0.0-beta.5
3
- ─────────────────────────────
4
-
5
- CLI tool for querying antdv-next knowledge and analyzing antdv-next usage in projects (@antdv-next/cli v0.0.0-beta.5)
6
-
7
- USAGE @antdv-next/cli [OPTIONS] init|bug|bug-cli|changelog|demo|design.md|doc|doctor|env|info|lint|list|mcp|migrate|semantic|setup|token|upgrade|usage|check
8
-
9
- OPTIONS
10
-
11
- -c, --cwd=<cwd> Current working directory (Default: /Users/zhudaoming/Projects/yss-spec-project-template)
12
- --ver=<ver> Target antdv-next version (e.g. 1.0.0) (Default: )
13
- -f, --format=<text|markdown|json> Output format (Default: text)
14
-
15
- COMMANDS
16
-
17
- init Initialize a fresh project
18
- bug Report a bug to the antdv-next repository
19
- bug-cli Report a bug to the @antdv-next/cli repository
20
- changelog Compare component API differences between versions
21
- demo Get demo source code for a component
22
- design.md Output the antd design-language document (design.md) for AI design tools
23
- doc Output the full API documentation for a component in markdown
24
- doctor Diagnose project-level antd configuration issues
25
- env Collect antdv-related environment information for bug reporting
26
- info Query component API: props, type definitions, default values
27
- lint Check antdv-next usage against best practices
28
- list List all components with bilingual names, descriptions, and first-supported version
29
- mcp Start MCP server for AI assistant integration
30
- migrate Version migration guide with optional auto-fix
31
- semantic Query the semantic customization structure of a component
32
- setup Set up Ant Design MCP/Skill for AI agents or GitHub Actions
33
- token Query Design Tokens (global or component-level)
34
- upgrade Upgrade the CLI to the latest version
35
- usage Scan project for antdv-next component usage statistics
36
- check Test item version
37
-
38
- Use @antdv-next/cli <command> --help for more information about a command.