@llryiop/avatar-boot-cli 1.0.1 → 1.0.2

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 (66) hide show
  1. package/docs/exam-question-generate-api.md +163 -0
  2. package/package.json +1 -1
  3. package/src/prompts.js +3 -3
  4. package/src/transform.js +1 -1
  5. package/templates/.claude/skills/avatar-boot-starter-feign/README.md +243 -0
  6. package/templates/.claude/skills/avatar-boot-starter-feign/SKILL.md +47 -219
  7. package/templates/.claude/skills/avatar-boot-starter-feign/references//345/212/237/350/203/275/350/257/246/350/247/243.md +65 -0
  8. package/templates/.claude/skills/avatar-boot-starter-feign/references//345/277/253/351/200/237/346/216/245/345/205/245/346/214/207/345/215/227.md +75 -0
  9. package/templates/.claude/skills/avatar-boot-starter-feign/references//351/205/215/347/275/256/345/217/202/350/200/203.md +70 -0
  10. package/templates/.claude/skills/avatar-boot-starter-job/README.md +437 -0
  11. package/templates/.claude/skills/avatar-boot-starter-job/SKILL.md +35 -414
  12. package/templates/.claude/skills/avatar-boot-starter-job/references//345/270/270/350/247/201/351/227/256/351/242/230.md +55 -0
  13. package/templates/.claude/skills/avatar-boot-starter-job/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +124 -0
  14. package/templates/.claude/skills/avatar-boot-starter-job/references//347/233/221/346/216/247/346/214/207/346/240/207.md +72 -0
  15. package/templates/.claude/skills/avatar-boot-starter-kafka/README.md +580 -0
  16. package/templates/.claude/skills/avatar-boot-starter-kafka/SKILL.md +36 -560
  17. package/templates/.claude/skills/avatar-boot-starter-kafka/references//346/234/200/344/275/263/345/256/236/350/267/265.md +43 -0
  18. package/templates/.claude/skills/avatar-boot-starter-kafka/references//346/240/270/345/277/203/345/212/237/350/203/275.md +117 -0
  19. package/templates/.claude/skills/avatar-boot-starter-kafka/references//351/205/215/347/275/256/345/217/202/350/200/203.md +54 -0
  20. package/templates/.claude/skills/avatar-boot-starter-mysql/README.md +572 -0
  21. package/templates/.claude/skills/avatar-boot-starter-mysql/SKILL.md +40 -550
  22. package/templates/.claude/skills/avatar-boot-starter-mysql/references//345/256/236/344/275/223/344/270/216/345/212/237/350/203/275.md +96 -0
  23. package/templates/.claude/skills/avatar-boot-starter-mysql/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/346/225/260/346/215/256/346/272/220.md +91 -0
  24. package/templates/.claude/skills/avatar-boot-starter-mysql/references//351/253/230/347/272/247/347/211/271/346/200/247/344/270/216/351/205/215/347/275/256.md +59 -0
  25. package/templates/.claude/skills/avatar-boot-starter-nacos/README.md +901 -0
  26. package/templates/.claude/skills/avatar-boot-starter-nacos/SKILL.md +40 -879
  27. package/templates/.claude/skills/avatar-boot-starter-nacos/references//345/212/237/350/203/275/344/275/277/347/224/250.md +134 -0
  28. package/templates/.claude/skills/avatar-boot-starter-nacos/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +96 -0
  29. package/templates/.claude/skills/avatar-boot-starter-nacos/references//346/225/205/351/232/234/346/216/222/346/237/245.md +64 -0
  30. package/templates/.claude/skills/avatar-boot-starter-oss/README.md +594 -0
  31. package/templates/.claude/skills/avatar-boot-starter-oss/SKILL.md +52 -570
  32. package/templates/.claude/skills/avatar-boot-starter-oss/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +77 -0
  33. package/templates/.claude/skills/avatar-boot-starter-oss/references//346/240/270/345/277/203/345/212/237/350/203/275.md +94 -0
  34. package/templates/.claude/skills/avatar-boot-starter-oss/references//350/247/204/350/214/203/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.md +61 -0
  35. package/templates/.claude/skills/avatar-boot-starter-redis/README.md +586 -0
  36. package/templates/.claude/skills/avatar-boot-starter-redis/SKILL.md +42 -566
  37. package/templates/.claude/skills/avatar-boot-starter-redis/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +78 -0
  38. package/templates/.claude/skills/avatar-boot-starter-redis/references//346/225/260/346/215/256/346/223/215/344/275/234.md +111 -0
  39. package/templates/.claude/skills/avatar-boot-starter-redis/references//351/253/230/347/272/247/345/212/237/350/203/275.md +90 -0
  40. package/templates/.claude/skills/avatar-boot-starter-rocketmq/README.md +662 -0
  41. package/templates/.claude/skills/avatar-boot-starter-rocketmq/SKILL.md +48 -640
  42. package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//346/240/270/345/277/203/345/212/237/350/203/275.md +101 -0
  43. package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//351/205/215/347/275/256/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.md +44 -0
  44. package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//351/253/230/347/272/247/347/211/271/346/200/247.md +71 -0
  45. package/templates/.claude/skills/avatar-boot-starter-web/README.md +1007 -0
  46. package/templates/.claude/skills/avatar-boot-starter-web/SKILL.md +150 -1003
  47. package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-LogInfo/346/263/250/350/247/243.md +75 -0
  48. package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/345/205/250/345/261/200/345/274/202/345/270/270/345/244/204/347/220/206.md +90 -0
  49. package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/346/214/207/346/240/207/347/233/221/346/216/247.md +74 -0
  50. package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/346/227/245/345/277/227/344/275/223/347/263/273.md +73 -0
  51. package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/350/257/267/346/261/202/344/270/212/344/270/213/346/226/207.md +77 -0
  52. package/templates/.claude/skills/avatar-boot-starter-web/references//345/277/253/351/200/237/346/216/245/345/205/245/346/214/207/345/215/227.md +52 -0
  53. package/templates/.claude/skills/avatar-boot-starter-web/references//346/263/250/346/204/217/344/272/213/351/241/271.md +68 -0
  54. package/templates/.claude/skills/avatar-boot-starter-web/references//350/207/252/345/256/232/344/271/211/346/211/251/345/261/225/346/214/207/345/215/227.md +107 -0
  55. package/templates/.claude/skills/avatar-boot-starter-web/references//351/205/215/347/275/256/345/217/202/350/200/203.md +107 -0
  56. package/templates/.claude/skills/crud-generator/SKILL.md +133 -64
  57. package/templates/.claude/skills/database-design/README.md +207 -0
  58. package/templates/.claude/skills/database-design/SKILL.md +469 -82
  59. package/templates/.claude/skills/database-design/references//345/221/275/345/220/215/350/247/204/350/214/203.md +232 -0
  60. package/templates/.claude/skills/database-design/references//345/255/227/346/256/265/347/261/273/345/236/213/350/247/204/350/214/203.md +400 -0
  61. package/templates/.claude/skills/database-design/references//347/264/242/345/274/225/350/247/204/350/214/203.md +506 -0
  62. package/templates/avatar-scaffold-api/pom.xml +0 -5
  63. package/templates/avatar-scaffold-service/pom.xml +25 -87
  64. package/templates/avatar-scaffold-service/src/main/resources/application-dev.yaml +3 -5
  65. package/templates/avatar-scaffold-service/src/main/resources/application-local.yaml +2 -2
  66. package/templates/pom.xml +9 -18
@@ -0,0 +1,134 @@
1
+ # Nacos 功能使用
2
+
3
+ ## 服务注册与发现
4
+
5
+ 服务启动后自动注册到 Nacos,无需额外代码。
6
+
7
+ ### 使用 @LoadBalanced 调用其他服务
8
+
9
+ ```java
10
+ @Configuration
11
+ public class RestTemplateConfig {
12
+ @Bean
13
+ @LoadBalanced
14
+ public RestTemplate restTemplate() {
15
+ return new RestTemplate();
16
+ }
17
+ }
18
+
19
+ @Service
20
+ public class UserService {
21
+ @Autowired
22
+ private RestTemplate restTemplate;
23
+
24
+ public User getUser(Long id) {
25
+ // 直接使用服务名,负载均衡自动路由
26
+ return restTemplate.getForObject("http://user-service/users/" + id, User.class);
27
+ }
28
+ }
29
+ ```
30
+
31
+ ### 服务发现配置
32
+
33
+ ```yaml
34
+ spring:
35
+ cloud:
36
+ nacos:
37
+ discovery:
38
+ enabled: true
39
+ register-enabled: true
40
+ ephemeral: true # 临时实例(推荐,容器化场景)
41
+ group: DEFAULT_GROUP
42
+ weight: 1.0
43
+ metadata:
44
+ version: 1.0.0
45
+ environment: ${spring.profiles.active}
46
+ ```
47
+
48
+ ## 动态配置管理
49
+
50
+ ### 方式一:@Value + @RefreshScope(热更新)
51
+
52
+ ```java
53
+ @RestController
54
+ @RefreshScope // 必须加此注解才能热更新
55
+ public class ConfigController {
56
+
57
+ @Value("${app.feature.enabled:false}")
58
+ private boolean featureEnabled;
59
+
60
+ @GetMapping("/config")
61
+ public String getConfig() {
62
+ return "Feature enabled: " + featureEnabled;
63
+ }
64
+ }
65
+ ```
66
+
67
+ ### 方式二:@ConfigurationProperties + @RefreshScope
68
+
69
+ ```java
70
+ @Component
71
+ @ConfigurationProperties(prefix = "app")
72
+ @RefreshScope
73
+ @Data
74
+ public class AppConfig {
75
+ private String name;
76
+ private Feature feature;
77
+
78
+ @Data
79
+ public static class Feature {
80
+ private boolean enabled;
81
+ private int maxUsers;
82
+ }
83
+ }
84
+ ```
85
+
86
+ 在 Nacos 控制台创建配置:
87
+ - **Data ID**:`my-service.yaml`
88
+ - **Group**:`DEFAULT_GROUP`
89
+ - **内容**:
90
+ ```yaml
91
+ app:
92
+ name: My Service
93
+ feature:
94
+ enabled: true
95
+ maxUsers: 100
96
+ ```
97
+
98
+ ### 监听配置变更事件
99
+
100
+ ```java
101
+ @Component
102
+ public class ConfigChangeListener {
103
+
104
+ @EventListener
105
+ public void onRefresh(RefreshScopeRefreshedEvent event) {
106
+ log.info("配置已刷新");
107
+ }
108
+
109
+ @EventListener
110
+ public void onEnvironmentChange(EnvironmentChangeEvent event) {
111
+ log.info("配置变更的 key: {}", event.getKeys());
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## 多环境隔离
117
+
118
+ 推荐使用 **namespace** 隔离环境,**group** 隔离业务:
119
+
120
+ ```yaml
121
+ # 开发环境
122
+ spring:
123
+ cloud:
124
+ nacos:
125
+ namespace: dev-namespace-id
126
+ discovery:
127
+ group: DEFAULT_GROUP
128
+
129
+ # 生产环境
130
+ spring:
131
+ cloud:
132
+ nacos:
133
+ namespace: prod-namespace-id
134
+ ```
@@ -0,0 +1,96 @@
1
+ # Nacos 快速接入与配置
2
+
3
+ ## 1. 添加依赖
4
+
5
+ ```xml
6
+ <dependency>
7
+ <groupId>com.iflytek.avatar.boot</groupId>
8
+ <artifactId>avatar-boot-starter-nacos</artifactId>
9
+ </dependency>
10
+ ```
11
+
12
+ ## 2. 配置(必须使用 spring.config.import)
13
+
14
+ > ⚠️ **Spring Cloud Alibaba 2023.x 强制要求**,缺少此配置会导致启动失败。
15
+
16
+ **application.yaml**(主配置,定义服务名):
17
+ ```yaml
18
+ spring:
19
+ application:
20
+ name: my-service
21
+
22
+ server:
23
+ port: 8080
24
+ ```
25
+
26
+ **application-dev.yml**(环境配置,声明 Nacos 配置导入):
27
+ ```yaml
28
+ spring:
29
+ config:
30
+ import:
31
+ - optional:nacos:${spring.application.name}.yaml?group=DEFAULT_GROUP&refreshEnabled=true
32
+
33
+ cloud:
34
+ nacos:
35
+ server-addr: 127.0.0.1:8848
36
+ namespace: dev
37
+ username: ${NACOS_USERNAME:nacos}
38
+ password: ${NACOS_PASSWORD:nacos}
39
+ config:
40
+ enabled: true
41
+ file-extension: yaml
42
+ group: DEFAULT_GROUP
43
+ discovery:
44
+ enabled: true
45
+ register-enabled: true
46
+ ephemeral: true
47
+ ```
48
+
49
+ ## 3. spring.config.import 格式说明
50
+
51
+ ```
52
+ optional:nacos:{dataId}?group={group}&refreshEnabled=true
53
+ ```
54
+
55
+ | 部分 | 说明 |
56
+ |:--|:--|
57
+ | `optional:` | 配置不存在时不报错(**推荐加上**) |
58
+ | `nacos:` | 指定配置源类型 |
59
+ | `{dataId}` | 配置文件的 Data ID |
60
+ | `?group=XXX` | 指定配置分组 |
61
+ | `&refreshEnabled=true` | 启用配置自动刷新 |
62
+
63
+ ## 4. 常见错误
64
+
65
+ ```yaml
66
+ # ❌ 错误:缺少 spring.config.import
67
+ spring:
68
+ cloud:
69
+ nacos:
70
+ config:
71
+ enabled: true # 仅此配置会启动报错
72
+
73
+ # ❌ 错误:import 写在 cloud.nacos 下面(应在顶层 spring 下)
74
+ spring:
75
+ cloud:
76
+ nacos:
77
+ config:
78
+ import: ... # 错误位置
79
+
80
+ # ✅ 正确:import 在顶层 spring 下
81
+ spring:
82
+ config:
83
+ import:
84
+ - optional:nacos:my-service.yaml?group=DEFAULT_GROUP&refreshEnabled=true
85
+ ```
86
+
87
+ ## 5. 共享配置
88
+
89
+ ```yaml
90
+ spring:
91
+ config:
92
+ import:
93
+ - optional:nacos:${spring.application.name}.yaml?group=DEFAULT_GROUP&refreshEnabled=true
94
+ - optional:nacos:common-database.yaml?group=SHARED_GROUP&refreshEnabled=true
95
+ - optional:nacos:common-redis.yaml?group=SHARED_GROUP&refreshEnabled=true
96
+ ```
@@ -0,0 +1,64 @@
1
+ # Nacos 故障排查
2
+
3
+ ## 1. 服务注册失败
4
+
5
+ **问题**:应用启动后未在 Nacos 控制台看到服务
6
+
7
+ **排查步骤**:
8
+ 1. 检查 `spring.cloud.nacos.server-addr` 是否正确
9
+ 2. 检查网络连通性:`telnet nacos-server 8848`
10
+ 3. 确认 `spring.cloud.nacos.discovery.register-enabled=true`
11
+ 4. 开启 DEBUG 日志:`logging.level.com.alibaba.nacos=DEBUG`
12
+
13
+ ## 2. 配置加载失败
14
+
15
+ **常见错误信息**:
16
+ - `No spring.config.import property has been defined`
17
+ - `dataId must be specified`
18
+ - `illegal URI`
19
+
20
+ **排查清单**:
21
+ - ✅ 确认已在 `application-{profile}.yml` 中添加 `spring.config.import`
22
+ - ✅ 确认 `spring.config.import` 在**顶层 `spring:`** 下,不是在 `spring.cloud.nacos:` 下
23
+ - ✅ 确认 dataId 格式正确:`optional:nacos:{dataId}?group={group}&refreshEnabled=true`
24
+ - ✅ 确认 `spring.application.name` 在**主配置文件 application.yaml** 中定义
25
+ - ✅ 确认 Nacos 控制台中该 Data ID 存在(或使用 `optional:` 前缀允许不存在)
26
+ - ✅ 确认 namespace 配置正确
27
+
28
+ **正确配置示例**:
29
+ ```yaml
30
+ # application.yaml
31
+ spring:
32
+ application:
33
+ name: my-service # 必须在主配置中定义
34
+
35
+ # application-dev.yml
36
+ spring:
37
+ config:
38
+ import:
39
+ - optional:nacos:${spring.application.name}.yaml?group=DEFAULT_GROUP&refreshEnabled=true
40
+ cloud:
41
+ nacos:
42
+ server-addr: 127.0.0.1:8848
43
+ config:
44
+ enabled: true
45
+ file-extension: yaml
46
+ ```
47
+
48
+ ## 3. 配置不刷新
49
+
50
+ **问题**:修改 Nacos 配置后应用未更新
51
+
52
+ **排查步骤**:
53
+ 1. 确认 `spring.cloud.nacos.config.refresh-enabled=true`(或 `refreshEnabled=true` 在 import 中)
54
+ 2. 确认使用 `@RefreshScope` 的 Bean 没有被其他 Bean 缓存引用
55
+ 3. 检查日志是否有 `Refresh keys changed`
56
+ 4. 某些配置(如数据库连接池)不支持热更新,需要重启应用
57
+
58
+ ## 4. 服务调用失败(使用服务名调用)
59
+
60
+ **排查步骤**:
61
+ 1. 确认目标服务已注册到 Nacos(在服务列表中可见)
62
+ 2. 确认 RestTemplate 有 `@LoadBalanced` 注解
63
+ 3. 确认服务名大小写完全一致
64
+ 4. 检查目标服务的 namespace 和 group 是否与调用方一致