ai-engineering-init 1.1.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 (313) hide show
  1. package/.claude/agents/code-reviewer.md +139 -0
  2. package/.claude/agents/project-manager.md +159 -0
  3. package/.claude/audio/completed.wav +0 -0
  4. package/.claude/commands/add-todo.md +255 -0
  5. package/.claude/commands/check.md +210 -0
  6. package/.claude/commands/crud.md +454 -0
  7. package/.claude/commands/dev.md +503 -0
  8. package/.claude/commands/init-docs.md +681 -0
  9. package/.claude/commands/next.md +251 -0
  10. package/.claude/commands/progress.md +242 -0
  11. package/.claude/commands/start.md +199 -0
  12. package/.claude/commands/sync.md +307 -0
  13. package/.claude/commands/update-status.md +428 -0
  14. package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
  15. package/.claude/docs/README.md +167 -0
  16. package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
  17. package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
  18. package/.claude/docs//345/267/245/344/275/234/346/265/201/345/274/200/345/217/221/346/214/207/345/215/227.md +714 -0
  19. package/.claude/docs//345/267/245/345/205/267/347/261/273/344/275/277/347/224/250/346/214/207/345/215/227.md +463 -0
  20. package/.claude/docs//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/350/247/204/350/214/203.md +390 -0
  21. package/.claude/docs//346/226/260/345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213/350/247/204/350/214/203.md +688 -0
  22. package/.claude/docs//346/226/260/351/241/271/347/233/256/345/274/200/345/217/221/346/265/201/347/250/213.md +365 -0
  23. package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
  24. package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
  25. package/.claude/framework-config.json +73 -0
  26. package/.claude/hooks/pre-tool-use.js +117 -0
  27. package/.claude/hooks/skill-forced-eval.js +167 -0
  28. package/.claude/hooks/stop.js +58 -0
  29. package/.claude/settings.json +41 -0
  30. package/.claude/skills/add-skill/SKILL.md +352 -0
  31. package/.claude/skills/api-development/SKILL.md +560 -0
  32. package/.claude/skills/architecture-design/SKILL.md +756 -0
  33. package/.claude/skills/backend-annotations/SKILL.md +674 -0
  34. package/.claude/skills/banana-image/CHANGELOG.md +37 -0
  35. package/.claude/skills/banana-image/README.md +146 -0
  36. package/.claude/skills/banana-image/SKILL.md +164 -0
  37. package/.claude/skills/banana-image/assets/logo.png +0 -0
  38. package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
  39. package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
  40. package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  41. package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
  42. package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
  43. package/.claude/skills/banana-image/scripts/package.json +18 -0
  44. package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
  45. package/.claude/skills/banana-image/templates/poster.json +22 -0
  46. package/.claude/skills/banana-image/templates/product.json +17 -0
  47. package/.claude/skills/banana-image/templates/social.json +22 -0
  48. package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
  49. package/.claude/skills/brainstorm/SKILL.md +648 -0
  50. package/.claude/skills/bug-detective/SKILL.md +1206 -0
  51. package/.claude/skills/code-patterns/SKILL.md +590 -0
  52. package/.claude/skills/collaborating-with-codex/SKILL.md +174 -0
  53. package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  54. package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
  55. package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  56. package/.claude/skills/crud-development/SKILL.md +649 -0
  57. package/.claude/skills/data-permission/SKILL.md +599 -0
  58. package/.claude/skills/database-ops/SKILL.md +407 -0
  59. package/.claude/skills/error-handler/SKILL.md +371 -0
  60. package/.claude/skills/file-oss-management/SKILL.md +863 -0
  61. package/.claude/skills/git-workflow/SKILL.md +375 -0
  62. package/.claude/skills/json-serialization/SKILL.md +357 -0
  63. package/.claude/skills/leniu-api-development/SKILL.md +803 -0
  64. package/.claude/skills/leniu-architecture-design/SKILL.md +598 -0
  65. package/.claude/skills/leniu-backend-annotations/SKILL.md +664 -0
  66. package/.claude/skills/leniu-code-patterns/SKILL.md +365 -0
  67. package/.claude/skills/leniu-crud-development/SKILL.md +1110 -0
  68. package/.claude/skills/leniu-data-permission/SKILL.md +256 -0
  69. package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
  70. package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
  71. package/.claude/skills/leniu-java-amount-handling/SKILL.md +461 -0
  72. package/.claude/skills/leniu-java-code-style/SKILL.md +510 -0
  73. package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
  74. package/.claude/skills/leniu-java-entity/SKILL.md +751 -0
  75. package/.claude/skills/leniu-java-export/SKILL.md +560 -0
  76. package/.claude/skills/leniu-java-logging/SKILL.md +832 -0
  77. package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
  78. package/.claude/skills/leniu-java-mybatis/SKILL.md +640 -0
  79. package/.claude/skills/leniu-java-report-query-param/SKILL.md +291 -0
  80. package/.claude/skills/leniu-java-task/SKILL.md +367 -0
  81. package/.claude/skills/leniu-java-total-line/SKILL.md +195 -0
  82. package/.claude/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  83. package/.claude/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  84. package/.claude/skills/leniu-mealtime/SKILL.md +215 -0
  85. package/.claude/skills/leniu-redis-cache/SKILL.md +316 -0
  86. package/.claude/skills/leniu-security-guard/SKILL.md +520 -0
  87. package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
  88. package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
  89. package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
  90. package/.claude/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  91. package/.claude/skills/openspec-continue-change/SKILL.md +118 -0
  92. package/.claude/skills/openspec-explore/SKILL.md +290 -0
  93. package/.claude/skills/openspec-ff-change/SKILL.md +101 -0
  94. package/.claude/skills/openspec-new-change/SKILL.md +74 -0
  95. package/.claude/skills/openspec-onboard/SKILL.md +529 -0
  96. package/.claude/skills/openspec-sync-specs/SKILL.md +138 -0
  97. package/.claude/skills/openspec-verify-change/SKILL.md +168 -0
  98. package/.claude/skills/performance-doctor/SKILL.md +627 -0
  99. package/.claude/skills/project-navigator/SKILL.md +305 -0
  100. package/.claude/skills/redis-cache/SKILL.md +839 -0
  101. package/.claude/skills/scheduled-jobs/SKILL.md +633 -0
  102. package/.claude/skills/security-guard/SKILL.md +748 -0
  103. package/.claude/skills/sms-mail/SKILL.md +766 -0
  104. package/.claude/skills/social-login/SKILL.md +668 -0
  105. package/.claude/skills/store-pc/SKILL.md +366 -0
  106. package/.claude/skills/task-tracker/SKILL.md +307 -0
  107. package/.claude/skills/tech-decision/SKILL.md +393 -0
  108. package/.claude/skills/tenant-management/SKILL.md +603 -0
  109. package/.claude/skills/test-development/SKILL.md +755 -0
  110. package/.claude/skills/ui-pc/SKILL.md +438 -0
  111. package/.claude/skills/utils-toolkit/SKILL.md +615 -0
  112. package/.claude/skills/websocket-sse/SKILL.md +716 -0
  113. package/.claude/skills/workflow-engine/SKILL.md +676 -0
  114. package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
  115. package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
  116. package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
  117. package/.codex/skills/add-skill/SKILL.md +352 -0
  118. package/.codex/skills/add-todo/SKILL.md +269 -0
  119. package/.codex/skills/api-development/SKILL.md +693 -0
  120. package/.codex/skills/architecture-design/SKILL.md +628 -0
  121. package/.codex/skills/backend-annotations/SKILL.md +664 -0
  122. package/.codex/skills/banana-image/CHANGELOG.md +37 -0
  123. package/.codex/skills/banana-image/README.md +146 -0
  124. package/.codex/skills/banana-image/SKILL.md +164 -0
  125. package/.codex/skills/banana-image/assets/logo.png +0 -0
  126. package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
  127. package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
  128. package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  129. package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
  130. package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
  131. package/.codex/skills/banana-image/scripts/package.json +18 -0
  132. package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
  133. package/.codex/skills/banana-image/templates/poster.json +22 -0
  134. package/.codex/skills/banana-image/templates/product.json +17 -0
  135. package/.codex/skills/banana-image/templates/social.json +22 -0
  136. package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
  137. package/.codex/skills/brainstorm/SKILL.md +648 -0
  138. package/.codex/skills/bug-detective/SKILL.md +1206 -0
  139. package/.codex/skills/check/SKILL.md +367 -0
  140. package/.codex/skills/code-patterns/SKILL.md +442 -0
  141. package/.codex/skills/collaborating-with-codex/SKILL.md +174 -0
  142. package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  143. package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
  144. package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  145. package/.codex/skills/crud/SKILL.md +265 -0
  146. package/.codex/skills/crud-development/SKILL.md +637 -0
  147. package/.codex/skills/data-permission/SKILL.md +591 -0
  148. package/.codex/skills/database-ops/SKILL.md +553 -0
  149. package/.codex/skills/dev/SKILL.md +187 -0
  150. package/.codex/skills/error-handler/SKILL.md +361 -0
  151. package/.codex/skills/file-oss-management/SKILL.md +863 -0
  152. package/.codex/skills/git-workflow/SKILL.md +375 -0
  153. package/.codex/skills/init-docs/SKILL.md +194 -0
  154. package/.codex/skills/json-serialization/SKILL.md +357 -0
  155. package/.codex/skills/leniu-api-development/SKILL.md +803 -0
  156. package/.codex/skills/leniu-architecture-design/SKILL.md +594 -0
  157. package/.codex/skills/leniu-backend-annotations/SKILL.md +662 -0
  158. package/.codex/skills/leniu-code-patterns/SKILL.md +365 -0
  159. package/.codex/skills/leniu-crud-development/SKILL.md +1110 -0
  160. package/.codex/skills/leniu-data-permission/SKILL.md +256 -0
  161. package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
  162. package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
  163. package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
  164. package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
  165. package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
  166. package/.codex/skills/leniu-java-entity/SKILL.md +751 -0
  167. package/.codex/skills/leniu-java-export/SKILL.md +560 -0
  168. package/.codex/skills/leniu-java-logging/SKILL.md +832 -0
  169. package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
  170. package/.codex/skills/leniu-java-mybatis/SKILL.md +640 -0
  171. package/.codex/skills/leniu-java-report-query-param/SKILL.md +291 -0
  172. package/.codex/skills/leniu-java-task/SKILL.md +367 -0
  173. package/.codex/skills/leniu-java-total-line/SKILL.md +195 -0
  174. package/.codex/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  175. package/.codex/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  176. package/.codex/skills/leniu-mealtime/SKILL.md +215 -0
  177. package/.codex/skills/leniu-redis-cache/SKILL.md +316 -0
  178. package/.codex/skills/leniu-security-guard/SKILL.md +520 -0
  179. package/.codex/skills/leniu-utils-toolkit/SKILL.md +378 -0
  180. package/.codex/skills/next/SKILL.md +137 -0
  181. package/.codex/skills/openspec-apply-change/SKILL.md +156 -0
  182. package/.codex/skills/openspec-archive-change/SKILL.md +114 -0
  183. package/.codex/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  184. package/.codex/skills/openspec-continue-change/SKILL.md +118 -0
  185. package/.codex/skills/openspec-explore/SKILL.md +290 -0
  186. package/.codex/skills/openspec-ff-change/SKILL.md +101 -0
  187. package/.codex/skills/openspec-new-change/SKILL.md +74 -0
  188. package/.codex/skills/openspec-onboard/SKILL.md +529 -0
  189. package/.codex/skills/openspec-sync-specs/SKILL.md +138 -0
  190. package/.codex/skills/openspec-verify-change/SKILL.md +168 -0
  191. package/.codex/skills/performance-doctor/SKILL.md +627 -0
  192. package/.codex/skills/progress/SKILL.md +193 -0
  193. package/.codex/skills/project-navigator/SKILL.md +286 -0
  194. package/.codex/skills/redis-cache/SKILL.md +829 -0
  195. package/.codex/skills/scheduled-jobs/SKILL.md +633 -0
  196. package/.codex/skills/security-guard/SKILL.md +739 -0
  197. package/.codex/skills/sms-mail/SKILL.md +766 -0
  198. package/.codex/skills/social-login/SKILL.md +668 -0
  199. package/.codex/skills/start/SKILL.md +154 -0
  200. package/.codex/skills/store-pc/SKILL.md +491 -0
  201. package/.codex/skills/sync/SKILL.md +149 -0
  202. package/.codex/skills/task-tracker/SKILL.md +307 -0
  203. package/.codex/skills/tech-decision/SKILL.md +393 -0
  204. package/.codex/skills/tenant-management/SKILL.md +603 -0
  205. package/.codex/skills/test-development/SKILL.md +755 -0
  206. package/.codex/skills/ui-pc/SKILL.md +475 -0
  207. package/.codex/skills/update-status/SKILL.md +159 -0
  208. package/.codex/skills/utils-toolkit/SKILL.md +593 -0
  209. package/.codex/skills/websocket-sse/SKILL.md +716 -0
  210. package/.codex/skills/workflow-engine/SKILL.md +676 -0
  211. package/.cursor/agents/code-reviewer.md +139 -0
  212. package/.cursor/agents/project-manager.md +159 -0
  213. package/.cursor/commands/opsx-apply.md +152 -0
  214. package/.cursor/commands/opsx-archive.md +157 -0
  215. package/.cursor/commands/opsx-bulk-archive.md +242 -0
  216. package/.cursor/commands/opsx-continue.md +114 -0
  217. package/.cursor/commands/opsx-explore.md +174 -0
  218. package/.cursor/commands/opsx-ff.md +94 -0
  219. package/.cursor/commands/opsx-new.md +69 -0
  220. package/.cursor/commands/opsx-onboard.md +525 -0
  221. package/.cursor/commands/opsx-sync.md +134 -0
  222. package/.cursor/commands/opsx-verify.md +164 -0
  223. package/.cursor/mcp.json +22 -0
  224. package/.cursor/skills/add-skill/SKILL.md +352 -0
  225. package/.cursor/skills/api-development/SKILL.md +560 -0
  226. package/.cursor/skills/architecture-design/SKILL.md +756 -0
  227. package/.cursor/skills/backend-annotations/SKILL.md +674 -0
  228. package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
  229. package/.cursor/skills/banana-image/README.md +146 -0
  230. package/.cursor/skills/banana-image/SKILL.md +164 -0
  231. package/.cursor/skills/banana-image/assets/logo.png +0 -0
  232. package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
  233. package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
  234. package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  235. package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
  236. package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
  237. package/.cursor/skills/banana-image/scripts/package.json +18 -0
  238. package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
  239. package/.cursor/skills/banana-image/templates/poster.json +22 -0
  240. package/.cursor/skills/banana-image/templates/product.json +17 -0
  241. package/.cursor/skills/banana-image/templates/social.json +22 -0
  242. package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
  243. package/.cursor/skills/brainstorm/SKILL.md +648 -0
  244. package/.cursor/skills/bug-detective/SKILL.md +1206 -0
  245. package/.cursor/skills/code-patterns/SKILL.md +590 -0
  246. package/.cursor/skills/collaborating-with-codex/SKILL.md +174 -0
  247. package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  248. package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
  249. package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  250. package/.cursor/skills/crud-development/SKILL.md +649 -0
  251. package/.cursor/skills/data-permission/SKILL.md +599 -0
  252. package/.cursor/skills/database-ops/SKILL.md +407 -0
  253. package/.cursor/skills/error-handler/SKILL.md +371 -0
  254. package/.cursor/skills/file-oss-management/SKILL.md +863 -0
  255. package/.cursor/skills/git-workflow/SKILL.md +375 -0
  256. package/.cursor/skills/json-serialization/SKILL.md +357 -0
  257. package/.cursor/skills/leniu-api-development/SKILL.md +803 -0
  258. package/.cursor/skills/leniu-architecture-design/SKILL.md +598 -0
  259. package/.cursor/skills/leniu-backend-annotations/SKILL.md +664 -0
  260. package/.cursor/skills/leniu-code-patterns/SKILL.md +365 -0
  261. package/.cursor/skills/leniu-crud-development/SKILL.md +1110 -0
  262. package/.cursor/skills/leniu-data-permission/SKILL.md +256 -0
  263. package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
  264. package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
  265. package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
  266. package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
  267. package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
  268. package/.cursor/skills/leniu-java-entity/SKILL.md +751 -0
  269. package/.cursor/skills/leniu-java-export/SKILL.md +560 -0
  270. package/.cursor/skills/leniu-java-logging/SKILL.md +832 -0
  271. package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
  272. package/.cursor/skills/leniu-java-mybatis/SKILL.md +640 -0
  273. package/.cursor/skills/leniu-java-report-query-param/SKILL.md +291 -0
  274. package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
  275. package/.cursor/skills/leniu-java-total-line/SKILL.md +195 -0
  276. package/.cursor/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  277. package/.cursor/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  278. package/.cursor/skills/leniu-mealtime/SKILL.md +215 -0
  279. package/.cursor/skills/leniu-redis-cache/SKILL.md +316 -0
  280. package/.cursor/skills/leniu-security-guard/SKILL.md +520 -0
  281. package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
  282. package/.cursor/skills/openspec-apply-change/SKILL.md +156 -0
  283. package/.cursor/skills/openspec-archive-change/SKILL.md +114 -0
  284. package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +246 -0
  285. package/.cursor/skills/openspec-continue-change/SKILL.md +118 -0
  286. package/.cursor/skills/openspec-explore/SKILL.md +290 -0
  287. package/.cursor/skills/openspec-ff-change/SKILL.md +101 -0
  288. package/.cursor/skills/openspec-new-change/SKILL.md +74 -0
  289. package/.cursor/skills/openspec-onboard/SKILL.md +529 -0
  290. package/.cursor/skills/openspec-sync-specs/SKILL.md +138 -0
  291. package/.cursor/skills/openspec-verify-change/SKILL.md +168 -0
  292. package/.cursor/skills/performance-doctor/SKILL.md +627 -0
  293. package/.cursor/skills/project-navigator/SKILL.md +305 -0
  294. package/.cursor/skills/redis-cache/SKILL.md +839 -0
  295. package/.cursor/skills/scheduled-jobs/SKILL.md +633 -0
  296. package/.cursor/skills/security-guard/SKILL.md +748 -0
  297. package/.cursor/skills/sms-mail/SKILL.md +766 -0
  298. package/.cursor/skills/social-login/SKILL.md +668 -0
  299. package/.cursor/skills/store-pc/SKILL.md +366 -0
  300. package/.cursor/skills/task-tracker/SKILL.md +307 -0
  301. package/.cursor/skills/tech-decision/SKILL.md +393 -0
  302. package/.cursor/skills/tenant-management/SKILL.md +603 -0
  303. package/.cursor/skills/test-development/SKILL.md +755 -0
  304. package/.cursor/skills/ui-pc/SKILL.md +438 -0
  305. package/.cursor/skills/utils-toolkit/SKILL.md +615 -0
  306. package/.cursor/skills/websocket-sse/SKILL.md +716 -0
  307. package/.cursor/skills/workflow-engine/SKILL.md +676 -0
  308. package/AGENTS.md +669 -0
  309. package/CLAUDE.md +205 -0
  310. package/README.md +205 -0
  311. package/bin/index.js +179 -0
  312. package/init.sh +178 -0
  313. package/package.json +27 -0
@@ -0,0 +1,285 @@
1
+ ---
2
+ name: leniu-marketing-recharge-rule-customizer
3
+ description: |
4
+ leniu-tengyun-core 项目营销充值(recharge)规则定制指南。当需要定制营销充值规则时使用,支持新增充值规则类型、重写规则逻辑、扩展 DTO 字段。
5
+
6
+ 触发场景:
7
+ - 新增营销充值规则类型(满赠、按次赠送、限额、管理费等)
8
+ - 重写现有充值规则逻辑(@Primary 模式)
9
+ - 扩展充值规则 DTO 字段(向后兼容)
10
+ - 定制充值规则计算行为(handle 方法实现)
11
+ - 注册充值规则枚举(RuleRechargeEnum)
12
+
13
+ 适用项目:
14
+ - leniu-tengyun-core:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun-core
15
+ - leniu-yunshitang:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun/leniu-yunshitang
16
+
17
+ 触发词:营销充值、recharge规则、充值规则、RuleRechargeHandler、RuleRechargeEnum、满赠规则、充值赠送、充值限额、管理费规则、充值规则定制、leniu营销、leniu-yunshitang、net.xnzn
18
+ ---
19
+
20
+ # leniu-tengyun-core 营销充值规则定制
21
+
22
+ ## 概述
23
+
24
+ leniu-tengyun-core 项目的营销充值(recharge)规则功能采用扩展点设计,支持灵活的规则定制。
25
+
26
+ 营销充值规则是营销系统的核心组件,负责计算充值的优惠金额、限制充值行为、收取管理费等功能。
27
+
28
+ ## 何时使用此 Skill
29
+
30
+ - 需要新增一个充值规则类型
31
+ - 需要修改现有规则的计算逻辑
32
+ - 需要为规则添加新的配置字段
33
+ - 需要针对特定项目定制规则行为
34
+ - 参考现有规则实现新的定制需求
35
+
36
+ ## 规则定制工作流
37
+
38
+ ### 步骤1:确定定制模式
39
+
40
+ 根据需求选择合适的定制模式:
41
+
42
+ **模式A:新增规则**
43
+ - 适用场景:创建全新的规则类型
44
+ - 需要创建:DTO、扩展接口、默认实现
45
+
46
+ **模式B:重写规则(@Primary)**
47
+ - 适用场景:完全替换现有规则行为
48
+ - 需要创建:定制实现类(使用@Primary注解)
49
+ - 可选:扩展DTO字段
50
+
51
+ **模式C:重写规则(Ordered)**
52
+ - 适用场景:多个实现共存
53
+ - 需要创建:定制实现类(实现Ordered接口)
54
+
55
+ ### 步骤2:理解规则结构
56
+
57
+ 了解:
58
+ - 规则接口层次(RuleRechargeHandler → Extension → Implementation)
59
+ - 规则DTO结构
60
+ - 规则计算入参(RuleRechargeResultDTO、MarketRuleVO)
61
+ - 规则计算流程
62
+ - 常用工具类
63
+
64
+ ### 步骤3:参考实际案例
65
+
66
+ 查看实际案例,了解如何实现具体的定制需求。
67
+
68
+ ### 步骤4:实现规则定制
69
+
70
+ #### 新增规则的实现步骤
71
+
72
+ 1. **创建规则DTO**
73
+ - 位置:`net.xnzn.core.marketing.v2.rule.recharge.handler.[ruletype].dto`
74
+ - 包含规则配置字段
75
+ - 实现 `toString()` 方法返回可读描述
76
+
77
+ 2. **创建扩展接口**
78
+ - 位置:`net.xnzn.core.marketing.v2.rule.recharge.handler.[ruletype].extension`
79
+ - 继承 `RuleRechargeHandler`
80
+ - 实现 `getRuleType()` 和 `checkRuleInfo()` 方法
81
+
82
+ 3. **创建默认实现**
83
+ - 位置:`net.xnzn.core.marketing.v2.rule.recharge.handler.[ruletype].extension.impl`
84
+ - 实现扩展接口
85
+ - 添加 `@Service` 注解
86
+ - 实现 `handle()` 方法
87
+
88
+ 4. **注册规则枚举**
89
+ - 在 `RuleRechargeEnum` 中添加新的规则类型
90
+
91
+ #### 重写规则的实现步骤(@Primary模式)
92
+
93
+ 1. **(可选)扩展DTO字段**
94
+ - 在定制项目中覆盖核心DTO类
95
+ - 添加新字段并保持向后兼容
96
+
97
+ 2. **创建定制实现**
98
+ - 位置:定制项目包(如 `net.xnzn.yunshitang.marketing.handler`)
99
+ - 继承默认实现类(可选,用于复用逻辑)
100
+ - 实现扩展接口
101
+ - 添加 `@Service` 和 `@Primary` 注解
102
+ - 重写 `handle()` 方法
103
+
104
+ 3. **实现定制逻辑**
105
+ - 解析规则配置(包含新字段)
106
+ - 实现自定义计算逻辑
107
+ - 更新充值金额或抛出限制异常
108
+
109
+ ### 步骤5:测试规则
110
+
111
+ 1. 测试向后兼容性(新字段为null的场景)
112
+ 2. 测试新功能(新字段有值的场景)
113
+ 3. 测试边界条件
114
+ 4. 测试与其他规则的组合使用
115
+
116
+ ## 代码模板
117
+
118
+ ### 新增规则模板
119
+
120
+ ```java
121
+ // 1. DTO
122
+ @Data
123
+ @ApiModel("充值规则详情-[规则名称]")
124
+ public class [RuleType]DTO {
125
+ @ApiModelProperty("[字段说明]")
126
+ private [Type] fieldName;
127
+
128
+ @Override
129
+ public String toString() {
130
+ return "字段:" + fieldName;
131
+ }
132
+ }
133
+
134
+ // 2. 扩展接口
135
+ public interface [RuleType]HandlerExtension extends RuleRechargeHandler {
136
+ @Override
137
+ default Integer getRuleType() {
138
+ return RuleRechargeEnum.[RULE_TYPE_ENUM].getKey();
139
+ }
140
+
141
+ @Override
142
+ default void checkRuleInfo(String ruleInfo) {
143
+ [RuleType]DTO rule = JSON.parseObject(ruleInfo, [RuleType]DTO.class);
144
+ // 添加必要的校验逻辑
145
+ }
146
+ }
147
+
148
+ // 3. 默认实现
149
+ @Slf4j
150
+ @Service
151
+ public class Default[RuleType]HandlerImpl implements [RuleType]HandlerExtension {
152
+
153
+ @Override
154
+ public void handle(RuleRechargeResultDTO resultDTO, MarketRuleVO rule) {
155
+ // 1. 解析规则配置
156
+ [RuleType]DTO ruleInfo = JSON.parseObject(rule.getRuleInfo(), [RuleType]DTO.class);
157
+
158
+ // 2. 实现规则计算逻辑
159
+ // ...
160
+
161
+ // 3. 更新充值金额或抛出异常
162
+ resultDTO.setActualAmount(resultDTO.getActualAmount().add(giftAmount));
163
+ }
164
+ }
165
+ ```
166
+
167
+ ### 重写规则模板(@Primary)
168
+
169
+ ```java
170
+ @Slf4j
171
+ @Service
172
+ @Primary // 标记为主要实现
173
+ public class Custom[RuleType]HandlerImpl extends Default[RuleType]HandlerImpl
174
+ implements [RuleType]HandlerExtension {
175
+
176
+ @Override
177
+ public void handle(RuleRechargeResultDTO resultDTO, MarketRuleVO rule) {
178
+ // 解析规则配置(可能包含扩展字段)
179
+ [RuleType]DTO ruleInfo = JSON.parseObject(rule.getRuleInfo(), [RuleType]DTO.class);
180
+
181
+ // 实现定制逻辑
182
+ // 可以调用父类方法:super.handle(resultDTO, rule);
183
+ // 或完全自定义实现
184
+ }
185
+ }
186
+ ```
187
+
188
+ ## 常见规则类型
189
+
190
+ ### 优惠类规则
191
+ - 满赠规则:`RechargeFullGiftHandlerExtension`
192
+ - 按次数赠送:`RechargeTimesGiftHandlerExtension`
193
+
194
+ ### 限制类规则
195
+ - 限额-单次金额:`RechargeMaxAmountHandlerExtension`
196
+ - 限额-累计金额:`RechargeSumAmountHandlerExtension`
197
+
198
+ ### 其他费用规则
199
+ - 管理费:`RechargeCostHandlerExtension`
200
+
201
+ ## 最佳实践
202
+
203
+ ### 包名规范
204
+ - 覆盖核心类:使用核心工程的包名(`net.xnzn.core.marketing.v2.rule.recharge.handler.[ruletype]`)
205
+ - 定制实现:使用项目特定包名(如 `net.xnzn.yunshitang.marketing.handler`)
206
+
207
+ ### 类名规范
208
+ - 扩展接口:`[RuleType]HandlerExtension`
209
+ - 默认实现:`Default[RuleType]HandlerImpl`
210
+ - 定制实现:`Custom[RuleType]HandlerImpl` 或描述性名称
211
+
212
+ ### 注解使用
213
+ - 所有实现类必须添加 `@Service` 注解
214
+ - 重写规则使用 `@Primary` 注解(推荐)
215
+ - 日志记录使用 `@Slf4j` 注解
216
+
217
+ ### 向后兼容
218
+ - 扩展DTO字段时,新字段应支持null值
219
+ - 新字段为null时应保持原有行为
220
+ - 在toString方法中包含所有字段
221
+
222
+ ## 快速开始示例
223
+
224
+ 假设需要为满赠规则(`RechargeFullGiftHandlerExtension`)添加钱包类型选择功能:
225
+
226
+ 1. **扩展DTO**:在 `RechargeGiftFullDTO` 中添加 `walletTypes` 字段
227
+ 2. **创建定制实现**:创建 `CustomRechargeFullGiftHandlerImpl`,位于 `net.xnzn.yunshitang.marketing.handler`,使用 `@Primary` 注解
228
+ 3. **实现逻辑**:在 `handle()` 方法中使用 `walletTypes` 字段过滤钱包充值
229
+ 4. **向后兼容**:`walletTypes` 为null时适用所有钱包
230
+
231
+ ```java
232
+ // 1. 扩展DTO(在核心工程包名下覆盖)
233
+ // 位置:net.xnzn.core.marketing.v2.rule.recharge.handler.fullgift.dto.RechargeGiftFullDTO
234
+ @Data
235
+ @ApiModel("充值满赠规则详情")
236
+ public class RechargeGiftFullDTO {
237
+ @ApiModelProperty("满足金额门槛(分)")
238
+ private BigDecimal fullAmount;
239
+
240
+ @ApiModelProperty("赠送金额(分)")
241
+ private BigDecimal giftAmount;
242
+
243
+ // 扩展字段:适用钱包类型,null时表示所有钱包
244
+ @ApiModelProperty("适用钱包类型列表(null=所有钱包)")
245
+ private List<Integer> walletTypes;
246
+
247
+ @Override
248
+ public String toString() {
249
+ return "fullAmount=" + fullAmount + ", giftAmount=" + giftAmount
250
+ + ", walletTypes=" + walletTypes;
251
+ }
252
+ }
253
+
254
+ // 2. 定制实现(在yunshitang项目包下)
255
+ // 位置:net.xnzn.yunshitang.marketing.handler
256
+ @Slf4j
257
+ @Service
258
+ @Primary
259
+ public class CustomRechargeFullGiftHandlerImpl
260
+ implements RechargeFullGiftHandlerExtension {
261
+
262
+ @Override
263
+ public void handle(RuleRechargeResultDTO resultDTO, MarketRuleVO rule) {
264
+ RechargeGiftFullDTO ruleInfo = JSON.parseObject(
265
+ rule.getRuleInfo(), RechargeGiftFullDTO.class);
266
+
267
+ // 钱包类型过滤(向后兼容:null时不过滤)
268
+ if (CollUtil.isNotEmpty(ruleInfo.getWalletTypes())
269
+ && !ruleInfo.getWalletTypes().contains(resultDTO.getWalletType())) {
270
+ return; // 不在适用钱包范围内,跳过
271
+ }
272
+
273
+ // 满赠逻辑
274
+ if (resultDTO.getRechargeAmount().compareTo(ruleInfo.getFullAmount()) >= 0) {
275
+ resultDTO.setActualAmount(
276
+ resultDTO.getActualAmount().add(ruleInfo.getGiftAmount()));
277
+ log.info("满赠规则生效,赠送金额:{}", ruleInfo.getGiftAmount());
278
+ }
279
+ }
280
+ }
281
+ ```
282
+
283
+ ## 参考文档
284
+
285
+ 详见:[leniu-tengyun-core 源码](/Users/xujiajun/Developer/gongsi_proj/core/leniu-tengyun-core)
@@ -0,0 +1,215 @@
1
+ ---
2
+ name: leniu-mealtime
3
+ description: |
4
+ leniu-tengyun-core 项目餐次处理规范。当编写涉及餐次(早餐/午餐/下午茶/晚餐/夜宵)的报表或查询代码时使用。
5
+
6
+ 触发场景:
7
+ - 在 Param 查询参数类中添加餐次筛选字段(mealtimeTypes)
8
+ - 在 VO 返回类中定义餐次字段和 MealtimeTypeConverter 转换器
9
+ - 编写 MyBatis XML 中的餐次 IN 查询条件
10
+ - 处理餐次枚举转换(AllocMealtimeTypeEnum)
11
+ - 区分正餐(早/午/晚)与非正餐(下午茶/夜宵)
12
+
13
+ 适用项目:
14
+ - leniu-tengyun-core:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun-core
15
+ - leniu-yunshitang:/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun/leniu-yunshitang
16
+
17
+ 触发词:餐次、mealtime、mealtimeType、早餐、午餐、晚餐、下午茶、夜宵、AllocMealtimeTypeEnum、MealtimeTypeConverter、正餐、leniu餐次、leniu-yunshitang、net.xnzn
18
+ ---
19
+
20
+ # leniu-tengyun-core 餐次处理规范
21
+
22
+ ## 餐次枚举定义
23
+
24
+ ### AllocMealtimeTypeEnum
25
+
26
+ 餐次类型枚举 `AllocMealtimeTypeEnum` 定义了5种餐次:
27
+
28
+ | 枚举值 | key | 显示名称 | 说明 |
29
+ |--------|-----|----------|------|
30
+ | MEALTIME_BREAKFAST | 1 | 早餐 | 早餐 |
31
+ | MEALTIME_LUNCH | 2 | 午餐 | 午餐 |
32
+ | MEALTIME_AFTERNOON_TEA | 3 | 下午茶 | 下午茶 |
33
+ | MEALTIME_DINNER | 4 | 晚餐 | 晚餐 |
34
+ | MEALTIME_MIDNIGHT_SNACK | 5 | 夜宵 | 夜宵 |
35
+
36
+ ### 常用方法
37
+
38
+ ```java
39
+ // 根据key获取枚举
40
+ AllocMealtimeTypeEnum typeEnum = AllocMealtimeTypeEnum.getTypeEnum(1);
41
+
42
+ // 根据key获取显示名称
43
+ String desc = AllocMealtimeTypeEnum.getValueByKey(1); // 返回 "早餐"
44
+
45
+ // 获取所有餐次key列表
46
+ List<Integer> allTypes = AllocMealtimeTypeEnum.allTypeList(); // [1, 2, 3, 4, 5]
47
+
48
+ // 获取正餐类型列表
49
+ List<Integer> normalTypes = AllocMealtimeTypeEnum.normalTypeList(); // [1, 2, 4]
50
+ ```
51
+
52
+ ### 餐次分类
53
+
54
+ - **正餐**:早餐(1)、午餐(2)、晚餐(4)
55
+ - **非正餐**:下午茶(3)、夜宵(5)
56
+
57
+ ## 查询参数中的餐次处理
58
+
59
+ ### Param类定义
60
+
61
+ 在报表查询Param类中添加餐次筛选字段:
62
+
63
+ ```java
64
+ @ApiModelProperty(value = "餐次集合")
65
+ private List<Integer> mealtimeTypes;
66
+ ```
67
+
68
+ ### 完整示例
69
+
70
+ ```java
71
+ @Data
72
+ @AllArgsConstructor
73
+ @NoArgsConstructor
74
+ @EqualsAndHashCode(callSuper = true)
75
+ @ApiModel(value = "XXX查询入参")
76
+ public class XxxParam extends ReportBaseParam {
77
+
78
+ @ApiModelProperty(value = "餐次集合")
79
+ private List<Integer> mealtimeTypes;
80
+
81
+ // 其他查询字段...
82
+ }
83
+ ```
84
+
85
+ ## 返回VO中的餐次处理
86
+
87
+ ### VO字段定义
88
+
89
+ 在报表返回VO类中定义餐次字段:
90
+
91
+ ```java
92
+ @Data
93
+ @Accessors(chain = true)
94
+ @ApiModel(value = "XXX报表")
95
+ public class XxxVO {
96
+
97
+ @ExcelProperty(value = "餐次", order = 5, converter = MealtimeTypeConverter.class)
98
+ @ApiModelProperty(value = "餐次")
99
+ private Integer mealtimeType;
100
+
101
+ // 其他字段...
102
+ }
103
+ ```
104
+
105
+ ### 必要的导入
106
+
107
+ ```java
108
+ import com.alibaba.excel.annotation.ExcelProperty;
109
+ import net.xnzn.core.common.export.converter.MealtimeTypeConverter;
110
+ ```
111
+
112
+ ### 字段说明
113
+
114
+ - `mealtimeType`: 存储餐次的整数key值(1-5)
115
+ - `@ExcelProperty`: 配置EasyExcel导出,使用`MealtimeTypeConverter`进行转换
116
+ - `converter = MealtimeTypeConverter.class`: 自动将整数转换为可读的餐次名称
117
+
118
+ ## MyBatis XML中的餐次查询
119
+
120
+ ### 基本IN查询
121
+
122
+ ```xml
123
+ <!-- 餐次筛选 -->
124
+ <if test="mealtimeTypes != null and mealtimeTypes.size() > 0">
125
+ AND mealtime_type IN
126
+ <foreach collection="mealtimeTypes" item="type" open="(" separator="," close=")">
127
+ #{type}
128
+ </foreach>
129
+ </if>
130
+ ```
131
+
132
+ ### 正餐筛选
133
+
134
+ ```xml
135
+ <!-- 仅查询正餐(早餐、午餐、晚餐) -->
136
+ AND mealtime_type IN (1, 2, 4)
137
+ ```
138
+
139
+ ### 完整示例
140
+
141
+ ```xml
142
+ <select id="pageXxx" resultType="net.xnzn.core.xxx.vo.XxxVO">
143
+ SELECT
144
+ id,
145
+ order_date,
146
+ mealtime_type,
147
+ cust_name,
148
+ real_amount
149
+ FROM order_table
150
+ WHERE del_flag = 2
151
+ <if test="startDate != null">
152
+ AND order_date >= #{startDate}
153
+ </if>
154
+ <if test="endDate != null">
155
+ AND order_date &lt;= #{endDate}
156
+ </if>
157
+ <if test="mealtimeTypes != null and mealtimeTypes.size() > 0">
158
+ AND mealtime_type IN
159
+ <foreach collection="mealtimeTypes" item="type" open="(" separator="," close=")">
160
+ #{type}
161
+ </foreach>
162
+ </if>
163
+ <if test="canteenId != null">
164
+ AND canteen_id = #{canteenId}
165
+ </if>
166
+ ORDER BY order_date DESC
167
+ </select>
168
+ ```
169
+
170
+ ## 常见使用场景
171
+
172
+ ### 场景1:查询指定餐次的订单
173
+
174
+ ```java
175
+ // Param定义
176
+ @ApiModelProperty(value = "餐次集合")
177
+ private List<Integer> mealtimeTypes;
178
+
179
+ // Service调用
180
+ List<Integer> mealtimeTypes = Arrays.asList(1, 2); // 查询早餐和午餐
181
+ param.setMealtimeTypes(mealtimeTypes);
182
+ ```
183
+
184
+ ### 场景2:仅查询正餐
185
+
186
+ ```java
187
+ // 方式1:直接在XML中硬编码
188
+ AND mealtime_type IN (1, 2, 4)
189
+
190
+ // 方式2:使用枚举工具类
191
+ param.setMealtimeTypes(AllocMealtimeTypeEnum.normalTypeList());
192
+ ```
193
+
194
+ ### 场景3:导出时餐次列显示中文名称
195
+
196
+ ```java
197
+ // VO定义
198
+ @ExcelProperty(value = "餐次", order = 5, converter = MealtimeTypeConverter.class)
199
+ @ApiModelProperty(value = "餐次")
200
+ private Integer mealtimeType;
201
+
202
+ // 导出时自动转换:1 -> "早餐",2 -> "午餐" 等
203
+ ```
204
+
205
+ ## 注意事项
206
+
207
+ 1. **字段命名**:统一使用 `mealtimeType` (驼峰) 或 `mealtime_type` (下划线)
208
+ 2. **类型**:数据库和Java代码中均使用 `Integer` 类型
209
+ 3. **转换器**:导出时必须使用 `MealtimeTypeConverter` 进行转换
210
+ 4. **国际化的影响**:显示名称根据项目配置可能使用中文或国际化key
211
+ 5. **正餐判断**:需要区分正餐时使用 `AllocMealtimeTypeEnum.normalTypeList()` 方法
212
+
213
+ ## 参考文档
214
+
215
+ 详见:[leniu-tengyun-core 源码](/Users/xujiajun/Developer/gongsi_proj/core/leniu-tengyun-core)