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.
- package/.claude/agents/code-reviewer.md +139 -0
- package/.claude/agents/project-manager.md +159 -0
- package/.claude/audio/completed.wav +0 -0
- package/.claude/commands/add-todo.md +255 -0
- package/.claude/commands/check.md +210 -0
- package/.claude/commands/crud.md +454 -0
- package/.claude/commands/dev.md +503 -0
- package/.claude/commands/init-docs.md +681 -0
- package/.claude/commands/next.md +251 -0
- package/.claude/commands/progress.md +242 -0
- package/.claude/commands/start.md +199 -0
- package/.claude/commands/sync.md +307 -0
- package/.claude/commands/update-status.md +428 -0
- package/.claude/docs/Mixin/344/275/277/347/224/250/346/214/207/345/215/227.md +299 -0
- package/.claude/docs/README.md +167 -0
- package/.claude/docs//345/211/215/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +599 -0
- package/.claude/docs//345/220/216/347/253/257/345/274/200/345/217/221/346/214/207/345/215/227.md +726 -0
- 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
- 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
- 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
- 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
- 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
- package/.claude/docs//346/241/206/346/236/266/350/257/264/346/230/216.md +393 -0
- package/.claude/docs//350/267/257/347/224/261/351/205/215/347/275/256/346/214/207/345/215/227.md +246 -0
- package/.claude/framework-config.json +73 -0
- package/.claude/hooks/pre-tool-use.js +117 -0
- package/.claude/hooks/skill-forced-eval.js +167 -0
- package/.claude/hooks/stop.js +58 -0
- package/.claude/settings.json +41 -0
- package/.claude/skills/add-skill/SKILL.md +352 -0
- package/.claude/skills/api-development/SKILL.md +560 -0
- package/.claude/skills/architecture-design/SKILL.md +756 -0
- package/.claude/skills/backend-annotations/SKILL.md +674 -0
- package/.claude/skills/banana-image/CHANGELOG.md +37 -0
- package/.claude/skills/banana-image/README.md +146 -0
- package/.claude/skills/banana-image/SKILL.md +164 -0
- package/.claude/skills/banana-image/assets/logo.png +0 -0
- package/.claude/skills/banana-image/references/advanced-usage.md +189 -0
- package/.claude/skills/banana-image/scripts/apply_template.py +125 -0
- package/.claude/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.claude/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.claude/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.claude/skills/banana-image/scripts/package.json +18 -0
- package/.claude/skills/banana-image/scripts/requirements.txt +10 -0
- package/.claude/skills/banana-image/templates/poster.json +22 -0
- package/.claude/skills/banana-image/templates/product.json +17 -0
- package/.claude/skills/banana-image/templates/social.json +22 -0
- package/.claude/skills/banana-image/templates/thumbnail.json +17 -0
- package/.claude/skills/brainstorm/SKILL.md +648 -0
- package/.claude/skills/bug-detective/SKILL.md +1206 -0
- package/.claude/skills/code-patterns/SKILL.md +590 -0
- package/.claude/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.claude/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.claude/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.claude/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.claude/skills/crud-development/SKILL.md +649 -0
- package/.claude/skills/data-permission/SKILL.md +599 -0
- package/.claude/skills/database-ops/SKILL.md +407 -0
- package/.claude/skills/error-handler/SKILL.md +371 -0
- package/.claude/skills/file-oss-management/SKILL.md +863 -0
- package/.claude/skills/git-workflow/SKILL.md +375 -0
- package/.claude/skills/json-serialization/SKILL.md +357 -0
- package/.claude/skills/leniu-api-development/SKILL.md +803 -0
- package/.claude/skills/leniu-architecture-design/SKILL.md +598 -0
- package/.claude/skills/leniu-backend-annotations/SKILL.md +664 -0
- package/.claude/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.claude/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.claude/skills/leniu-data-permission/SKILL.md +256 -0
- package/.claude/skills/leniu-database-ops/SKILL.md +426 -0
- package/.claude/skills/leniu-error-handler/SKILL.md +462 -0
- package/.claude/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.claude/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.claude/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.claude/skills/leniu-java-entity/SKILL.md +751 -0
- package/.claude/skills/leniu-java-export/SKILL.md +560 -0
- package/.claude/skills/leniu-java-logging/SKILL.md +832 -0
- package/.claude/skills/leniu-java-mq/SKILL.md +338 -0
- package/.claude/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.claude/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.claude/skills/leniu-java-task/SKILL.md +367 -0
- package/.claude/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.claude/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.claude/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.claude/skills/leniu-mealtime/SKILL.md +215 -0
- package/.claude/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.claude/skills/leniu-security-guard/SKILL.md +520 -0
- package/.claude/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
- package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
- package/.claude/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.claude/skills/openspec-continue-change/SKILL.md +118 -0
- package/.claude/skills/openspec-explore/SKILL.md +290 -0
- package/.claude/skills/openspec-ff-change/SKILL.md +101 -0
- package/.claude/skills/openspec-new-change/SKILL.md +74 -0
- package/.claude/skills/openspec-onboard/SKILL.md +529 -0
- package/.claude/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.claude/skills/openspec-verify-change/SKILL.md +168 -0
- package/.claude/skills/performance-doctor/SKILL.md +627 -0
- package/.claude/skills/project-navigator/SKILL.md +305 -0
- package/.claude/skills/redis-cache/SKILL.md +839 -0
- package/.claude/skills/scheduled-jobs/SKILL.md +633 -0
- package/.claude/skills/security-guard/SKILL.md +748 -0
- package/.claude/skills/sms-mail/SKILL.md +766 -0
- package/.claude/skills/social-login/SKILL.md +668 -0
- package/.claude/skills/store-pc/SKILL.md +366 -0
- package/.claude/skills/task-tracker/SKILL.md +307 -0
- package/.claude/skills/tech-decision/SKILL.md +393 -0
- package/.claude/skills/tenant-management/SKILL.md +603 -0
- package/.claude/skills/test-development/SKILL.md +755 -0
- package/.claude/skills/ui-pc/SKILL.md +438 -0
- package/.claude/skills/utils-toolkit/SKILL.md +615 -0
- package/.claude/skills/websocket-sse/SKILL.md +716 -0
- package/.claude/skills/workflow-engine/SKILL.md +676 -0
- package/.claude/templates//345/276/205/345/212/236/346/270/205/345/215/225/346/250/241/346/235/277.md +56 -0
- package/.claude/templates//351/234/200/346/261/202/346/226/207/346/241/243/346/250/241/346/235/277.md +85 -0
- package/.claude/templates//351/241/271/347/233/256/347/212/266/346/200/201/346/250/241/346/235/277.md +43 -0
- package/.codex/skills/add-skill/SKILL.md +352 -0
- package/.codex/skills/add-todo/SKILL.md +269 -0
- package/.codex/skills/api-development/SKILL.md +693 -0
- package/.codex/skills/architecture-design/SKILL.md +628 -0
- package/.codex/skills/backend-annotations/SKILL.md +664 -0
- package/.codex/skills/banana-image/CHANGELOG.md +37 -0
- package/.codex/skills/banana-image/README.md +146 -0
- package/.codex/skills/banana-image/SKILL.md +164 -0
- package/.codex/skills/banana-image/assets/logo.png +0 -0
- package/.codex/skills/banana-image/references/advanced-usage.md +189 -0
- package/.codex/skills/banana-image/scripts/apply_template.py +125 -0
- package/.codex/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.codex/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.codex/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.codex/skills/banana-image/scripts/package.json +18 -0
- package/.codex/skills/banana-image/scripts/requirements.txt +10 -0
- package/.codex/skills/banana-image/templates/poster.json +22 -0
- package/.codex/skills/banana-image/templates/product.json +17 -0
- package/.codex/skills/banana-image/templates/social.json +22 -0
- package/.codex/skills/banana-image/templates/thumbnail.json +17 -0
- package/.codex/skills/brainstorm/SKILL.md +648 -0
- package/.codex/skills/bug-detective/SKILL.md +1206 -0
- package/.codex/skills/check/SKILL.md +367 -0
- package/.codex/skills/code-patterns/SKILL.md +442 -0
- package/.codex/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.codex/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.codex/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.codex/skills/crud/SKILL.md +265 -0
- package/.codex/skills/crud-development/SKILL.md +637 -0
- package/.codex/skills/data-permission/SKILL.md +591 -0
- package/.codex/skills/database-ops/SKILL.md +553 -0
- package/.codex/skills/dev/SKILL.md +187 -0
- package/.codex/skills/error-handler/SKILL.md +361 -0
- package/.codex/skills/file-oss-management/SKILL.md +863 -0
- package/.codex/skills/git-workflow/SKILL.md +375 -0
- package/.codex/skills/init-docs/SKILL.md +194 -0
- package/.codex/skills/json-serialization/SKILL.md +357 -0
- package/.codex/skills/leniu-api-development/SKILL.md +803 -0
- package/.codex/skills/leniu-architecture-design/SKILL.md +594 -0
- package/.codex/skills/leniu-backend-annotations/SKILL.md +662 -0
- package/.codex/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.codex/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.codex/skills/leniu-data-permission/SKILL.md +256 -0
- package/.codex/skills/leniu-database-ops/SKILL.md +426 -0
- package/.codex/skills/leniu-error-handler/SKILL.md +462 -0
- package/.codex/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.codex/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.codex/skills/leniu-java-entity/SKILL.md +751 -0
- package/.codex/skills/leniu-java-export/SKILL.md +560 -0
- package/.codex/skills/leniu-java-logging/SKILL.md +832 -0
- package/.codex/skills/leniu-java-mq/SKILL.md +338 -0
- package/.codex/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.codex/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.codex/skills/leniu-java-task/SKILL.md +367 -0
- package/.codex/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.codex/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.codex/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.codex/skills/leniu-mealtime/SKILL.md +215 -0
- package/.codex/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.codex/skills/leniu-security-guard/SKILL.md +520 -0
- package/.codex/skills/leniu-utils-toolkit/SKILL.md +378 -0
- package/.codex/skills/next/SKILL.md +137 -0
- package/.codex/skills/openspec-apply-change/SKILL.md +156 -0
- package/.codex/skills/openspec-archive-change/SKILL.md +114 -0
- package/.codex/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.codex/skills/openspec-continue-change/SKILL.md +118 -0
- package/.codex/skills/openspec-explore/SKILL.md +290 -0
- package/.codex/skills/openspec-ff-change/SKILL.md +101 -0
- package/.codex/skills/openspec-new-change/SKILL.md +74 -0
- package/.codex/skills/openspec-onboard/SKILL.md +529 -0
- package/.codex/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.codex/skills/openspec-verify-change/SKILL.md +168 -0
- package/.codex/skills/performance-doctor/SKILL.md +627 -0
- package/.codex/skills/progress/SKILL.md +193 -0
- package/.codex/skills/project-navigator/SKILL.md +286 -0
- package/.codex/skills/redis-cache/SKILL.md +829 -0
- package/.codex/skills/scheduled-jobs/SKILL.md +633 -0
- package/.codex/skills/security-guard/SKILL.md +739 -0
- package/.codex/skills/sms-mail/SKILL.md +766 -0
- package/.codex/skills/social-login/SKILL.md +668 -0
- package/.codex/skills/start/SKILL.md +154 -0
- package/.codex/skills/store-pc/SKILL.md +491 -0
- package/.codex/skills/sync/SKILL.md +149 -0
- package/.codex/skills/task-tracker/SKILL.md +307 -0
- package/.codex/skills/tech-decision/SKILL.md +393 -0
- package/.codex/skills/tenant-management/SKILL.md +603 -0
- package/.codex/skills/test-development/SKILL.md +755 -0
- package/.codex/skills/ui-pc/SKILL.md +475 -0
- package/.codex/skills/update-status/SKILL.md +159 -0
- package/.codex/skills/utils-toolkit/SKILL.md +593 -0
- package/.codex/skills/websocket-sse/SKILL.md +716 -0
- package/.codex/skills/workflow-engine/SKILL.md +676 -0
- package/.cursor/agents/code-reviewer.md +139 -0
- package/.cursor/agents/project-manager.md +159 -0
- package/.cursor/commands/opsx-apply.md +152 -0
- package/.cursor/commands/opsx-archive.md +157 -0
- package/.cursor/commands/opsx-bulk-archive.md +242 -0
- package/.cursor/commands/opsx-continue.md +114 -0
- package/.cursor/commands/opsx-explore.md +174 -0
- package/.cursor/commands/opsx-ff.md +94 -0
- package/.cursor/commands/opsx-new.md +69 -0
- package/.cursor/commands/opsx-onboard.md +525 -0
- package/.cursor/commands/opsx-sync.md +134 -0
- package/.cursor/commands/opsx-verify.md +164 -0
- package/.cursor/mcp.json +22 -0
- package/.cursor/skills/add-skill/SKILL.md +352 -0
- package/.cursor/skills/api-development/SKILL.md +560 -0
- package/.cursor/skills/architecture-design/SKILL.md +756 -0
- package/.cursor/skills/backend-annotations/SKILL.md +674 -0
- package/.cursor/skills/banana-image/CHANGELOG.md +37 -0
- package/.cursor/skills/banana-image/README.md +146 -0
- package/.cursor/skills/banana-image/SKILL.md +164 -0
- package/.cursor/skills/banana-image/assets/logo.png +0 -0
- package/.cursor/skills/banana-image/references/advanced-usage.md +189 -0
- package/.cursor/skills/banana-image/scripts/apply_template.py +125 -0
- package/.cursor/skills/banana-image/scripts/banana_image_exec.ts +412 -0
- package/.cursor/skills/banana-image/scripts/batch_prep.py +82 -0
- package/.cursor/skills/banana-image/scripts/package-lock.json +1437 -0
- package/.cursor/skills/banana-image/scripts/package.json +18 -0
- package/.cursor/skills/banana-image/scripts/requirements.txt +10 -0
- package/.cursor/skills/banana-image/templates/poster.json +22 -0
- package/.cursor/skills/banana-image/templates/product.json +17 -0
- package/.cursor/skills/banana-image/templates/social.json +22 -0
- package/.cursor/skills/banana-image/templates/thumbnail.json +17 -0
- package/.cursor/skills/brainstorm/SKILL.md +648 -0
- package/.cursor/skills/bug-detective/SKILL.md +1206 -0
- package/.cursor/skills/code-patterns/SKILL.md +590 -0
- package/.cursor/skills/collaborating-with-codex/SKILL.md +174 -0
- package/.cursor/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
- package/.cursor/skills/collaborating-with-gemini/SKILL.md +194 -0
- package/.cursor/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
- package/.cursor/skills/crud-development/SKILL.md +649 -0
- package/.cursor/skills/data-permission/SKILL.md +599 -0
- package/.cursor/skills/database-ops/SKILL.md +407 -0
- package/.cursor/skills/error-handler/SKILL.md +371 -0
- package/.cursor/skills/file-oss-management/SKILL.md +863 -0
- package/.cursor/skills/git-workflow/SKILL.md +375 -0
- package/.cursor/skills/json-serialization/SKILL.md +357 -0
- package/.cursor/skills/leniu-api-development/SKILL.md +803 -0
- package/.cursor/skills/leniu-architecture-design/SKILL.md +598 -0
- package/.cursor/skills/leniu-backend-annotations/SKILL.md +664 -0
- package/.cursor/skills/leniu-code-patterns/SKILL.md +365 -0
- package/.cursor/skills/leniu-crud-development/SKILL.md +1110 -0
- package/.cursor/skills/leniu-data-permission/SKILL.md +256 -0
- package/.cursor/skills/leniu-database-ops/SKILL.md +426 -0
- package/.cursor/skills/leniu-error-handler/SKILL.md +462 -0
- package/.cursor/skills/leniu-java-amount-handling/SKILL.md +461 -0
- package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
- package/.cursor/skills/leniu-java-concurrent/SKILL.md +400 -0
- package/.cursor/skills/leniu-java-entity/SKILL.md +751 -0
- package/.cursor/skills/leniu-java-export/SKILL.md +560 -0
- package/.cursor/skills/leniu-java-logging/SKILL.md +832 -0
- package/.cursor/skills/leniu-java-mq/SKILL.md +338 -0
- package/.cursor/skills/leniu-java-mybatis/SKILL.md +640 -0
- package/.cursor/skills/leniu-java-report-query-param/SKILL.md +291 -0
- package/.cursor/skills/leniu-java-task/SKILL.md +367 -0
- package/.cursor/skills/leniu-java-total-line/SKILL.md +195 -0
- package/.cursor/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
- package/.cursor/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
- package/.cursor/skills/leniu-mealtime/SKILL.md +215 -0
- package/.cursor/skills/leniu-redis-cache/SKILL.md +316 -0
- package/.cursor/skills/leniu-security-guard/SKILL.md +520 -0
- package/.cursor/skills/leniu-utils-toolkit/SKILL.md +380 -0
- package/.cursor/skills/openspec-apply-change/SKILL.md +156 -0
- package/.cursor/skills/openspec-archive-change/SKILL.md +114 -0
- package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.cursor/skills/openspec-continue-change/SKILL.md +118 -0
- package/.cursor/skills/openspec-explore/SKILL.md +290 -0
- package/.cursor/skills/openspec-ff-change/SKILL.md +101 -0
- package/.cursor/skills/openspec-new-change/SKILL.md +74 -0
- package/.cursor/skills/openspec-onboard/SKILL.md +529 -0
- package/.cursor/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.cursor/skills/openspec-verify-change/SKILL.md +168 -0
- package/.cursor/skills/performance-doctor/SKILL.md +627 -0
- package/.cursor/skills/project-navigator/SKILL.md +305 -0
- package/.cursor/skills/redis-cache/SKILL.md +839 -0
- package/.cursor/skills/scheduled-jobs/SKILL.md +633 -0
- package/.cursor/skills/security-guard/SKILL.md +748 -0
- package/.cursor/skills/sms-mail/SKILL.md +766 -0
- package/.cursor/skills/social-login/SKILL.md +668 -0
- package/.cursor/skills/store-pc/SKILL.md +366 -0
- package/.cursor/skills/task-tracker/SKILL.md +307 -0
- package/.cursor/skills/tech-decision/SKILL.md +393 -0
- package/.cursor/skills/tenant-management/SKILL.md +603 -0
- package/.cursor/skills/test-development/SKILL.md +755 -0
- package/.cursor/skills/ui-pc/SKILL.md +438 -0
- package/.cursor/skills/utils-toolkit/SKILL.md +615 -0
- package/.cursor/skills/websocket-sse/SKILL.md +716 -0
- package/.cursor/skills/workflow-engine/SKILL.md +676 -0
- package/AGENTS.md +669 -0
- package/CLAUDE.md +205 -0
- package/README.md +205 -0
- package/bin/index.js +179 -0
- package/init.sh +178 -0
- package/package.json +27 -0
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm
|
|
3
|
+
description: |
|
|
4
|
+
当需要探索方案、头脑风暴、创意思维时自动使用此 Skill。
|
|
5
|
+
|
|
6
|
+
触发场景:
|
|
7
|
+
- 不知道怎么设计
|
|
8
|
+
- 需要多种方案
|
|
9
|
+
- 创意探索
|
|
10
|
+
- 架构讨论
|
|
11
|
+
- 功能规划
|
|
12
|
+
- 业务扩展
|
|
13
|
+
|
|
14
|
+
触发词:头脑风暴、方案、怎么设计、有什么办法、创意、讨论、探索、想法、建议、怎么做、如何实现、有哪些方式、能不能做、可以实现吗
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 头脑风暴框架
|
|
18
|
+
|
|
19
|
+
## 本项目技术约束(头脑风暴边界)
|
|
20
|
+
|
|
21
|
+
> **重要**:所有方案必须在以下技术栈约束内思考
|
|
22
|
+
|
|
23
|
+
### 后端技术边界(已集成)
|
|
24
|
+
|
|
25
|
+
| 层面 | 已集成技术 | 说明 |
|
|
26
|
+
|------|----------|------|
|
|
27
|
+
| **框架** | Spring Boot 3.5.9 | 核心框架 |
|
|
28
|
+
| **ORM** | MyBatis-Plus 3.5.16 | 数据持久层 |
|
|
29
|
+
| **缓存** | Redis + Redisson | 分布式缓存(Caffeine 本地缓存)|
|
|
30
|
+
| **消息** | Redis Streams | 轻量消息队列 |
|
|
31
|
+
| **定时** | SnailJob + @Scheduled | 分布式定时任务 |
|
|
32
|
+
| **认证** | Sa-Token 1.44.0 | 权限与认证 |
|
|
33
|
+
| **实时通信** | WebSocket + SSE | 实时推送(已集成) |
|
|
34
|
+
| **文件存储** | AWS S3 SDK | 对象存储(MinIO 兼容) |
|
|
35
|
+
| **数据加密** | AES/RSA | 字段级加密 |
|
|
36
|
+
| **短信** | SMS4j | 多平台短信 |
|
|
37
|
+
| **邮件** | Spring Mail | 邮件发送 |
|
|
38
|
+
| **第三方登录** | JustAuth | OAuth2(30+ 平台) |
|
|
39
|
+
| **Excel** | FastExcel | 导入导出 |
|
|
40
|
+
|
|
41
|
+
### 自行扩展的技术(框架未集成)
|
|
42
|
+
|
|
43
|
+
| 技术 | 使用场景 | 集成指南 |
|
|
44
|
+
|------|---------|---------|
|
|
45
|
+
| **RocketMQ** | 高吞吐消息队列、分布式事务 | 复杂业务场景自行引入 |
|
|
46
|
+
| **MQTT** | 物联网设备通信 | IoT 场景使用 mica-mqtt |
|
|
47
|
+
| **PostgreSQL/Oracle/SQL Server** | 多数据库支持 | SQL 脚本适配四个数据库版本 |
|
|
48
|
+
| **LangChain4j** | AI 大模型集成 | 需自行引入依赖 |
|
|
49
|
+
| **支付模块** | 微信/支付宝支付 | 需自行开发或引入第三方 |
|
|
50
|
+
|
|
51
|
+
### 可扩展的 Common 模块(24个)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
核心: core, web, security, log, doc, bom
|
|
55
|
+
数据: mybatis, redis, json, encrypt, sensitive, oss, excel
|
|
56
|
+
认证: satoken, tenant, social
|
|
57
|
+
通信: mail, sms, websocket, sse
|
|
58
|
+
业务: job(SnailJob), idempotent, ratelimiter, translation
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 思维模式
|
|
64
|
+
|
|
65
|
+
### 发散思维 - 尽可能多的方案
|
|
66
|
+
|
|
67
|
+
1. **不评判**: 先不考虑可行性,尽可能多地列出想法
|
|
68
|
+
2. **联想**: 从一个想法延伸到相关想法
|
|
69
|
+
3. **模块复用**: 能否用现有 24 个 common 模块解决?
|
|
70
|
+
4. **跨界借鉴**: 其他系统怎么做的?
|
|
71
|
+
5. **反向思考**: 如果要让问题更糟,会怎么做?反过来就是解决方案
|
|
72
|
+
|
|
73
|
+
### 收敛思维 - 筛选最优方案
|
|
74
|
+
|
|
75
|
+
1. **复用优先**: 能否复用现有模块/代码?
|
|
76
|
+
2. **可行性**: 在现有技术栈内能否实现?
|
|
77
|
+
3. **多端一致**: 是否需要 PC 端和移动端同时支持?
|
|
78
|
+
4. **多租户兼容**: 是否支持多租户数据隔离?
|
|
79
|
+
5. **多数据库**: 是否需要兼容 MySQL/Oracle/PostgreSQL/SQL Server?
|
|
80
|
+
6. **成本**: 开发时间和复杂度如何?
|
|
81
|
+
7. **风险**: 有什么潜在问题?
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 本项目专属决策维度
|
|
86
|
+
|
|
87
|
+
### 必须考虑的 5 个维度
|
|
88
|
+
|
|
89
|
+
| 维度 | 问题 | 实现要点 |
|
|
90
|
+
|------|------|---------|
|
|
91
|
+
| **三层架构** | 如何分层设计? | Controller → Service → Mapper(无 DAO 层,Service 直接调用 Mapper) |
|
|
92
|
+
| **模块划分** | 属于哪个模块? | sys/demo/wf(标准)或 b/m/iot/crm(业务)|
|
|
93
|
+
| **多租户** | 数据需要租户隔离吗? | Entity 继承 TenantEntity,自动 SQL 过滤 |
|
|
94
|
+
| **多端支持** | PC 端、移动端都需要吗? | 同一套 API,按需扩展前端 |
|
|
95
|
+
| **多数据库** | 需要兼容多个数据库吗? | SQL 脚本同步 4 个数据库文件 |
|
|
96
|
+
|
|
97
|
+
### 方案评估矩阵(本项目版)
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
| 方案 | 复用度(25%) | 多端(20%) | 多租户(20%) | 多数据库(15%) | 开发量(20%) | 总分 |
|
|
101
|
+
|------|-------------|-----------|-------------|---------------|-------------|------|
|
|
102
|
+
| 方案A | 9 | 8 | 10 | 10 | 7 | 8.65 |
|
|
103
|
+
| 方案B | 6 | 10 | 10 | 8 | 8 | 8.30 |
|
|
104
|
+
| 方案C | 10 | 6 | 8 | 6 | 9 | 8.00 |
|
|
105
|
+
|
|
106
|
+
评分说明:1-10分,分数越高越好
|
|
107
|
+
- 复用度:能复用多少现有代码/模块
|
|
108
|
+
- 多端:PC端和移动端支持程度
|
|
109
|
+
- 多租户:租户隔离支持程度
|
|
110
|
+
- 多数据库:跨数据库兼容性
|
|
111
|
+
- 开发量:开发工作量(分数越高=工作量越少)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 方案探索模板
|
|
117
|
+
|
|
118
|
+
### 1. 问题定义(本项目版)
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
## 问题描述
|
|
122
|
+
|
|
123
|
+
### 基本信息
|
|
124
|
+
- **是什么**: [具体描述要实现的功能]
|
|
125
|
+
- **为什么重要**: [业务价值]
|
|
126
|
+
- **当前状态**: [现有系统如何处理/有无类似功能]
|
|
127
|
+
- **期望结果**: [希望达到的效果]
|
|
128
|
+
|
|
129
|
+
### 本项目约束
|
|
130
|
+
- **模块归属**: base / mall / crm / iot / 新模块
|
|
131
|
+
- **端支持**: PC端 / 移动端 / 两者都需要
|
|
132
|
+
- **租户**: 需要租户隔离 / 不需要(系统级)
|
|
133
|
+
- **数据库**: 只支持 MySQL / 需要多数据库兼容
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 2. 可复用资源盘点
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
## 现有资源
|
|
140
|
+
|
|
141
|
+
### 可复用的 Common 模块
|
|
142
|
+
| 模块 | 是否可用 | 用途 |
|
|
143
|
+
|------|---------|------|
|
|
144
|
+
| ruoyi-common-redis | ✅ | 缓存、分布式锁 |
|
|
145
|
+
| ruoyi-common-websocket | ❓ | 实时推送 |
|
|
146
|
+
| ruoyi-common-encrypt | ❓ | 密钥加密存储 |
|
|
147
|
+
| ... | | |
|
|
148
|
+
|
|
149
|
+
### 可参考的现有功能
|
|
150
|
+
| 功能 | 位置 | 可复用部分 |
|
|
151
|
+
|------|------|-----------|
|
|
152
|
+
| 广告管理 | base/Ad | 完整 CRUD 模板 |
|
|
153
|
+
| 平台配置 | base/Platform | 配置管理模式 |
|
|
154
|
+
| 订阅消息 | api/app/Subscribe | 微信消息模板 |
|
|
155
|
+
| ... | | |
|
|
156
|
+
|
|
157
|
+
### 需要新开发的部分
|
|
158
|
+
- [ ] [需要开发的内容]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 3. 方案列举
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
## 可能方案
|
|
165
|
+
|
|
166
|
+
### 方案 A: 最大复用(推荐优先考虑)
|
|
167
|
+
- **描述**: 基于现有模块组合实现
|
|
168
|
+
- **复用**: [列出复用的模块/代码]
|
|
169
|
+
- **新开发**: [列出必须新写的部分]
|
|
170
|
+
- **优点**: 开发快、稳定性高
|
|
171
|
+
- **缺点**: [可能的限制]
|
|
172
|
+
|
|
173
|
+
### 方案 B: 适度扩展
|
|
174
|
+
- **描述**: 在现有基础上扩展新功能
|
|
175
|
+
- **复用**: [列出复用的模块/代码]
|
|
176
|
+
- **新开发**: [列出必须新写的部分]
|
|
177
|
+
- **优点**: 平衡复用与定制
|
|
178
|
+
- **缺点**: [可能的限制]
|
|
179
|
+
|
|
180
|
+
### 方案 C: 全新开发
|
|
181
|
+
- **描述**: 从零开始实现
|
|
182
|
+
- **复用**: 仅复用基础框架
|
|
183
|
+
- **新开发**: 全部业务逻辑
|
|
184
|
+
- **优点**: 完全定制、无历史包袱
|
|
185
|
+
- **缺点**: 开发量大、风险高
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 4. 推荐方案
|
|
189
|
+
|
|
190
|
+
```markdown
|
|
191
|
+
## 推荐方案
|
|
192
|
+
|
|
193
|
+
**推荐**: 方案 [X]
|
|
194
|
+
|
|
195
|
+
**理由**:
|
|
196
|
+
1. 复用了 [xxx] 模块,减少 [xx%] 开发量
|
|
197
|
+
2. 完全支持多租户/多端/多数据库
|
|
198
|
+
3. [其他理由]
|
|
199
|
+
|
|
200
|
+
**实施步骤**:
|
|
201
|
+
1. [ ] 数据库设计 → 使用 `/crud` 或 `database-ops` Skill
|
|
202
|
+
2. [ ] 后端开发 → 使用 `crud-development` Skill
|
|
203
|
+
3. [ ] PC 前端 → 使用 `ui-pc` Skill
|
|
204
|
+
4. [ ] 测试验证
|
|
205
|
+
|
|
206
|
+
**风险点**:
|
|
207
|
+
- [风险1] → 应对策略
|
|
208
|
+
- [风险2] → 应对策略
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 本项目典型业务场景
|
|
214
|
+
|
|
215
|
+
### 场景 1:新增业务管理模块
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
需求:新增"优惠券管理"功能
|
|
219
|
+
|
|
220
|
+
头脑风暴:
|
|
221
|
+
├── 模块归属
|
|
222
|
+
│ ├── mall(商城相关)✅ 推荐
|
|
223
|
+
│ ├── base(基础业务)
|
|
224
|
+
│ └── 新建 coupon 子模块
|
|
225
|
+
│
|
|
226
|
+
├── 功能拆解
|
|
227
|
+
│ ├── 优惠券模板管理(后台配置)
|
|
228
|
+
│ ├── 优惠券发放(手动/自动/领取)
|
|
229
|
+
│ ├── 优惠券使用(订单抵扣)
|
|
230
|
+
│ └── 优惠券统计(使用率/核销率)
|
|
231
|
+
│
|
|
232
|
+
├── 可复用
|
|
233
|
+
│ ├── Ad 模块 → 完整 CRUD 模板
|
|
234
|
+
│ ├── ruoyi-common-redis → 库存扣减分布式锁
|
|
235
|
+
│ ├── SnailJob → 过期自动作废任务
|
|
236
|
+
│ └── 字典管理 → 券类型/状态字典
|
|
237
|
+
│
|
|
238
|
+
└── 技术方案
|
|
239
|
+
├── 三层架构:Controller → Service → Mapper
|
|
240
|
+
├── 表设计:m_coupon_template, m_coupon_record
|
|
241
|
+
├── Service 层:buildQueryWrapper() 查询构建
|
|
242
|
+
└── PC 端:管理员配置和审核页面
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 场景 2:接入第三方服务
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
需求:接入物流查询功能
|
|
249
|
+
|
|
250
|
+
头脑风暴:
|
|
251
|
+
├── 方案选择
|
|
252
|
+
│ ├── 方案 A:使用快递100 API
|
|
253
|
+
│ ├── 方案 B:使用快递鸟 API
|
|
254
|
+
│ └── 方案 C:自建物流爬虫(不推荐)
|
|
255
|
+
│
|
|
256
|
+
├── 可复用
|
|
257
|
+
│ ├── ruoyi-common-encrypt → 密钥加密存储
|
|
258
|
+
│ ├── ruoyi-common-redis → 结果缓存(5分钟)
|
|
259
|
+
│ ├── Spring RestTemplate → HTTP 客户端调用
|
|
260
|
+
│ └── Platform 模块 → 配置存储模式
|
|
261
|
+
│
|
|
262
|
+
├── 实现方式
|
|
263
|
+
│ ├── 新建 LogisticsService 接口
|
|
264
|
+
│ ├── 实现 Kuaidi100LogisticsImpl
|
|
265
|
+
│ ├── 支持后续扩展其他供应商(策略模式)
|
|
266
|
+
│ └── 配置项存入 sys_config 表或独立配置表
|
|
267
|
+
│
|
|
268
|
+
└── 注意事项
|
|
269
|
+
├── API 密钥加密存储(ruoyi-common-encrypt)
|
|
270
|
+
├── 调用频率限制(@RateLimiter 注解)
|
|
271
|
+
├── 查询结果缓存(Redis)
|
|
272
|
+
└── 失败降级处理(重试 + 异常日志)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 场景 3:实时通信需求
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
需求:实现消息实时推送
|
|
279
|
+
|
|
280
|
+
头脑风暴:
|
|
281
|
+
├── 技术选型
|
|
282
|
+
│ ├── WebSocket(ruoyi-common-websocket,已集成)✅ 首选
|
|
283
|
+
│ │ └── 适用:聊天、通知、状态同步、双向通信
|
|
284
|
+
│ ├── SSE(ruoyi-common-sse,已集成)
|
|
285
|
+
│ │ └── 适用:服务端单向推送、简单场景
|
|
286
|
+
│ └── 轮询(不推荐)
|
|
287
|
+
│ └── 原因:浪费资源、延迟高
|
|
288
|
+
│
|
|
289
|
+
├── 消息分类
|
|
290
|
+
│ ├── 系统通知 → 广播(发送所有连接)
|
|
291
|
+
│ ├── 个人消息 → 点对点(发送特定用户)
|
|
292
|
+
│ ├── 群组消息 → 组播(发送特定群组)
|
|
293
|
+
│ └── 订单状态 → 主题订阅(发布-订阅模式)
|
|
294
|
+
│
|
|
295
|
+
└── 可复用
|
|
296
|
+
├── ruoyi-common-websocket → 完整的 WebSocket 支持
|
|
297
|
+
├── ruoyi-common-redis → 在线状态/消息队列(多实例同步)
|
|
298
|
+
└── 现有 WebSocket 示例代码 → 参考实现
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### 场景 4:支付功能扩展
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
需求:增加支付方式
|
|
305
|
+
|
|
306
|
+
头脑风暴:
|
|
307
|
+
├── 支付模块现状(框架未内置,需自行开发)
|
|
308
|
+
│ ├── 方案 A:使用 IJPay(开源支付 SDK)自行集成
|
|
309
|
+
│ ├── 方案 B:使用 YunGouOS 等聚合支付平台
|
|
310
|
+
│ └── 方案 C:直接对接微信/支付宝官方 SDK
|
|
311
|
+
│
|
|
312
|
+
├── 需要自行开发的功能
|
|
313
|
+
│ ├── 支付配置管理(各租户独立密钥)
|
|
314
|
+
│ ├── 支付订单表设计(支付流水、对账)
|
|
315
|
+
│ ├── 回调通知处理(幂等 + 签名验证)
|
|
316
|
+
│ └── 退款与对账(定时任务自动对账)
|
|
317
|
+
│
|
|
318
|
+
├── 可复用的框架能力
|
|
319
|
+
│ ├── ruoyi-common-encrypt → API 密钥加密存储
|
|
320
|
+
│ ├── ruoyi-common-redis → 支付幂等(分布式锁)
|
|
321
|
+
│ ├── SnailJob → 定时对账任务
|
|
322
|
+
│ └── ruoyi-common-idempotent → 防重复支付
|
|
323
|
+
│
|
|
324
|
+
└── 注意事项
|
|
325
|
+
├── 多租户支付配置隔离(各租户独立密钥)
|
|
326
|
+
├── 支付安全(签名验证、HTTPS)
|
|
327
|
+
├── 回调可靠性(幂等 + 重试机制)
|
|
328
|
+
└── 资金安全(事务一致性 + 对账)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 场景 5:数据统计需求
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
需求:业务数据统计报表
|
|
335
|
+
|
|
336
|
+
头脑风暴:
|
|
337
|
+
├── 统计维度
|
|
338
|
+
│ ├── 时间维度:日/周/月/年/自定义范围
|
|
339
|
+
│ ├── 租户维度:单租户/全平台
|
|
340
|
+
│ ├── 业务维度:订单/用户/商品/支付等
|
|
341
|
+
│ └── 对比维度:同比/环比/增长率
|
|
342
|
+
│
|
|
343
|
+
├── 实现方案(按优先级)
|
|
344
|
+
│ ├── 方案 A:实时查询(小数据量 < 100万)
|
|
345
|
+
│ ├── 方案 B:预计算 + 缓存(中数据量,推荐)✅
|
|
346
|
+
│ └── 方案 C:分析引擎(大数据量,可选)
|
|
347
|
+
│
|
|
348
|
+
├── 可复用
|
|
349
|
+
│ ├── StatisticsController → 统计 API 模板(参考实现)
|
|
350
|
+
│ ├── FastExcel(已集成)→ Excel 导出功能
|
|
351
|
+
│ ├── SnailJob(已集成)→ 定时预计算任务
|
|
352
|
+
│ └── ruoyi-common-redis(已集成)→ 统计结果缓存
|
|
353
|
+
│
|
|
354
|
+
└── 数据库优化
|
|
355
|
+
├── 统计表设计(星型模型或雪花模型)
|
|
356
|
+
├── 索引优化(时间、租户、业务字段)
|
|
357
|
+
├── 分区表设计(按时间分区)
|
|
358
|
+
└── 副本/只读从库(大查询避免业务库)
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 场景 6:AI 功能集成
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
需求:增加 AI 辅助功能
|
|
365
|
+
|
|
366
|
+
头脑风暴:
|
|
367
|
+
├── 需要自行集成(框架未内置)
|
|
368
|
+
│ ├── LangChain4j → 需自行引入 Maven 依赖
|
|
369
|
+
│ ├── SSE(已集成)→ 流式响应支持
|
|
370
|
+
│ └── Redis 缓存 → 会话上下文存储
|
|
371
|
+
│
|
|
372
|
+
├── 应用方向(选 2-3 个)
|
|
373
|
+
│ ├── 智能客服(多轮对话、FAQ)
|
|
374
|
+
│ ├── 内容生成(文案、总结、翻译)
|
|
375
|
+
│ ├── 数据分析(自然语言 SQL 查询)
|
|
376
|
+
│ ├── 代码生成(API 文档生成)
|
|
377
|
+
│ └── 知识库问答(RAG 系统)
|
|
378
|
+
│
|
|
379
|
+
├── 模型选择
|
|
380
|
+
│ ├── ChatGPT(OpenAI,国际)
|
|
381
|
+
│ ├── DeepSeek(国产,便宜)✅ 推荐
|
|
382
|
+
│ ├── 通义千问(阿里云)
|
|
383
|
+
│ ├── 文心一言(百度)
|
|
384
|
+
│ └── Claude API(性能最好)
|
|
385
|
+
│
|
|
386
|
+
├── 需要自行开发的模块
|
|
387
|
+
│ ├── ChatSessionEntity → 会话表
|
|
388
|
+
│ ├── ChatMessageEntity → 消息表
|
|
389
|
+
│ ├── AiService → AI 调用服务
|
|
390
|
+
│ └── AiModelConfig → 模型配置管理
|
|
391
|
+
│
|
|
392
|
+
└── 实现要点
|
|
393
|
+
├── 流式响应(使用 SSE,已集成)
|
|
394
|
+
├── 上下文管理(Redis 存储)
|
|
395
|
+
├── Token 计费与统计
|
|
396
|
+
├── 敏感词/内容过滤
|
|
397
|
+
├── 多模型支持(策略模式)
|
|
398
|
+
└── 错误重试与降级
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## 创意激发技巧(本项目版)
|
|
404
|
+
|
|
405
|
+
### 1. 模块组合法
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
问题:如何实现活动抽奖功能?
|
|
409
|
+
|
|
410
|
+
模块组合:
|
|
411
|
+
├── ruoyi-common-redis → 库存/次数控制
|
|
412
|
+
├── ruoyi-common-ratelimiter → 防刷
|
|
413
|
+
├── ruoyi-common-idempotent → 防重复
|
|
414
|
+
├── ruoyi-common-websocket → 实时开奖
|
|
415
|
+
├── ruoyi-common-job → 定时开奖
|
|
416
|
+
└── 现有订单流程 → 奖品发放
|
|
417
|
+
|
|
418
|
+
组合方案:
|
|
419
|
+
1. 活动配置(参考 Ad 模块)
|
|
420
|
+
2. 抽奖服务(Redis Lua 脚本原子操作)
|
|
421
|
+
3. 中奖记录(标准 CRUD)
|
|
422
|
+
4. 奖品发放(复用订单流程)
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### 2. 现有功能类比法
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
问题:如何实现预约功能?
|
|
429
|
+
|
|
430
|
+
类比分析:
|
|
431
|
+
├── 类似订单 → 创建、状态流转、取消
|
|
432
|
+
├── 类似活动 → 时间段、名额限制
|
|
433
|
+
└── 类似秒杀 → 库存控制、并发处理
|
|
434
|
+
|
|
435
|
+
复用点:
|
|
436
|
+
├── 订单状态机 → 预约状态流转
|
|
437
|
+
├── 库存扣减逻辑 → 名额控制
|
|
438
|
+
├── 支付流程 → 预约押金
|
|
439
|
+
└── 消息通知 → 预约提醒
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 3. 端优先思考法
|
|
443
|
+
|
|
444
|
+
```
|
|
445
|
+
问题:功能应该在哪个端实现?
|
|
446
|
+
|
|
447
|
+
决策树:
|
|
448
|
+
├── 管理操作(配置、审核)→ PC 端
|
|
449
|
+
├── 用户操作(下单、查看)→ 移动端
|
|
450
|
+
├── 实时展示(监控、大屏)→ PC 端
|
|
451
|
+
└── 高频操作(签到、扫码)→ 移动端
|
|
452
|
+
|
|
453
|
+
多端同步考虑:
|
|
454
|
+
├── 数据实时性 → WebSocket
|
|
455
|
+
├── 操作幂等性 → Redis 分布式锁
|
|
456
|
+
└── 状态一致性 → 事件驱动
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### 4. 多租户思考法
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
问题:功能是否需要租户隔离?
|
|
463
|
+
|
|
464
|
+
判断标准:
|
|
465
|
+
├── 租户私有数据 → 必须隔离
|
|
466
|
+
│ └── 用户、订单、商品、配置
|
|
467
|
+
├── 平台公共数据 → 不需要隔离
|
|
468
|
+
│ └── 字典、地区、系统配置
|
|
469
|
+
└── 混合数据 → 条件隔离
|
|
470
|
+
└── 模板(平台模板 + 租户模板)
|
|
471
|
+
|
|
472
|
+
实现方式:
|
|
473
|
+
├── Entity 继承 TenantEntity
|
|
474
|
+
├── 自动 SQL 过滤
|
|
475
|
+
└── 租户配置表设计
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## 讨论引导问题(本项目版)
|
|
481
|
+
|
|
482
|
+
### 功能规划时
|
|
483
|
+
|
|
484
|
+
1. **复用视角**
|
|
485
|
+
- 有没有类似的现有功能?
|
|
486
|
+
- 能复用哪些 common 模块?
|
|
487
|
+
- 需要新开发多少代码?
|
|
488
|
+
|
|
489
|
+
2. **多端视角**
|
|
490
|
+
- PC 端需要什么?
|
|
491
|
+
- 移动端需要什么?
|
|
492
|
+
- 两端数据如何同步?
|
|
493
|
+
|
|
494
|
+
3. **多租户视角**
|
|
495
|
+
- 数据需要租户隔离吗?
|
|
496
|
+
- 配置是租户级还是系统级?
|
|
497
|
+
- 不同租户能定制吗?
|
|
498
|
+
|
|
499
|
+
4. **技术视角**
|
|
500
|
+
- 现有技术栈能实现吗?
|
|
501
|
+
- 需要引入新技术吗?
|
|
502
|
+
- 有没有性能瓶颈?
|
|
503
|
+
|
|
504
|
+
### 方案选择时
|
|
505
|
+
|
|
506
|
+
1. **短期 vs 长期**
|
|
507
|
+
- 快速上线重要还是可扩展重要?
|
|
508
|
+
- 以后可能怎么扩展?
|
|
509
|
+
|
|
510
|
+
2. **简单 vs 完整**
|
|
511
|
+
- MVP 版本包含什么?
|
|
512
|
+
- 完整版本还需要什么?
|
|
513
|
+
|
|
514
|
+
3. **风险评估**
|
|
515
|
+
- 最大的技术风险是什么?
|
|
516
|
+
- 最大的业务风险是什么?
|
|
517
|
+
- 如何降低风险?
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
## 与其他 Skill 联动
|
|
522
|
+
|
|
523
|
+
> **注意**:本项目是纯后端项目。前端开发(PC 端)在分离的项目中进行:
|
|
524
|
+
> - **PC 端前端**:`plus-ui` 项目(Vue 3 + Element Plus)
|
|
525
|
+
|
|
526
|
+
### 后端开发的 Skill 联动路径
|
|
527
|
+
|
|
528
|
+
```
|
|
529
|
+
brainstorm(本 Skill)
|
|
530
|
+
↓ 确定方案后
|
|
531
|
+
│
|
|
532
|
+
├── 需要建表 → database-ops
|
|
533
|
+
│ └── 设计数据库结构、建立多库支持
|
|
534
|
+
│
|
|
535
|
+
├── 需要后端开发 → crud-development
|
|
536
|
+
│ ├── 生成 CRUD 代码
|
|
537
|
+
│ ├── 实现 Service 与 DAO
|
|
538
|
+
│ └── 需要高级注解 → security-guard/data-permission/error-handler
|
|
539
|
+
│
|
|
540
|
+
├── 需要定时任务 → 使用 SnailJob(已集成)或 @Scheduled
|
|
541
|
+
│ └── 参考:SnailJob 管理后台配置
|
|
542
|
+
│
|
|
543
|
+
├── 需要 WebSocket/SSE → 使用已集成的 ruoyi-common-websocket
|
|
544
|
+
│ └── 参考:WebSocket 消息推送示例
|
|
545
|
+
│
|
|
546
|
+
├── 需要支付接入 → 自行开发(框架未内置支付模块)
|
|
547
|
+
│ └── 推荐使用 IJPay 等开源 SDK,参考场景 4 的方案
|
|
548
|
+
│
|
|
549
|
+
├── 需要微信功能 → social-login(第三方登录部分)
|
|
550
|
+
│ └── JustAuth 已集成微信登录;小程序/公众号功能需自行开发
|
|
551
|
+
│
|
|
552
|
+
├── 需要 AI 功能 → 需自行集成 LangChain4j(框架未内置)
|
|
553
|
+
│ └── 参考场景 6:引入 Maven 依赖,配合 SSE 实现流式响应
|
|
554
|
+
│
|
|
555
|
+
└── 需要技术方案对比 → tech-decision
|
|
556
|
+
└── 缓存、消息队列、实时通信等技术选型
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
### 快速触发其他后端 Skill
|
|
560
|
+
|
|
561
|
+
| 头脑风暴结论 | 下一步 Skill | 触发方式 |
|
|
562
|
+
|-------------|-------------|---------|
|
|
563
|
+
| 需要新建业务模块 | crud-development | "帮我开发 xxx 模块" |
|
|
564
|
+
| 需要数据库设计 | database-ops | "帮我设计 xxx 表" |
|
|
565
|
+
| 需要安全认证 | security-guard | "怎么控制权限访问" |
|
|
566
|
+
| 需要数据权限 | data-permission | "怎么按部门/租户隔离数据" |
|
|
567
|
+
| 需要异常处理 | error-handler | "怎么规范异常处理" |
|
|
568
|
+
| 需要接入支付 | 自行开发(参考场景 4) | "帮我接入 xxx 支付" |
|
|
569
|
+
| 需要技术对比 | tech-decision | "Redis 还是本地缓存好" |
|
|
570
|
+
| 需要代码规范 | code-patterns | "怎么写代码规范" |
|
|
571
|
+
|
|
572
|
+
### 前端开发联系
|
|
573
|
+
|
|
574
|
+
当完成后端 API 开发后,前端团队可以:
|
|
575
|
+
- **PC 端开发**:参考对应 `plus-ui` 项目的 Skill 指南
|
|
576
|
+
|
|
577
|
+
前端调用后端 API,确保数据一致性。
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
## 头脑风暴输出模板
|
|
582
|
+
|
|
583
|
+
### 完整输出格式
|
|
584
|
+
|
|
585
|
+
```markdown
|
|
586
|
+
# [功能名称] 方案设计
|
|
587
|
+
|
|
588
|
+
## 1. 问题定义
|
|
589
|
+
- 需求描述:[xxx]
|
|
590
|
+
- 业务价值:[xxx]
|
|
591
|
+
- 模块归属:[base/mall/crm/iot]
|
|
592
|
+
- 端支持:[PC/移动端/两者]
|
|
593
|
+
|
|
594
|
+
## 2. 可复用资源
|
|
595
|
+
| 资源 | 类型 | 复用程度 |
|
|
596
|
+
|------|------|---------|
|
|
597
|
+
| ruoyi-common-xxx | 模块 | 完全复用 |
|
|
598
|
+
| Xxx 功能 | 代码 | 参考模式 |
|
|
599
|
+
|
|
600
|
+
## 3. 方案对比
|
|
601
|
+
| 维度 | 方案 A | 方案 B |
|
|
602
|
+
|------|-------|-------|
|
|
603
|
+
| 复用度 | 高 | 中 |
|
|
604
|
+
| 开发量 | 小 | 中 |
|
|
605
|
+
| 扩展性 | 中 | 高 |
|
|
606
|
+
|
|
607
|
+
## 4. 推荐方案
|
|
608
|
+
**方案 A** - [理由]
|
|
609
|
+
|
|
610
|
+
## 5. 实施步骤
|
|
611
|
+
1. [ ] xxx
|
|
612
|
+
2. [ ] xxx
|
|
613
|
+
3. [ ] xxx
|
|
614
|
+
|
|
615
|
+
## 6. 风险与应对
|
|
616
|
+
| 风险 | 应对策略 |
|
|
617
|
+
|------|---------|
|
|
618
|
+
| xxx | xxx |
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## 常见问题快速决策
|
|
624
|
+
|
|
625
|
+
| 问题 | 推荐方案 | 原因 |
|
|
626
|
+
|------|---------|------|
|
|
627
|
+
| 新功能放哪个模块? | 看业务相关性 | base=基础、mall=商城、crm=客户、iot=设备、sys=系统 |
|
|
628
|
+
| 需要新建 common 模块吗? | 通常不需要 | 20+ 个模块覆盖大部分场景 |
|
|
629
|
+
| 用 WebSocket 还是 SSE? | WebSocket | 双向通信、已有封装、推荐优先 |
|
|
630
|
+
| 用 RocketMQ 还是 Redis? | Redis 优先 | Redis Streams 简单场景够用,复杂再用 MQ |
|
|
631
|
+
| 要不要支持多数据库? | 是 | 项目标准要求、SQL 脚本需同步 4 个库 |
|
|
632
|
+
| 要不要支持多租户? | 业务数据要 | 继承 TenantEntity 自动隔离 |
|
|
633
|
+
| PC 和移动端用同一个 API? | 是 | 统一后端,按需扩展(分离项目维护) |
|
|
634
|
+
| 定时任务用什么? | 看复杂度 | 简单→@Scheduled,复杂/分布式→SnailJob |
|
|
635
|
+
| 文件上传用什么存储? | AWS S3 SDK | 已集成、支持 MinIO 自建 |
|
|
636
|
+
| 需要权限控制吗? | 是 | Sa-Token 框架标准、@SaCheckPermission |
|
|
637
|
+
| 怎么处理敏感数据? | 字段级加密 | ruoyi-common-encrypt、@EncryptField |
|
|
638
|
+
| 需要操作日志吗? | 是 | @Log 注解、ruoyi-common-log |
|
|
639
|
+
| 接口频率限制怎么做? | @RateLimiter | ruoyi-common-ratelimiter |
|
|
640
|
+
| 防重复提交怎么处理? | @RepeatSubmit | ruoyi-common-idempotent、Redis 分布式锁 |
|
|
641
|
+
| 短信通知怎么发? | SMS4j | 已集成、支持多平台(阿里云/腾讯/华为) |
|
|
642
|
+
| 邮件通知怎么发? | Spring Mail | 已集成、支持 SMTP |
|
|
643
|
+
| 第三方登录用什么? | JustAuth | 已集成、支持 30+ 平台 |
|
|
644
|
+
| 数据导出用什么? | FastExcel | 已集成、性能优于 EasyExcel |
|
|
645
|
+
| 需要 AI 功能吗? | LangChain4j | 需自行引入依赖、支持多模型 |
|
|
646
|
+
| 国际化翻译怎么做? | ruoyi-common-translation | 已集成、i18n 消息 |
|
|
647
|
+
| 分布式锁怎么选? | Redisson | 基于 Redis、已集成 |
|
|
648
|
+
| 缓存布隆过滤器? | Redisson BloomFilter | 防缓存穿透 |
|