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,438 @@
1
+ ---
2
+ name: ui-pc
3
+ description: |
4
+ 前端组件库指南。包含公共组件、业务组件、Element UI 组件使用。
5
+
6
+ 触发场景:
7
+ - 开发前端后台管理页面
8
+ - 使用 Element UI 组件
9
+ - 表格、表单、弹窗、图表等前端 UI
10
+ - 使用 leniu-components 业务组件
11
+ - 前端权限控制、国际化
12
+
13
+ 触发词:el-、el-table、el-form、el-dialog、leniu-page、leniu-table、前端组件、后台页面、v-hasPerm
14
+
15
+ 适用目录:/Users/xujiajun/Developer/frontProj/web/src/**
16
+ ---
17
+
18
+ # 前端组件库指南
19
+
20
+ > **适用于**: 腾云智慧食堂管理系统前端项目(Vue 2.7.16 + Element UI 2.15.9)
21
+ >
22
+ > **前端项目路径**: `/Users/xujiajun/Developer/frontProj/web`
23
+
24
+ ---
25
+
26
+ ## 目录结构
27
+
28
+ ```
29
+ src/
30
+ ├── components/ # 公共组件(~87个)
31
+ ├── leniu-components/ # 业务组件(10个核心组件)
32
+ ├── layout/ # 布局组件(Navbar/Sidebar/AppMain)
33
+ ├── directive/ # 自定义指令(11个)
34
+ └── mixins/ # 全局混入(5个)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 业务组件(leniu-components)
40
+
41
+ | 组件 | 路径 | 用途 |
42
+ |------|------|------|
43
+ | `leniu-page` | `leniu-components/leniu-page` | 页面布局容器(所有业务页面必用) |
44
+ | `leniu-search` | `leniu-components/leniu-search` | 搜索组件(列表页搜索) |
45
+ | `leniu-table` | `leniu-components/leniu-table` | 增强表格组件 |
46
+ | `leniu-form` | `leniu-components/leniu-form` | 表单组件 |
47
+ | `leniu-form-item` | `leniu-components/leniu-form-item` | 表单项组件 |
48
+ | `leniu-form-dialog` | `leniu-components/leniu-form-dialog` | 弹窗表单(新增/编辑) |
49
+ | `leniu-form-panel` | `leniu-components/leniu-form-panel` | 面板表单(详情展示) |
50
+ | `leniu-button-list` | `leniu-components/leniu-button-list` | 按钮组 |
51
+ | `leniu-table-toolbar` | `leniu-components/leniu-table-toolbar` | 表格工具栏 |
52
+
53
+ ---
54
+
55
+ ## 常用公共组件(components)
56
+
57
+ | 组件 | 用途 |
58
+ |------|------|
59
+ | `Pagination` | 分页组件 |
60
+ | `CollapseSearch` | 折叠搜索区域 |
61
+ | `Breadcrumb` | 面包屑导航 |
62
+ | `Dropzone` | 文件拖拽上传 |
63
+ | `ImageCropper` | 图片裁剪 |
64
+ | `Tinymce` | 富文本编辑器 |
65
+ | `UploadImageList` | 图片上传列表 |
66
+
67
+ ---
68
+
69
+ ## 全局原型方法(main.js 挂载)
70
+
71
+ 在任意组件中可直接使用:
72
+
73
+ | 方法/属性 | 说明 | 示例 |
74
+ |----------|------|------|
75
+ | `this.money(fen)` | 分转元(保留2位小数) | `this.money(100)` → `'1.00'` |
76
+ | `this.accMul(val, 100)` | 精确乘法(元转分) | `this.accMul(1.5, 100)` → `150` |
77
+ | `this.parseTime(time, fmt)` | 格式化时间 | `this.parseTime(new Date(), '{y}-{m}-{d}')` |
78
+ | `this.$echarts` | ECharts 实例 | `this.$echarts.init(el)` |
79
+ | `this.$hasPerm(['xxx:add'])` | 权限判断(JS中) | 返回 true/false |
80
+ | `this.isDevEnv` | 是否纯本地开发环境 | true/false |
81
+ | `this.isDevTestEnv` | 是否开发测试环境 | 含 dev/test 域名 |
82
+ | `this._` | Lodash 工具库 | `this._.debounce(fn, 300)` |
83
+ | `this.validators` | 表单校验规则集 | `this.validators.required()` |
84
+ | `this.inputRules` | 输入过滤规则 | `this.inputRules.number(val)` |
85
+ | `this.CNEN` | 中英文拼接工具 | 根据 i18n 拼接 |
86
+
87
+ ---
88
+
89
+ ## 自定义指令(directive)
90
+
91
+ ```vue
92
+ <!-- 按钮权限(最常用)-->
93
+ <el-button v-hasPerm="['xxx:add']">新增</el-button>
94
+ <el-button v-hasPerm="['xxx:edit']">修改</el-button>
95
+ <el-button v-hasPerm="['xxx:remove']">删除</el-button>
96
+
97
+ <!-- 角色权限 -->
98
+ <el-button v-hasRole="['admin']">管理员按钮</el-button>
99
+ ```
100
+
101
+ ---
102
+
103
+ ## 国际化(i18n)
104
+
105
+ ```vue
106
+ <template>
107
+ <!-- 使用翻译 -->
108
+ <span>{{ $t('规则名称') }}</span>
109
+ <el-button>{{ $t('action.query') }}</el-button>
110
+ <el-button>{{ $t('新增') }}</el-button>
111
+ </template>
112
+ ```
113
+
114
+ > **注意**:语言文件在 `src/lang/` 目录,支持中文(zh)和英文(en)
115
+
116
+ ---
117
+
118
+ ## 全局 Mixin(mixins/index.js)
119
+
120
+ 所有组件自动混入,提供以下方法:
121
+
122
+ ```javascript
123
+ // 金额输入过滤(只允许数字和小数点)
124
+ this.oninput(value, decimalLimit, maxLength, maxValue)
125
+
126
+ // 只允许字母和数字
127
+ this.LetterAndNum(value, maxLength)
128
+
129
+ // 只允许数字
130
+ this.Num(value, maxLength)
131
+
132
+ // 获取当前时间戳字符串
133
+ this.getTimestamp()
134
+
135
+ // 获取图片完整URL
136
+ this.getUrl1(path) // 自动拼接 baseUrl
137
+ ```
138
+
139
+ ---
140
+
141
+ ## 标准列表页结构
142
+
143
+ ```vue
144
+ <template>
145
+ <page-slot>
146
+ <!-- 搜索区域 -->
147
+ <collapse-search slot="search">
148
+ <template v-slot:outerCol>
149
+ <el-col :span="6">
150
+ <el-form-item :label="$t('名称')">
151
+ <el-input v-model="listQuery.name" clearable />
152
+ </el-form-item>
153
+ </el-col>
154
+ <el-col :span="6">
155
+ <el-form-item :label="$t('状态')">
156
+ <el-select v-model="listQuery.status" clearable>
157
+ <el-option label="正常" value="1" />
158
+ <el-option label="停用" value="0" />
159
+ </el-select>
160
+ </el-form-item>
161
+ </el-col>
162
+ </template>
163
+ <el-button
164
+ slot="operate"
165
+ type="primary"
166
+ icon="el-icon-search"
167
+ @click="() => (page.current = 1) && getData()"
168
+ >
169
+ {{ $t('action.query') }}
170
+ </el-button>
171
+ </collapse-search>
172
+
173
+ <!-- 操作按钮 -->
174
+ <el-button
175
+ slot="tableTopLeft"
176
+ type="primary"
177
+ plain
178
+ icon="el-icon-plus"
179
+ v-hasPerm="['xxx:add']"
180
+ @click="handleAdd"
181
+ >
182
+ {{ $t('新增') }}
183
+ </el-button>
184
+
185
+ <!-- 表格 -->
186
+ <el-table
187
+ slot="table"
188
+ height="100%"
189
+ stripe
190
+ :data="tableData"
191
+ v-loading="loading"
192
+ >
193
+ <el-table-column prop="name" :label="$t('名称')" min-width="150" />
194
+ <el-table-column prop="status" :label="$t('状态')">
195
+ <template slot-scope="{ row }">
196
+ <el-tag :type="row.status === '1' ? 'success' : 'danger'">
197
+ {{ row.status === '1' ? '正常' : '停用' }}
198
+ </el-tag>
199
+ </template>
200
+ </el-table-column>
201
+ <el-table-column :label="$t('操作')" width="180" align="center">
202
+ <template slot-scope="{ row }">
203
+ <el-button type="text" @click="handleEdit(row)" v-hasPerm="['xxx:edit']">
204
+ {{ $t('修改') }}
205
+ </el-button>
206
+ <el-button type="text" @click="handleDelete(row)" v-hasPerm="['xxx:remove']">
207
+ {{ $t('删除') }}
208
+ </el-button>
209
+ </template>
210
+ </el-table-column>
211
+ </el-table>
212
+ </page-slot>
213
+ </template>
214
+
215
+ <script>
216
+ import { getList, del } from '@/api/xxx'
217
+
218
+ export default {
219
+ name: 'XxxList',
220
+ data() {
221
+ return {
222
+ loading: false,
223
+ tableData: [],
224
+ total: 0,
225
+ page: { current: 1, size: 20 },
226
+ listQuery: {
227
+ name: '',
228
+ status: ''
229
+ }
230
+ }
231
+ },
232
+ mounted() {
233
+ this.getData()
234
+ },
235
+ methods: {
236
+ async getData() {
237
+ this.loading = true
238
+ try {
239
+ const res = await getList({
240
+ page: this.page,
241
+ object: this.listQuery
242
+ })
243
+ this.tableData = res.records || []
244
+ this.total = res.total || 0
245
+ } finally {
246
+ this.loading = false
247
+ }
248
+ },
249
+ handleAdd() {
250
+ this.visible = true
251
+ this.form = {}
252
+ },
253
+ handleEdit(row) {
254
+ this.visible = true
255
+ this.form = { ...row }
256
+ },
257
+ handleDelete(row) {
258
+ this.$confirm('确定删除?', '提示', {
259
+ type: 'warning'
260
+ }).then(async () => {
261
+ await del(row.id)
262
+ this.$message.success('删除成功')
263
+ this.getData()
264
+ })
265
+ }
266
+ }
267
+ }
268
+ </script>
269
+ ```
270
+
271
+ ---
272
+
273
+ ## 标准表单弹窗
274
+
275
+ ```vue
276
+ <template>
277
+ <el-dialog
278
+ :title="form.id ? '编辑' : '新增'"
279
+ :visible.sync="visible"
280
+ width="600px"
281
+ @close="handleClose"
282
+ >
283
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
284
+ <el-form-item label="名称" prop="name">
285
+ <el-input v-model="form.name" placeholder="请输入名称" />
286
+ </el-form-item>
287
+ <el-form-item label="状态" prop="status">
288
+ <el-radio-group v-model="form.status">
289
+ <el-radio label="1">正常</el-radio>
290
+ <el-radio label="0">停用</el-radio>
291
+ </el-radio-group>
292
+ </el-form-item>
293
+ </el-form>
294
+ <div slot="footer">
295
+ <el-button @click="visible = false">取消</el-button>
296
+ <el-button type="primary" :loading="submitting" @click="handleSubmit">
297
+ 确定
298
+ </el-button>
299
+ </div>
300
+ </el-dialog>
301
+ </template>
302
+
303
+ <script>
304
+ import { add, update } from '@/api/xxx'
305
+
306
+ export default {
307
+ name: 'XxxForm',
308
+ props: {
309
+ visible: Boolean,
310
+ data: Object
311
+ },
312
+ data() {
313
+ return {
314
+ form: {},
315
+ rules: {
316
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
317
+ },
318
+ submitting: false
319
+ }
320
+ },
321
+ watch: {
322
+ data: {
323
+ immediate: true,
324
+ handler(val) {
325
+ this.form = val ? { ...val } : {}
326
+ }
327
+ }
328
+ },
329
+ methods: {
330
+ handleClose() {
331
+ this.$refs.form.resetFields()
332
+ this.$emit('update:visible', false)
333
+ },
334
+ async handleSubmit() {
335
+ this.$refs.form.validate(async (valid) => {
336
+ if (!valid) return
337
+ this.submitting = true
338
+ try {
339
+ const api = this.form.id ? update : add
340
+ await api(this.form)
341
+ this.$message.success('保存成功')
342
+ this.$emit('success')
343
+ this.handleClose()
344
+ } finally {
345
+ this.submitting = false
346
+ }
347
+ })
348
+ }
349
+ }
350
+ }
351
+ </script>
352
+ ```
353
+
354
+ ---
355
+
356
+ ## API 接口定义规范
357
+
358
+ 所有 API 调用通过 `src/utils/request.js` 封装,请求格式有两种:
359
+
360
+ ### 标准请求格式(带 content 包裹)
361
+
362
+ ```javascript
363
+ // src/api/xxx.js
364
+ import request from '@/utils/request'
365
+
366
+ // 分页查询
367
+ export function getList(data) {
368
+ return request({
369
+ url: '/api/v1/xxx/list',
370
+ method: 'post',
371
+ data: {
372
+ version: '1.0',
373
+ nonceStr: '1212fsadf',
374
+ timestamp: '2020-4-21',
375
+ signType: 'md5',
376
+ content: data, // 业务数据放在 content 中
377
+ sign: 'xxx'
378
+ }
379
+ })
380
+ }
381
+
382
+ // GET 请求
383
+ export function getDetail(id) {
384
+ return request({
385
+ url: `/api/v1/xxx/detail/${id}`,
386
+ method: 'get',
387
+ params: { version: '1.0', content: { id } }
388
+ })
389
+ }
390
+
391
+ // 删除
392
+ export function del(id) {
393
+ return request({
394
+ url: `/api/v1/xxx/delete`,
395
+ method: 'post',
396
+ data: { version: '1.0', content: { id } }
397
+ })
398
+ }
399
+ ```
400
+
401
+ > **注意**:
402
+ > - 请求拦截器会自动添加签名(MD5)
403
+ > - 所有接口都走 SM4 国密加密(`/security/` 前缀)
404
+ > - 响应 `code == 10000` 为成功,返回 `res.data`
405
+ > - 响应 `code == 20001` 为登录失效,自动跳转登录
406
+
407
+ ---
408
+
409
+ ## 金额处理规范
410
+
411
+ ```javascript
412
+ // ✅ 前端展示:分转元(使用全局 money 方法)
413
+ this.money(10000) // → '100.00'
414
+ this.money(null) // → ''
415
+
416
+ // ✅ 后端传参:元转分(使用全局 accMul 方法)
417
+ this.accMul(100, 100) // → 10000
418
+
419
+ // ❌ 禁止直接 / 100 或 * 100(精度问题)
420
+ amount / 100 // 禁止
421
+ amount * 100 // 禁止
422
+ ```
423
+
424
+ ---
425
+
426
+ ## 参考文件位置
427
+
428
+ | 用途 | 路径 |
429
+ |------|------|
430
+ | 业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
431
+ | 公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/` |
432
+ | 标准列表页 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/marketing/` |
433
+ | API 定义示例 | `/Users/xujiajun/Developer/frontProj/web/src/api/marketing.js` |
434
+ | 请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
435
+ | Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
436
+ | 全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
437
+ | 权限守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
438
+ | 主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |