ai-engineering-init 1.4.3 → 1.5.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 (129) hide show
  1. package/.cursor/skills/bug-detective/SKILL.md +19 -19
  2. package/.cursor/skills/project-navigator/SKILL.md +164 -258
  3. package/package.json +7 -1
  4. package/scripts/build-skills.js +180 -0
  5. package/src/platform-map.json +56 -0
  6. package/src/skills/add-skill/SKILL.md +488 -0
  7. package/src/skills/add-todo/SKILL.md +269 -0
  8. package/src/skills/api-development/SKILL.md +266 -0
  9. package/src/skills/architecture-design/SKILL.md +262 -0
  10. package/src/skills/backend-annotations/SKILL.md +302 -0
  11. package/src/skills/banana-image/CHANGELOG.md +37 -0
  12. package/src/skills/banana-image/README.md +146 -0
  13. package/src/skills/banana-image/SKILL.md +171 -0
  14. package/src/skills/banana-image/assets/logo.png +0 -0
  15. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  16. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  17. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  18. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  19. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  20. package/src/skills/banana-image/scripts/package.json +18 -0
  21. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  22. package/src/skills/banana-image/templates/poster.json +22 -0
  23. package/src/skills/banana-image/templates/product.json +17 -0
  24. package/src/skills/banana-image/templates/social.json +22 -0
  25. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  26. package/src/skills/brainstorm/SKILL.md +216 -0
  27. package/src/skills/bug-detective/SKILL.md +256 -0
  28. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  29. package/src/skills/check/SKILL.md +367 -0
  30. package/src/skills/code-patterns/SKILL.md +280 -0
  31. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  32. package/src/skills/codex-code-review/SKILL.md +135 -0
  33. package/src/skills/collaborating-with-codex/SKILL.md +174 -0
  34. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  35. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  36. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  37. package/src/skills/crud/SKILL.md +265 -0
  38. package/src/skills/crud-development/SKILL.md +409 -0
  39. package/src/skills/data-permission/SKILL.md +292 -0
  40. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  41. package/src/skills/database-ops/SKILL.md +407 -0
  42. package/src/skills/dev/SKILL.md +187 -0
  43. package/src/skills/error-handler/SKILL.md +371 -0
  44. package/src/skills/file-oss-management/SKILL.md +255 -0
  45. package/src/skills/file-oss-management/references/entities.md +105 -0
  46. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  47. package/src/skills/git-workflow/SKILL.md +397 -0
  48. package/src/skills/init-docs/SKILL.md +194 -0
  49. package/src/skills/json-serialization/SKILL.md +357 -0
  50. package/src/skills/leniu-api-development/SKILL.md +319 -0
  51. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  52. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  53. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  54. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  55. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  56. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  57. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  58. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  59. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  60. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  61. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  62. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  63. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  64. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  65. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  66. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  67. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  68. package/src/skills/leniu-java-export/SKILL.md +570 -0
  69. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  70. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  71. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  72. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  73. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  74. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  75. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  76. package/src/skills/leniu-java-task/SKILL.md +367 -0
  77. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  78. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  79. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  80. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  81. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  82. package/src/skills/leniu-report-customization/SKILL.md +335 -0
  83. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  84. package/src/skills/leniu-report-standard-customization/SKILL.md +328 -0
  85. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  86. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  87. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  88. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  89. package/src/skills/mysql-debug/SKILL.md +364 -0
  90. package/src/skills/next/SKILL.md +137 -0
  91. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  92. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  93. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  94. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  95. package/src/skills/openspec-explore/SKILL.md +299 -0
  96. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  97. package/src/skills/openspec-new-change/SKILL.md +82 -0
  98. package/src/skills/openspec-onboard/SKILL.md +414 -0
  99. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  100. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  101. package/src/skills/performance-doctor/SKILL.md +303 -0
  102. package/src/skills/progress/SKILL.md +193 -0
  103. package/src/skills/project-navigator/SKILL.md +211 -0
  104. package/src/skills/redis-cache/SKILL.md +333 -0
  105. package/src/skills/redis-cache/references/listeners.md +23 -0
  106. package/src/skills/scheduled-jobs/SKILL.md +314 -0
  107. package/src/skills/security-guard/SKILL.md +353 -0
  108. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  109. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  110. package/src/skills/sms-mail/SKILL.md +308 -0
  111. package/src/skills/sms-mail/references/mail-config.md +88 -0
  112. package/src/skills/sms-mail/references/sms-config.md +74 -0
  113. package/src/skills/social-login/SKILL.md +266 -0
  114. package/src/skills/social-login/references/provider-configs.md +118 -0
  115. package/src/skills/start/SKILL.md +154 -0
  116. package/src/skills/store-pc/SKILL.md +366 -0
  117. package/src/skills/sync/SKILL.md +149 -0
  118. package/src/skills/task-tracker/SKILL.md +307 -0
  119. package/src/skills/tech-decision/SKILL.md +393 -0
  120. package/src/skills/tenant-management/SKILL.md +288 -0
  121. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  122. package/src/skills/test-development/SKILL.md +301 -0
  123. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  124. package/src/skills/ui-pc/SKILL.md +438 -0
  125. package/src/skills/update-status/SKILL.md +159 -0
  126. package/src/skills/utils-toolkit/SKILL.md +362 -0
  127. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  128. package/src/skills/websocket-sse/SKILL.md +271 -0
  129. package/src/skills/workflow-engine/SKILL.md +321 -0
@@ -0,0 +1,237 @@
1
+ # Entity/VO/DTO 完整模板参考
2
+
3
+ ## 生产代码参考:OrderInfo Model
4
+
5
+ ```java
6
+ import com.baomidou.mybatisplus.annotation.*;
7
+ import io.swagger.annotations.ApiModel;
8
+ import io.swagger.annotations.ApiModelProperty;
9
+ import lombok.Data;
10
+ import lombok.experimental.Accessors;
11
+
12
+ import java.math.BigDecimal;
13
+ import java.time.LocalDateTime;
14
+
15
+ /**
16
+ * 关键特征:
17
+ * 1. 无基类、无 Serializable
18
+ * 2. @TableName 不带 autoResultMap(报表 Mapper 无 BaseMapper)
19
+ * 3. 包含静态工厂方法 newDefaultInstance()
20
+ * 4. 包含领域业务方法(计算/重置等)
21
+ */
22
+ @Data
23
+ @Accessors(chain = true)
24
+ @ApiModel(value = "订单信息")
25
+ @TableName("order_info")
26
+ public class OrderInfo {
27
+
28
+ @TableId
29
+ @ApiModelProperty(value = "订单ID")
30
+ private Long id;
31
+
32
+ @ApiModelProperty(value = "食堂ID")
33
+ private Long canteenId;
34
+
35
+ @ApiModelProperty(value = "用户ID")
36
+ private Long userId;
37
+
38
+ @ApiModelProperty(value = "应付金额(分)")
39
+ private BigDecimal payableAmount;
40
+
41
+ @ApiModelProperty(value = "实付金额(分)")
42
+ private BigDecimal realAmount;
43
+
44
+ @ApiModelProperty(value = "优惠金额(分)")
45
+ private BigDecimal discountsAmount;
46
+
47
+ @ApiModelProperty(value = "订单状态")
48
+ private Integer status;
49
+
50
+ @ApiModelProperty(value = "删除标识(1-删除,2-正常)")
51
+ private Integer delFlag;
52
+
53
+ @TableField(fill = FieldFill.INSERT)
54
+ @ApiModelProperty(value = "创建人")
55
+ private String crby;
56
+
57
+ @TableField(fill = FieldFill.INSERT)
58
+ @ApiModelProperty(value = "创建时间")
59
+ private LocalDateTime crtime;
60
+
61
+ @TableField(fill = FieldFill.INSERT_UPDATE)
62
+ @ApiModelProperty(value = "更新人")
63
+ private String upby;
64
+
65
+ @TableField(fill = FieldFill.INSERT_UPDATE)
66
+ @ApiModelProperty(value = "更新时间")
67
+ private LocalDateTime uptime;
68
+
69
+ public static OrderInfo newDefaultInstance() {
70
+ OrderInfo orderInfo = new OrderInfo();
71
+ orderInfo.setDelFlag(2);
72
+ orderInfo.setPayableAmount(BigDecimal.ZERO);
73
+ orderInfo.setRealAmount(BigDecimal.ZERO);
74
+ orderInfo.setDiscountsAmount(BigDecimal.ZERO);
75
+ return orderInfo;
76
+ }
77
+
78
+ public BigDecimal calcNeedPayAmount() {
79
+ return payableAmount.subtract(discountsAmount);
80
+ }
81
+
82
+ public void resetAmountsZero() {
83
+ this.payableAmount = BigDecimal.ZERO;
84
+ this.realAmount = BigDecimal.ZERO;
85
+ this.discountsAmount = BigDecimal.ZERO;
86
+ }
87
+ }
88
+ ```
89
+
90
+ ## Excel 导出 VO
91
+
92
+ ```java
93
+ import com.alibaba.excel.annotation.ExcelProperty;
94
+ import com.alibaba.excel.annotation.write.style.ColumnWidth;
95
+ import io.swagger.annotations.ApiModel;
96
+ import io.swagger.annotations.ApiModelProperty;
97
+ import lombok.Data;
98
+ import lombok.experimental.Accessors;
99
+ import net.xnzn.core.common.export.converter.CustomNumberConverter;
100
+
101
+ import java.math.BigDecimal;
102
+ import java.time.LocalDateTime;
103
+
104
+ @Data
105
+ @Accessors(chain = true)
106
+ @ApiModel("订单信息")
107
+ public class OrderExportVO {
108
+
109
+ @ExcelProperty(value = "订单ID", order = 1)
110
+ @ColumnWidth(15)
111
+ @ApiModelProperty("订单ID")
112
+ private Long orderId;
113
+
114
+ @ExcelProperty(value = "用户ID", order = 2)
115
+ @ColumnWidth(15)
116
+ @ApiModelProperty("用户ID")
117
+ private Long userId;
118
+
119
+ @ExcelProperty(value = "订单金额(元)", order = 3, converter = CustomNumberConverter.class)
120
+ @ColumnWidth(15)
121
+ @ApiModelProperty("订单金额(元)")
122
+ private BigDecimal orderAmount;
123
+
124
+ @ExcelProperty(value = "创建时间", order = 4)
125
+ @ColumnWidth(20)
126
+ @ApiModelProperty("创建时间")
127
+ private LocalDateTime crtime;
128
+ }
129
+ ```
130
+
131
+ ## 报表 Param
132
+
133
+ ```java
134
+ import com.alibaba.excel.annotation.ExcelIgnore;
135
+ import io.swagger.annotations.ApiModel;
136
+ import io.swagger.annotations.ApiModelProperty;
137
+ import lombok.Data;
138
+
139
+ import java.io.Serializable;
140
+ import java.time.LocalDate;
141
+ import java.util.List;
142
+
143
+ @Data
144
+ @ApiModel("订单报表查询参数")
145
+ public class OrderReportParam implements Serializable {
146
+
147
+ @ExcelIgnore
148
+ @ApiModelProperty(value = "分页参数", required = true)
149
+ private PageDTO page;
150
+
151
+ @ExcelIgnore
152
+ @ApiModelProperty("关键字")
153
+ private String keyword;
154
+
155
+ @ApiModelProperty("开始日期")
156
+ private LocalDate startDate;
157
+
158
+ @ApiModelProperty("结束日期")
159
+ private LocalDate endDate;
160
+
161
+ @ApiModelProperty("食堂ID列表")
162
+ private List<Long> canteenIds;
163
+
164
+ @ApiModelProperty("状态")
165
+ private Integer status;
166
+ }
167
+ ```
168
+
169
+ ## 含国际化的枚举
170
+
171
+ ```java
172
+ import lombok.AllArgsConstructor;
173
+ import lombok.Getter;
174
+ import net.xnzn.core.common.i18n.I18n;
175
+
176
+ @Getter
177
+ @AllArgsConstructor
178
+ public enum OrderStatusEnum {
179
+
180
+ CREATED(1, "{order.status.created}"),
181
+ PAID(2, "{order.status.paid}"),
182
+ COMPLETED(3, "{order.status.completed}"),
183
+ CANCELLED(4, "{order.status.cancelled}");
184
+
185
+ private final Integer key;
186
+ private final String desc;
187
+
188
+ public String getDesc() {
189
+ return I18n.getMessage(desc);
190
+ }
191
+
192
+ public static OrderStatusEnum getByKey(Integer key) {
193
+ if (key == null) return null;
194
+ for (OrderStatusEnum e : values()) {
195
+ if (e.getKey().equals(key)) return e;
196
+ }
197
+ return null;
198
+ }
199
+
200
+ public static String getDescByKey(Integer key) {
201
+ OrderStatusEnum e = getByKey(key);
202
+ return e != null ? e.getDesc() : "";
203
+ }
204
+ }
205
+ ```
206
+
207
+ ## 常用注解速查
208
+
209
+ ### MyBatis-Plus
210
+
211
+ | 注解 | 示例 |
212
+ |------|------|
213
+ | `@TableName` | `@TableName("order_table")` 或 `@TableName(value = "x", autoResultMap = true)` |
214
+ | `@TableId` | `@TableId private Long id;` |
215
+ | `@TableField(fill = FieldFill.INSERT)` | 插入时填充(crby, crtime) |
216
+ | `@TableField(fill = FieldFill.INSERT_UPDATE)` | 插入+更新填充(upby, uptime) |
217
+ | `@TableField(exist = false)` | 非数据库字段 |
218
+
219
+ ### Jakarta Validation
220
+
221
+ | 注解 | 示例 |
222
+ |------|------|
223
+ | `@NotNull` | `@NotNull(message = "不能为空")` |
224
+ | `@NotBlank` | `@NotBlank(message = "名称不能为空")` |
225
+ | `@NotEmpty` | `@NotEmpty(message = "列表不能为空")` |
226
+ | `@Size` | `@Size(min = 1, max = 100)` |
227
+ | `@DecimalMin` | `@DecimalMin(value = "0.01")` |
228
+ | `@Pattern` | `@Pattern(regexp = "^1[3-9]\\d{9}$")` |
229
+
230
+ ### EasyExcel
231
+
232
+ | 注解 | 示例 |
233
+ |------|------|
234
+ | `@ExcelProperty(value = "列名", order = 1)` | 列名和顺序 |
235
+ | `@ColumnWidth(15)` | 列宽 |
236
+ | `@ExcelIgnore` | 忽略导出 |
237
+ | `converter = CustomNumberConverter.class` | 金额转换器 |