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,393 @@
1
+ # RuoYi-Vue-Plus 框架说明
2
+
3
+ > 本文档说明框架已完成的模块和业务开发区域。
4
+ > **注意**:本项目是纯后端项目,前端项目独立维护。
5
+
6
+ 最后更新: 2026-02-09
7
+
8
+ ---
9
+
10
+ ## 📦 框架已完成模块(无需开发)
11
+
12
+ ### 后端框架模块
13
+
14
+ #### 1. ruoyi-common(通用工具库 - 24个子模块)
15
+
16
+ | 模块 | 功能说明 |
17
+ |------|---------|
18
+ | ruoyi-common-bom | BOM 依赖版本管理 |
19
+ | ruoyi-common-core | 核心工具类、常量、异常处理、MapstructUtils |
20
+ | ruoyi-common-mybatis | MyBatis-Plus 增强、BaseMapperPlus、分页、数据权限 |
21
+ | ruoyi-common-redis | Redis 缓存封装、RedisUtils、分布式锁 |
22
+ | ruoyi-common-satoken | Sa-Token 认证授权、LoginHelper |
23
+ | ruoyi-common-security | 安全组件 |
24
+ | ruoyi-common-tenant | 多租户支持、TenantEntity、TenantHelper |
25
+ | ruoyi-common-web | Web 配置、全局异常处理、BaseController |
26
+ | ruoyi-common-json | JSON 序列化配置 |
27
+ | ruoyi-common-excel | Excel 导入导出(FastExcel) |
28
+ | ruoyi-common-doc | SpringDoc/OpenAPI 接口文档 |
29
+ | ruoyi-common-oss | 对象存储(S3 协议、MinIO、阿里云等) |
30
+ | ruoyi-common-sms | 短信服务(SMS4j) |
31
+ | ruoyi-common-mail | 邮件服务 |
32
+ | ruoyi-common-social | 社交登录(JustAuth) |
33
+ | ruoyi-common-websocket | WebSocket 支持 |
34
+ | ruoyi-common-sse | SSE 服务端推送 |
35
+ | ruoyi-common-job | 定时任务(SnailJob) |
36
+ | ruoyi-common-idempotent | 幂等性控制 |
37
+ | ruoyi-common-ratelimiter | 限流控制 |
38
+ | ruoyi-common-encrypt | 数据加密注解 |
39
+ | ruoyi-common-sensitive | 敏感字段脱敏 |
40
+ | ruoyi-common-log | 操作日志 |
41
+ | ruoyi-common-translation | 翻译/国际化 |
42
+
43
+ #### 2. ruoyi-modules/ruoyi-system(系统管理)
44
+
45
+ **监控模块 (monitor)**:
46
+
47
+ | Controller | 功能说明 |
48
+ |-----------|---------|
49
+ | CacheController | 缓存监控、Redis Key 管理 |
50
+ | SysLogininforController | 登录日志、IP归属地 |
51
+ | SysOperlogController | 操作日志记录 |
52
+ | SysUserOnlineController | 在线用户监控、强制下线 |
53
+
54
+ **系统模块 (system)**:
55
+
56
+ | Controller | 功能说明 |
57
+ |-----------|---------|
58
+ | SysUserController | 用户管理、分配角色、重置密码 |
59
+ | SysRoleController | 角色管理、权限分配、数据权限 |
60
+ | SysMenuController | 菜单管理、按钮权限、路由配置 |
61
+ | SysDeptController | 部门管理、树形结构 |
62
+ | SysPostController | 岗位管理 |
63
+ | SysDictTypeController | 字典类型管理 |
64
+ | SysDictDataController | 字典数据管理 |
65
+ | SysConfigController | 系统参数配置 |
66
+ | SysNoticeController | 通知公告 |
67
+ | SysProfileController | 个人中心 |
68
+ | SysTenantController | 租户管理 |
69
+ | SysTenantPackageController | 租户套餐、菜单权限 |
70
+ | SysClientController | OAuth2 客户端管理 |
71
+ | SysOssController | OSS 文件管理 |
72
+ | SysOssConfigController | OSS 配置管理 |
73
+ | SysSocialController | 社会化登录管理 |
74
+
75
+ #### 3. ruoyi-modules/ruoyi-generator(代码生成器)
76
+
77
+ - 数据库表导入
78
+ - 代码生成配置
79
+ - 一键生成 CRUD 代码(Entity、BO、VO、Controller、Service、Mapper)
80
+ - 生成菜单 SQL
81
+ - 支持单表、树表、主子表
82
+
83
+ #### 4. ruoyi-modules/ruoyi-demo(演示模块)
84
+
85
+ - 功能演示示例
86
+ - 代码参考模板
87
+ - 表前缀:`test_`
88
+
89
+ #### 5. ruoyi-modules/ruoyi-job(定时任务模块)
90
+
91
+ - SnailJob 任务调度
92
+ - 分布式任务管理
93
+ - 失败重试、工作流编排
94
+
95
+ #### 6. ruoyi-modules/ruoyi-workflow(工作流模块)
96
+
97
+ - WarmFlow 工作流引擎
98
+ - 流程定义与管理
99
+ - 审批流程、任务办理
100
+ - 表前缀:`flow_`
101
+
102
+ #### 7. ruoyi-admin(启动入口)
103
+
104
+ - Spring Boot 启动类
105
+ - 配置文件管理(application.yml、application-dev.yml)
106
+ - 不包含业务逻辑
107
+
108
+ ---
109
+
110
+ ## 🏗️ 核心架构规范
111
+
112
+ ### 三层架构(无 DAO 层)
113
+
114
+ ```
115
+ Controller → Service → Mapper
116
+ ↓ ↓ ↓
117
+ 接收请求 业务逻辑 数据访问
118
+ 参数校验 查询构建 MyBatis-Plus
119
+ ```
120
+
121
+ **关键点**:
122
+ - Service 实现类**不继承任何基类**,直接注入 Mapper
123
+ - `buildQueryWrapper()` 方法在 **Service 实现类**中
124
+ - Mapper 接口继承 `BaseMapperPlus<Entity, Vo>`
125
+
126
+ ### 包名规范
127
+
128
+ **必须使用 `org.dromara.*`**,禁止使用 `com.ruoyi.*`
129
+
130
+ ```java
131
+ // ✅ 正确
132
+ package org.dromara.system.controller.system;
133
+ package org.dromara.demo.service.impl;
134
+
135
+ // ❌ 错误
136
+ package com.ruoyi.system.controller; // 禁止!
137
+ ```
138
+
139
+ ### 模块与表前缀对应
140
+
141
+ | 模块 | 目录路径 | 包路径 | 表前缀 |
142
+ |------|---------|--------|--------|
143
+ | **系统管理** | `ruoyi-modules/ruoyi-system/` | `org.dromara.system` | `sys_` |
144
+ | **演示模块** | `ruoyi-modules/ruoyi-demo/` | `org.dromara.demo` | `test_` |
145
+ | **工作流** | `ruoyi-modules/ruoyi-workflow/` | `org.dromara.workflow` | `flow_` |
146
+ | **定时任务** | `ruoyi-modules/ruoyi-job/` | `org.dromara.job` | `sj_` |
147
+ | **自定义业务** | `ruoyi-modules/ruoyi-xxx/` | `org.dromara.xxx` | `xxx_` |
148
+
149
+ ---
150
+
151
+ ## 🎯 业务开发区域(需要开发的地方)
152
+
153
+ ### 后端业务模块位置
154
+
155
+ ```
156
+ ruoyi-modules/
157
+ ├── ruoyi-system/ ❌ 框架模块(不要修改)
158
+ ├── ruoyi-generator/ ❌ 框架模块(不要修改)
159
+ ├── ruoyi-demo/ ⚠️ 演示模块(可参考,不建议直接修改)
160
+ ├── ruoyi-job/ ❌ 框架模块(不要修改)
161
+ ├── ruoyi-workflow/ ❌ 框架模块(不要修改)
162
+ └── ruoyi-{你的业务}/ ✅ 创建你的业务模块
163
+ ```
164
+
165
+ ### 创建业务模块的标准结构
166
+
167
+ ```
168
+ ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/
169
+ ├── controller/
170
+ │ └── XxxController.java # @RestController, extends BaseController
171
+ ├── service/
172
+ │ ├── IXxxService.java # 服务接口
173
+ │ └── impl/
174
+ │ └── XxxServiceImpl.java # 服务实现(包含 buildQueryWrapper)
175
+ ├── mapper/
176
+ │ └── XxxMapper.java # extends BaseMapperPlus<Xxx, XxxVo>
177
+ └── domain/
178
+ ├── Xxx.java # Entity(extends TenantEntity)
179
+ ├── bo/
180
+ │ └── XxxBo.java # 业务对象(@AutoMapper)
181
+ └── vo/
182
+ └── XxxVo.java # 视图对象
183
+ ```
184
+
185
+ ### 标准代码示例
186
+
187
+ **Entity 示例**:
188
+
189
+ ```java
190
+ @Data
191
+ @TableName("m_order")
192
+ public class Order extends TenantEntity {
193
+ @TableId(value = "id")
194
+ private Long id;
195
+ private String orderNo;
196
+ private Integer status;
197
+ // 其他业务字段...
198
+ }
199
+ ```
200
+
201
+ **BO 示例**:
202
+
203
+ ```java
204
+ @Data
205
+ @AutoMapper(target = Order.class, reverseConvertGenerate = false)
206
+ public class OrderBo extends BaseEntity {
207
+ private Long id;
208
+ private String orderNo;
209
+ private Integer status;
210
+ }
211
+ ```
212
+
213
+ **Service 实现示例**:
214
+
215
+ ```java
216
+ @Service
217
+ public class OrderServiceImpl implements IOrderService {
218
+
219
+ private final OrderMapper baseMapper; // 直接注入 Mapper
220
+
221
+ /**
222
+ * 构建查询条件(在 Service 层)
223
+ */
224
+ private LambdaQueryWrapper<Order> buildQueryWrapper(OrderBo bo) {
225
+ LambdaQueryWrapper<Order> lqw = Wrappers.lambdaQuery();
226
+ lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), Order::getOrderNo, bo.getOrderNo());
227
+ lqw.eq(bo.getStatus() != null, Order::getStatus, bo.getStatus());
228
+ return lqw;
229
+ }
230
+
231
+ @Override
232
+ public TableDataInfo<OrderVo> queryPageList(OrderBo bo, PageQuery pageQuery) {
233
+ LambdaQueryWrapper<Order> lqw = buildQueryWrapper(bo);
234
+ Page<OrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
235
+ return TableDataInfo.build(result);
236
+ }
237
+ }
238
+ ```
239
+
240
+ **Controller 示例**:
241
+
242
+ ```java
243
+ @RestController
244
+ @RequestMapping("/mall/order")
245
+ public class OrderController extends BaseController {
246
+
247
+ private final IOrderService orderService;
248
+
249
+ @GetMapping("/list")
250
+ public TableDataInfo<OrderVo> list(OrderBo bo, PageQuery pageQuery) {
251
+ return orderService.queryPageList(bo, pageQuery);
252
+ }
253
+
254
+ @GetMapping("/{id}")
255
+ public R<OrderVo> getInfo(@PathVariable Long id) {
256
+ return R.ok(orderService.queryById(id));
257
+ }
258
+
259
+ @PostMapping
260
+ public R<Void> add(@RequestBody OrderBo bo) {
261
+ return toAjax(orderService.insertByBo(bo));
262
+ }
263
+
264
+ @PutMapping
265
+ public R<Void> edit(@RequestBody OrderBo bo) {
266
+ return toAjax(orderService.updateByBo(bo));
267
+ }
268
+
269
+ @DeleteMapping("/{ids}")
270
+ public R<Void> remove(@PathVariable Long[] ids) {
271
+ return toAjax(orderService.deleteByIds(Arrays.asList(ids)));
272
+ }
273
+ }
274
+ ```
275
+
276
+ ---
277
+
278
+ ## 📏 进度统计规则
279
+
280
+ ### 核心原则:使用排除法(黑名单)
281
+
282
+ **为什么用排除法?**
283
+ - ✅ **灵活**:用户可以创建任意名称的业务目录
284
+ - ✅ **准确**:不会遗漏用户的自定义业务模块
285
+ - ✅ **简单**:只需维护一个小的框架模块排除列表
286
+
287
+ ### 只统计业务模块
288
+
289
+ **后端**:
290
+ - ✅ 统计:`ruoyi-modules/ruoyi-*`(排除 ruoyi-system、ruoyi-generator、ruoyi-demo、ruoyi-job、ruoyi-workflow)
291
+ - ❌ 不统计:ruoyi-common、ruoyi-admin、ruoyi-system、ruoyi-generator、ruoyi-demo、ruoyi-job、ruoyi-workflow
292
+
293
+ ---
294
+
295
+ ## 🚀 快速开始
296
+
297
+ ### 1. 查看框架状态
298
+
299
+ ```bash
300
+ /start
301
+ ```
302
+
303
+ ### 2. 开发第一个业务功能
304
+
305
+ **方式 1:使用 /dev 命令**
306
+
307
+ ```bash
308
+ /dev
309
+ ```
310
+
311
+ Claude 会引导你完成:
312
+ - 需求分析
313
+ - 数据库设计
314
+ - 后端代码生成
315
+
316
+ **方式 2:使用 /crud 命令(快速生成标准CRUD)**
317
+
318
+ ```bash
319
+ /crud
320
+ ```
321
+
322
+ **方式 3:使用代码生成器**
323
+
324
+ 1. 设计数据库表
325
+ 2. 访问代码生成器页面
326
+ 3. 导入表、配置生成选项
327
+ 4. 一键生成代码
328
+
329
+ ### 3. 查看业务进度
330
+
331
+ ```bash
332
+ /progress
333
+ ```
334
+
335
+ ---
336
+
337
+ ## 📚 相关文档
338
+
339
+ - **开发规范**:`CLAUDE.md` - 完整的开发规范和架构说明
340
+ - **技能库**:`.claude/skills/` - 各功能开发指南
341
+
342
+ ---
343
+
344
+ ## 💡 常见问题
345
+
346
+ ### Q1: 我可以修改框架模块的代码吗?
347
+
348
+ **不建议**。框架模块是通用功能,修改后升级框架会有冲突。如果需要扩展,建议:
349
+ - 继承框架类并重写
350
+ - 在业务模块中封装
351
+ - 通过配置文件调整行为
352
+
353
+ ### Q2: 为什么项目没有 DAO 层?
354
+
355
+ 本项目采用三层架构(Controller → Service → Mapper),Service 直接注入 Mapper,没有独立的 DAO 层。这样做的好处是:
356
+ - 更简洁、更少的样板代码
357
+ - 避免过度分层
358
+ - MyBatis-Plus 已提供足够的数据访问抽象
359
+
360
+ ### Q3: buildQueryWrapper 应该放在哪里?
361
+
362
+ **放在 Service 实现类中**,不是 Controller,也不是单独的 DAO 层。
363
+
364
+ ### Q4: 代码生成器生成的代码是业务代码吗?
365
+
366
+ **是的**。代码生成器根据你的业务表生成代码,属于业务代码,会放到你指定的业务模块中。
367
+
368
+ ### Q5: 为什么执行 /progress 显示 0%?
369
+
370
+ 因为你还没有开发任何业务模块。框架模块不参与进度统计。
371
+
372
+ ---
373
+
374
+ ## 🎯 总结
375
+
376
+ | 类型 | 框架模块(已完成) | 业务模块(需要开发) |
377
+ |------|------------------|-------------------|
378
+ | 通用工具 | ruoyi-common(24个子模块) | - |
379
+ | 启动入口 | ruoyi-admin | - |
380
+ | 系统管理 | ruoyi-modules/ruoyi-system | - |
381
+ | 代码生成 | ruoyi-modules/ruoyi-generator | - |
382
+ | 演示模块 | ruoyi-modules/ruoyi-demo | - |
383
+ | 定时任务 | ruoyi-modules/ruoyi-job | - |
384
+ | 工作流 | ruoyi-modules/ruoyi-workflow | - |
385
+ | 业务模块 | - | ruoyi-modules/ruoyi-{你的业务}/ |
386
+ | 统计进度 | ❌ 不统计 | ✅ 只统计业务模块 |
387
+
388
+ **记住**:
389
+ - 框架 = 已完成的通用功能
390
+ - 业务 = 你要开发的项目功能
391
+ - 包名必须是 `org.dromara.*`
392
+ - 三层架构:Controller → Service → Mapper(无 DAO 层)
393
+ - 进度统计只看业务,不看框架
@@ -0,0 +1,246 @@
1
+ # 路由配置指南
2
+
3
+ > **适用于**: 腾云智慧食堂管理系统前端项目(`/Users/xujiajun/Developer/frontProj/web`)
4
+
5
+ 最后更新: 2026-02-18
6
+
7
+ ---
8
+
9
+ ## 路由文件结构
10
+
11
+ ```
12
+ src/router/
13
+ ├── index.js # 路由入口:创建路由实例、全局前置守卫
14
+ ├── static-routers.js # 静态路由:不需要权限的页面(登录、404、大屏等)
15
+ ├── business-routers.js # 业务路由:商户管理相关页面
16
+ └── campus-routers.js # 园区路由:园区相关页面
17
+ ```
18
+
19
+ `src/permission.js` — 全局路由守卫(登录、权限、动态路由加载)
20
+
21
+ ---
22
+
23
+ ## 静态路由 (static-routers.js)
24
+
25
+ 不需要登录权限的页面配置在这里,每条路由都设置 `hidden: true`(不在侧边栏显示):
26
+
27
+ ```javascript
28
+ // src/router/static-routers.js
29
+ import Layout from '@/layout'
30
+
31
+ export default [
32
+ {
33
+ path: '/login',
34
+ name: 'login',
35
+ // ⭐ 懒加载规范:使用 webpackChunkName 注释
36
+ component: () => import(/* webpackChunkName: "login" */ '@/leniuview/login/index'),
37
+ hidden: true
38
+ },
39
+ {
40
+ path: '/404',
41
+ name: '404',
42
+ component: () => import(/* webpackChunkName: "404" */ '@/leniuview/error/404'),
43
+ hidden: true
44
+ },
45
+ // 有 Layout 框架、但不在菜单显示的页面
46
+ {
47
+ path: '',
48
+ component: Layout,
49
+ hidden: true,
50
+ meta: {
51
+ title: '首页',
52
+ icon: 'home'
53
+ }
54
+ }
55
+ ]
56
+ ```
57
+
58
+ ---
59
+
60
+ ## 业务路由 (business-routers.js)
61
+
62
+ 有 Layout 框架、需要权限的业务页面,组织为父子路由结构:
63
+
64
+ ```javascript
65
+ // src/router/business-routers.js
66
+ import Layout from '@/layout'
67
+ import LayoutView from '@/layout/layout' // 嵌套路由时使用
68
+
69
+ export default {
70
+ path: '/initialized',
71
+ component: Layout, // 使用主布局
72
+ redirect: 'noRedirect',
73
+ name: '商户',
74
+ meta: {
75
+ title: '商户',
76
+ icon: 'component'
77
+ },
78
+ children: [
79
+ {
80
+ path: 'initial',
81
+ // ⭐ 懒加载:webpackChunkName 与 name 保持一致
82
+ component: () => import(/* webpackChunkName: "initial" */ '@/leniuview/Business/initialized'),
83
+ name: '商户注册',
84
+ meta: {
85
+ title: '商户注册',
86
+ redirect: 'audit'
87
+ }
88
+ },
89
+ {
90
+ path: 'initializedList',
91
+ component: () => import(/* webpackChunkName: "initializedList" */ '@/leniuview/Business/initializedList'),
92
+ name: '商户审核',
93
+ meta: {
94
+ title: '商户审核',
95
+ noCache: true // 不缓存该页面
96
+ }
97
+ }
98
+ ]
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ ## 懒加载规范
105
+
106
+ ```javascript
107
+ // ✅ 正确:使用 webpackChunkName 注释
108
+ component: () => import(/* webpackChunkName: "moduleName" */ '@/leniuview/xxx/index')
109
+
110
+ // ✅ webpackChunkName 命名建议与路由 name 保持一致
111
+ {
112
+ path: 'priceRule',
113
+ name: 'priceRule',
114
+ component: () => import(/* webpackChunkName: "priceRule" */ '@/leniuview/marketing/priceRule/index')
115
+ }
116
+
117
+ // ❌ 不推荐:不加 webpackChunkName(影响分包优化)
118
+ component: () => import('@/leniuview/xxx/index')
119
+ ```
120
+
121
+ ---
122
+
123
+ ## meta 字段说明
124
+
125
+ | 字段 | 类型 | 说明 | 示例 |
126
+ |------|------|------|------|
127
+ | `title` | String | 页面标题(显示在浏览器标签和面包屑) | `'营销规则管理'` |
128
+ | `icon` | String | 菜单图标名称 | `'component'` |
129
+ | `noCache` | Boolean | 是否禁用页面缓存(`<keep-alive>`)默认缓存 | `true` |
130
+ | `hidden` | Boolean | 是否在侧边菜单中隐藏 | `true` |
131
+ | `redirect` | String | 重定向目标 | `'audit'` |
132
+ | `affix` | Boolean | 是否固定在 tab 栏(不可关闭) | `true` |
133
+
134
+ ---
135
+
136
+ ## 权限路由控制流程
137
+
138
+ `permission.js` 中的全局前置守卫流程:
139
+
140
+ ```
141
+ 用户访问页面
142
+
143
+ 有 Token?
144
+ ├── 否 → 是白名单页面? → 是 → 直接访问
145
+ │ → 否 → 跳转 /login
146
+ └── 是 → 已加载用户角色?
147
+ ├── 是 → 直接 next()
148
+ └── 否 → 调用 store.dispatch('user/getInfo')
149
+
150
+ 根据角色加载动态路由
151
+ store.dispatch('permission/generateRoutes', roles)
152
+
153
+ router.addRoutes(accessedRoutes)
154
+
155
+ next({ ...to, replace: true })
156
+ ```
157
+
158
+ ### 白名单页面(无需登录)
159
+
160
+ ```javascript
161
+ // src/permission.js
162
+ const whiteList = [
163
+ '/login',
164
+ '/ssoLogin',
165
+ '/openLogin',
166
+ '/404',
167
+ '/registeredCompany',
168
+ '/registeredCompanyLinS',
169
+ '/resetPassword',
170
+ '/registerSupplier',
171
+ '/cooperativePartner',
172
+ '/dataHunter_user',
173
+ '/dataHunter_back',
174
+ '/dataHunter_merchant',
175
+ '/backCustomScreen'
176
+ ]
177
+ ```
178
+
179
+ ---
180
+
181
+ ## 新增路由步骤
182
+
183
+ ### 1. 不需要权限的页面(静态路由)
184
+
185
+ 在 `static-routers.js` 中添加:
186
+
187
+ ```javascript
188
+ {
189
+ path: '/myPage',
190
+ name: 'myPage',
191
+ component: () => import(/* webpackChunkName: "myPage" */ '@/leniuview/myModule/index'),
192
+ hidden: true
193
+ }
194
+ ```
195
+
196
+ ### 2. 需要权限的业务页面(业务路由)
197
+
198
+ 在对应的业务路由文件(如 `business-routers.js`)的 `children` 中添加:
199
+
200
+ ```javascript
201
+ {
202
+ path: 'myFeature',
203
+ component: () => import(/* webpackChunkName: "myFeature" */ '@/leniuview/Business/myFeature/index'),
204
+ name: '我的功能',
205
+ meta: {
206
+ title: '我的功能',
207
+ noCache: true
208
+ }
209
+ }
210
+ ```
211
+
212
+ ### 3. 动态权限路由
213
+
214
+ 从后端接口获取用户有权限的菜单,由 Vuex `permission` 模块动态生成路由,无需手动添加。
215
+
216
+ ---
217
+
218
+ ## 路由实例管理
219
+
220
+ ```javascript
221
+ // src/router/index.js
222
+ import { resetRouter } from '@/router'
223
+
224
+ // 登出时重置路由(清除动态添加的权限路由)
225
+ resetRouter()
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 常见问题
231
+
232
+ ### 重复点击相同路由报错
233
+
234
+ 已在 `router/index.js` 中全局处理,忽略 `NavigationDuplicated` 错误,无需每个页面单独处理。
235
+
236
+ ### 页面不缓存
237
+
238
+ 在路由 meta 中添加 `noCache: true`,同时确保组件有 `name` 属性(`keep-alive` 按组件 name 缓存)。
239
+
240
+ ### 检查当前用户是否有某页面权限
241
+
242
+ ```javascript
243
+ import { checkMenu } from '@/utils/auth'
244
+
245
+ const hasAccess = checkMenu('/marketing/price')
246
+ ```
@@ -0,0 +1,73 @@
1
+ {
2
+ "framework": {
3
+ "description": "框架模块配置 - 这些模块是框架的一部分,不参与业务进度统计",
4
+ "backend": {
5
+ "modules": [
6
+ "ruoyi-common",
7
+ "ruoyi-admin"
8
+ ],
9
+ "systemModules": [
10
+ "ruoyi-modules/ruoyi-system",
11
+ "ruoyi-modules/ruoyi-generator"
12
+ ],
13
+ "description": "后端框架模块,包含通用工具、系统管理、代码生成器等"
14
+ },
15
+ "systemFeatures": [
16
+ "用户管理",
17
+ "角色管理",
18
+ "菜单管理",
19
+ "部门管理",
20
+ "岗位管理",
21
+ "字典管理",
22
+ "参数配置",
23
+ "通知公告",
24
+ "操作日志",
25
+ "登录日志",
26
+ "在线用户",
27
+ "定时任务",
28
+ "代码生成器",
29
+ "租户管理",
30
+ "租户套餐",
31
+ "客户端管理",
32
+ "OSS配置",
33
+ "OSS对象存储"
34
+ ]
35
+ },
36
+ "business": {
37
+ "description": "业务模块配置 - 这些是需要统计进度的业务代码",
38
+ "backend": {
39
+ "modulePattern": "ruoyi-modules/ruoyi-*",
40
+ "excludeModules": [
41
+ "ruoyi-modules/ruoyi-system",
42
+ "ruoyi-modules/ruoyi-generator",
43
+ "ruoyi-modules/ruoyi-demo",
44
+ "ruoyi-modules/ruoyi-job",
45
+ "ruoyi-modules/ruoyi-workflow"
46
+ ],
47
+ "description": "业务模块位于 ruoyi-modules/ 下,以 ruoyi- 开头但不包括框架自带模块(system、generator、demo、job、workflow)"
48
+ }
49
+ },
50
+ "scanRules": {
51
+ "backend": {
52
+ "requiredFiles": [
53
+ "Entity (domain/*.java)",
54
+ "BO (domain/bo/*Bo.java)",
55
+ "VO (domain/vo/*Vo.java)",
56
+ "Controller (*Controller.java)",
57
+ "Service (I*Service.java)",
58
+ "ServiceImpl (impl/*ServiceImpl.java)",
59
+ "Mapper (*Mapper.java)"
60
+ ],
61
+ "completenessFormula": "存在文件数 / 7 * 100%"
62
+ },
63
+ "todoPatterns": [
64
+ "TODO:",
65
+ "FIXME:",
66
+ "XXX:",
67
+ "HACK:",
68
+ "NOTE:"
69
+ ]
70
+ },
71
+ "version": "1.0.0",
72
+ "lastUpdated": "2026-01-24"
73
+ }