ai-engineering-init 1.4.2 → 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 (132) hide show
  1. package/.claude/skills/leniu-java-export/SKILL.md +389 -95
  2. package/.codex/skills/leniu-java-export/SKILL.md +389 -95
  3. package/.cursor/skills/bug-detective/SKILL.md +19 -19
  4. package/.cursor/skills/leniu-java-export/SKILL.md +389 -95
  5. package/.cursor/skills/project-navigator/SKILL.md +164 -258
  6. package/package.json +7 -1
  7. package/scripts/build-skills.js +180 -0
  8. package/src/platform-map.json +56 -0
  9. package/src/skills/add-skill/SKILL.md +488 -0
  10. package/src/skills/add-todo/SKILL.md +269 -0
  11. package/src/skills/api-development/SKILL.md +266 -0
  12. package/src/skills/architecture-design/SKILL.md +262 -0
  13. package/src/skills/backend-annotations/SKILL.md +302 -0
  14. package/src/skills/banana-image/CHANGELOG.md +37 -0
  15. package/src/skills/banana-image/README.md +146 -0
  16. package/src/skills/banana-image/SKILL.md +171 -0
  17. package/src/skills/banana-image/assets/logo.png +0 -0
  18. package/src/skills/banana-image/references/advanced-usage.md +189 -0
  19. package/src/skills/banana-image/scripts/apply_template.py +125 -0
  20. package/src/skills/banana-image/scripts/banana_image_exec.ts +412 -0
  21. package/src/skills/banana-image/scripts/batch_prep.py +82 -0
  22. package/src/skills/banana-image/scripts/package-lock.json +1437 -0
  23. package/src/skills/banana-image/scripts/package.json +18 -0
  24. package/src/skills/banana-image/scripts/requirements.txt +10 -0
  25. package/src/skills/banana-image/templates/poster.json +22 -0
  26. package/src/skills/banana-image/templates/product.json +17 -0
  27. package/src/skills/banana-image/templates/social.json +22 -0
  28. package/src/skills/banana-image/templates/thumbnail.json +17 -0
  29. package/src/skills/brainstorm/SKILL.md +216 -0
  30. package/src/skills/bug-detective/SKILL.md +256 -0
  31. package/src/skills/bug-detective/references/error-patterns.md +242 -0
  32. package/src/skills/check/SKILL.md +367 -0
  33. package/src/skills/code-patterns/SKILL.md +280 -0
  34. package/src/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  35. package/src/skills/codex-code-review/SKILL.md +135 -0
  36. package/src/skills/collaborating-with-codex/SKILL.md +174 -0
  37. package/src/skills/collaborating-with-codex/scripts/codex_bridge.py +275 -0
  38. package/src/skills/collaborating-with-gemini/SKILL.md +194 -0
  39. package/src/skills/collaborating-with-gemini/scripts/gemini_bridge.py +275 -0
  40. package/src/skills/crud/SKILL.md +265 -0
  41. package/src/skills/crud-development/SKILL.md +409 -0
  42. package/src/skills/data-permission/SKILL.md +292 -0
  43. package/src/skills/data-permission/references/custom-data-scope.md +90 -0
  44. package/src/skills/database-ops/SKILL.md +407 -0
  45. package/src/skills/dev/SKILL.md +187 -0
  46. package/src/skills/error-handler/SKILL.md +371 -0
  47. package/src/skills/file-oss-management/SKILL.md +255 -0
  48. package/src/skills/file-oss-management/references/entities.md +105 -0
  49. package/src/skills/file-oss-management/references/service-impl.md +104 -0
  50. package/src/skills/git-workflow/SKILL.md +397 -0
  51. package/src/skills/init-docs/SKILL.md +194 -0
  52. package/src/skills/json-serialization/SKILL.md +357 -0
  53. package/src/skills/leniu-api-development/SKILL.md +319 -0
  54. package/src/skills/leniu-api-development/references/real-examples.md +273 -0
  55. package/src/skills/leniu-architecture-design/SKILL.md +383 -0
  56. package/src/skills/leniu-backend-annotations/SKILL.md +277 -0
  57. package/src/skills/leniu-brainstorm/SKILL.md +242 -0
  58. package/src/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  59. package/src/skills/leniu-code-patterns/SKILL.md +411 -0
  60. package/src/skills/leniu-crud-development/SKILL.md +404 -0
  61. package/src/skills/leniu-crud-development/references/templates.md +597 -0
  62. package/src/skills/leniu-customization-location/SKILL.md +410 -0
  63. package/src/skills/leniu-data-permission/SKILL.md +341 -0
  64. package/src/skills/leniu-database-ops/SKILL.md +426 -0
  65. package/src/skills/leniu-error-handler/SKILL.md +462 -0
  66. package/src/skills/leniu-java-amount-handling/SKILL.md +461 -0
  67. package/src/skills/leniu-java-code-style/SKILL.md +510 -0
  68. package/src/skills/leniu-java-concurrent/SKILL.md +400 -0
  69. package/src/skills/leniu-java-entity/SKILL.md +237 -0
  70. package/src/skills/leniu-java-entity/references/templates.md +237 -0
  71. package/src/skills/leniu-java-export/SKILL.md +570 -0
  72. package/src/skills/leniu-java-logging/SKILL.md +229 -0
  73. package/src/skills/leniu-java-logging/references/data-mask.md +46 -0
  74. package/src/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  75. package/src/skills/leniu-java-mq/SKILL.md +338 -0
  76. package/src/skills/leniu-java-mybatis/SKILL.md +267 -0
  77. package/src/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  78. package/src/skills/leniu-java-report-query-param/SKILL.md +291 -0
  79. package/src/skills/leniu-java-task/SKILL.md +367 -0
  80. package/src/skills/leniu-java-total-line/SKILL.md +196 -0
  81. package/src/skills/leniu-marketing-price-rule-customizer/SKILL.md +301 -0
  82. package/src/skills/leniu-marketing-recharge-rule-customizer/SKILL.md +285 -0
  83. package/src/skills/leniu-mealtime/SKILL.md +215 -0
  84. package/src/skills/leniu-redis-cache/SKILL.md +331 -0
  85. package/src/skills/leniu-report-customization/SKILL.md +335 -0
  86. package/src/skills/leniu-report-customization/references/table-fields.md +93 -0
  87. package/src/skills/leniu-report-standard-customization/SKILL.md +328 -0
  88. package/src/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  89. package/src/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  90. package/src/skills/leniu-security-guard/SKILL.md +306 -0
  91. package/src/skills/leniu-utils-toolkit/SKILL.md +380 -0
  92. package/src/skills/mysql-debug/SKILL.md +364 -0
  93. package/src/skills/next/SKILL.md +137 -0
  94. package/src/skills/openspec-apply-change/SKILL.md +165 -0
  95. package/src/skills/openspec-archive-change/SKILL.md +122 -0
  96. package/src/skills/openspec-bulk-archive-change/SKILL.md +254 -0
  97. package/src/skills/openspec-continue-change/SKILL.md +126 -0
  98. package/src/skills/openspec-explore/SKILL.md +299 -0
  99. package/src/skills/openspec-ff-change/SKILL.md +109 -0
  100. package/src/skills/openspec-new-change/SKILL.md +82 -0
  101. package/src/skills/openspec-onboard/SKILL.md +414 -0
  102. package/src/skills/openspec-sync-specs/SKILL.md +146 -0
  103. package/src/skills/openspec-verify-change/SKILL.md +176 -0
  104. package/src/skills/performance-doctor/SKILL.md +303 -0
  105. package/src/skills/progress/SKILL.md +193 -0
  106. package/src/skills/project-navigator/SKILL.md +211 -0
  107. package/src/skills/redis-cache/SKILL.md +333 -0
  108. package/src/skills/redis-cache/references/listeners.md +23 -0
  109. package/src/skills/scheduled-jobs/SKILL.md +314 -0
  110. package/src/skills/security-guard/SKILL.md +353 -0
  111. package/src/skills/security-guard/references/encrypt-config.md +103 -0
  112. package/src/skills/security-guard/references/sensitive-strategies.md +42 -0
  113. package/src/skills/sms-mail/SKILL.md +308 -0
  114. package/src/skills/sms-mail/references/mail-config.md +88 -0
  115. package/src/skills/sms-mail/references/sms-config.md +74 -0
  116. package/src/skills/social-login/SKILL.md +266 -0
  117. package/src/skills/social-login/references/provider-configs.md +118 -0
  118. package/src/skills/start/SKILL.md +154 -0
  119. package/src/skills/store-pc/SKILL.md +366 -0
  120. package/src/skills/sync/SKILL.md +149 -0
  121. package/src/skills/task-tracker/SKILL.md +307 -0
  122. package/src/skills/tech-decision/SKILL.md +393 -0
  123. package/src/skills/tenant-management/SKILL.md +288 -0
  124. package/src/skills/tenant-management/references/tenant-scenarios.md +91 -0
  125. package/src/skills/test-development/SKILL.md +301 -0
  126. package/src/skills/test-development/references/parameterized-examples.md +119 -0
  127. package/src/skills/ui-pc/SKILL.md +438 -0
  128. package/src/skills/update-status/SKILL.md +159 -0
  129. package/src/skills/utils-toolkit/SKILL.md +362 -0
  130. package/src/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  131. package/src/skills/websocket-sse/SKILL.md +271 -0
  132. package/src/skills/workflow-engine/SKILL.md +321 -0
@@ -0,0 +1,426 @@
1
+ ---
2
+ name: leniu-database-ops
3
+ description: |
4
+ leniu-yunshitang-core 项目数据库操作规范。包含建表模板、Entity 实体类模板、双库架构设计模式、审计字段、逻辑删除。
5
+
6
+ 触发场景:
7
+ - 创建 leniu 数据库表(MySQL)
8
+ - 设计 Entity 实体类(审计字段、逻辑删除)
9
+ - 配置逻辑删除、乐观锁
10
+ - 双库架构(系统库+商户库)设计
11
+ - 表字段设计
12
+
13
+ 适用项目:leniu-tengyun-core(云食堂项目)
14
+
15
+ 触发词:数据库、SQL、建表、双库、商户库、系统库、审计字段、crby、crtime、del_flag
16
+ ---
17
+
18
+ # leniu-yunshitang-core 数据库操作规范
19
+
20
+ ## 项目概述
21
+
22
+ leniu-yunshitang-core 是基于 **pigx-framework** 的智慧食堂云服务平台,采用**双库架构**(系统库 + 商户库)实现多租户隔离。
23
+
24
+ | 项目 | 路径 |
25
+ |------|------|
26
+ | **云食堂后端** | `/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun-core` |
27
+ | **包名前缀** | `net.xnzn.*` |
28
+
29
+ ---
30
+
31
+ ## 核心架构差异
32
+
33
+ | 对比项 | leniu-tengyun-core |
34
+ |--------|-------------------|
35
+ | **包名前缀** | `net.xnzn.*` |
36
+ | **数据库** | MySQL 8.0+ |
37
+ | **租户模式** | **双库架构**(系统库 + 商户库) |
38
+ | **Entity 基类** | 无基类(自定义审计字段) |
39
+ | **主键策略** | 雪花ID 或 自增ID |
40
+ | **逻辑删除** | `del_flag` (1=删除, 2=正常) |
41
+ | **审计字段** | `crby/crtime/upby/uptime` |
42
+ | **租户字段** | **无 tenant_id 字段**(双库隔离) |
43
+
44
+ ---
45
+
46
+ ## 1. 双库架构设计
47
+
48
+ ### 架构说明
49
+
50
+ 本项目采用**物理分离的双库架构**,而非单库多租户:
51
+
52
+ | 库类型 | 说明 | 数据范围 | 访问方式 |
53
+ |--------|------|---------|---------|
54
+ | **系统库** | 全局系统数据 | 租户信息、商户配置、系统字典等 | 默认访问(无 MERCHANT-ID) |
55
+ | **商户库** | 租户业务数据 | 订单、菜品、用户、设备等商户数据 | 请求头携带 MERCHANT-ID 时访问 |
56
+
57
+ **关键区别**:
58
+ - Entity 不需要 `tenant_id` 字段(物理库隔离)
59
+ - 通过 `TenantContextHolder.getTenantId()` 获取当前租户
60
+ - 使用 `Executors.doInTenant()` / `doInSystem()` 切换库
61
+
62
+ ### 双库配置示例
63
+
64
+ ```yaml
65
+ # bootstrap.yml
66
+ dataset:
67
+ system:
68
+ master:
69
+ jdbcUrl: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/system
70
+ username: ${MYSQL_USERNAME:root}
71
+ password: ${MYSQL_PASSWORD:do@u.can}
72
+
73
+ tenant:
74
+ carrier-name: MERCHANT-ID
75
+ ```
76
+
77
+ ### 多租户上下文
78
+
79
+ ```java
80
+ // 获取当前租户ID
81
+ Long tenantId = TenantContextHolder.getTenantId();
82
+
83
+ // 在指定租户库执行操作
84
+ Executors.doInTenant(tenantId, () -> {
85
+ // 业务代码 - 访问商户库
86
+ });
87
+
88
+ // 在系统库执行操作
89
+ Executors.doInSystem(() -> {
90
+ // 业务代码 - 访问系统库
91
+ });
92
+
93
+ // 遍历所有租户执行
94
+ Executors.doInAllTenant(tenantId -> {
95
+ // 业务代码
96
+ });
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 2. Entity 实体类模板(带审计字段)
102
+
103
+ ```java
104
+ package net.xnzn.core.xxx.model;
105
+
106
+ import com.baomidou.mybatisplus.annotation.*;
107
+ import io.swagger.annotations.ApiModel;
108
+ import io.swagger.annotations.ApiModelProperty;
109
+ import lombok.Data;
110
+ import lombok.experimental.Accessors;
111
+
112
+ import java.io.Serializable;
113
+ import java.time.LocalDateTime;
114
+
115
+ /**
116
+ * XXX 对象
117
+ */
118
+ @Data
119
+ @Accessors(chain = true)
120
+ @TableName("xxx_table")
121
+ @ApiModel(value = "XXX对象", description = "XXX表")
122
+ public class XxxEntity implements Serializable {
123
+
124
+ private static final long serialVersionUID = 1L;
125
+
126
+ /**
127
+ * 主键 ID
128
+ */
129
+ @ApiModelProperty("主键ID")
130
+ @TableId(value = "id", type = IdType.AUTO)
131
+ private Long id;
132
+
133
+ /**
134
+ * 业务字段 - 名称
135
+ */
136
+ @ApiModelProperty("名称")
137
+ @TableField("name")
138
+ private String name;
139
+
140
+ /**
141
+ * 业务字段 - 状态
142
+ */
143
+ @ApiModelProperty("状态")
144
+ @TableField("status")
145
+ private Integer status;
146
+
147
+ /**
148
+ * 删除标识(1删除,2正常)
149
+ * ⚠️ 注意:与 RuoYi 相反!
150
+ */
151
+ @ApiModelProperty("删除标识(1删除,2正常)")
152
+ @TableField("del_flag")
153
+ private Integer delFlag;
154
+
155
+ /**
156
+ * 乐观锁
157
+ */
158
+ @ApiModelProperty("乐观锁")
159
+ @TableField("revision")
160
+ private Integer revision;
161
+
162
+ /**
163
+ * 创建人
164
+ */
165
+ @ApiModelProperty("创建人")
166
+ @TableField(value = "crby", fill = FieldFill.INSERT)
167
+ private String crby;
168
+
169
+ /**
170
+ * 创建时间
171
+ */
172
+ @ApiModelProperty("创建时间")
173
+ @TableField(value = "crtime", fill = FieldFill.INSERT)
174
+ private LocalDateTime crtime;
175
+
176
+ /**
177
+ * 更新人
178
+ */
179
+ @ApiModelProperty("更新人")
180
+ @TableField(value = "upby", fill = FieldFill.INSERT_UPDATE)
181
+ private String upby;
182
+
183
+ /**
184
+ * 更新时间
185
+ */
186
+ @ApiModelProperty("更新时间")
187
+ @TableField(value = "uptime", fill = FieldFill.INSERT_UPDATE)
188
+ private LocalDateTime uptime;
189
+ }
190
+ ```
191
+
192
+ ---
193
+
194
+ ## 3. MySQL CREATE TABLE 模板
195
+
196
+ ```sql
197
+ CREATE TABLE `xxx_table` (
198
+ -- 主键
199
+ `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
200
+
201
+ -- ⚠️ 注意:双库架构不需要 tenant_id 字段!
202
+
203
+ -- 业务字段
204
+ `name` VARCHAR(100) NOT NULL COMMENT '名称',
205
+ `status` TINYINT(1) DEFAULT 1 COMMENT '状态(0停用 1启用)',
206
+
207
+ -- 版本和删除
208
+ `revision` INT DEFAULT 0 COMMENT '乐观锁版本号',
209
+ `del_flag` TINYINT(1) DEFAULT 2 COMMENT '删除标识(1删除 2正常)',
210
+
211
+ -- 审计字段
212
+ `crby` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
213
+ `crtime` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
214
+ `upby` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
215
+ `uptime` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
216
+
217
+ PRIMARY KEY (`id`),
218
+ KEY `idx_status` (`status`),
219
+ KEY `idx_crtime` (`crtime`),
220
+ KEY `idx_del_flag` (`del_flag`)
221
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='XXX表';
222
+ ```
223
+
224
+ ---
225
+
226
+ ## 4. 八大数据库设计模式
227
+
228
+ ### 模式一:双库多租户
229
+
230
+ ```java
231
+ // ⚠️ 双库架构:Entity 不需要 tenant_id 字段
232
+ // 租户隔离通过物理库实现,而非 tenant_id 字段
233
+
234
+ // 获取当前租户ID(从上下文获取,而非 Entity 字段)
235
+ Long tenantId = TenantContextHolder.getTenantId();
236
+
237
+ // 查询时自动路由到对应租户库
238
+ List<XxxEntity> list = xxxMapper.selectList(wrapper);
239
+ ```
240
+
241
+ **使用场景**:所有需要租户隔离的业务表
242
+
243
+ ---
244
+
245
+ ### 模式二:树结构 - 祖先路径法(推荐)
246
+
247
+ ```sql
248
+ CREATE TABLE demo_tree (
249
+ id BIGINT NOT NULL,
250
+ parent_id BIGINT,
251
+ ancestors VARCHAR(500), -- 祖先路径:0,1,2,3
252
+ name VARCHAR(100),
253
+ del_flag TINYINT DEFAULT 2,
254
+ PRIMARY KEY (id),
255
+ INDEX idx_ancestors (ancestors)
256
+ ) COMMENT='树形表';
257
+ ```
258
+
259
+ ---
260
+
261
+ ### 模式三:树结构 - 简单父子法
262
+
263
+ ```sql
264
+ CREATE TABLE demo_tree_simple (
265
+ id BIGINT NOT NULL,
266
+ parent_id BIGINT,
267
+ name VARCHAR(100),
268
+ del_flag TINYINT DEFAULT 2,
269
+ PRIMARY KEY (id)
270
+ ) COMMENT='简单树形表';
271
+ ```
272
+
273
+ ---
274
+
275
+ ### 模式四:逻辑删除
276
+
277
+ ```java
278
+ // Java Entity 中
279
+ @TableField("del_flag")
280
+ private Integer delFlag; // 1=删除,2=正常(注意与 RuoYi 相反!)
281
+
282
+ // MyBatis-Plus 查询时需要手动添加
283
+ wrapper.eq(XxxEntity::getDelFlag, 2);
284
+ ```
285
+
286
+ ---
287
+
288
+ ### 模式五:审计追踪(自动填充)
289
+
290
+ ```sql
291
+ CREATE TABLE demo_audit (
292
+ id BIGINT NOT NULL,
293
+ crby VARCHAR(64), -- 创建人(自动填充)
294
+ crtime DATETIME, -- 创建时间(自动填充)
295
+ upby VARCHAR(64), -- 更新人(自动填充)
296
+ uptime DATETIME, -- 更新时间(自动填充)
297
+ PRIMARY KEY (id)
298
+ ) COMMENT='带审计的表';
299
+ ```
300
+
301
+ ---
302
+
303
+ ### 模式六:状态字段
304
+
305
+ ```java
306
+ @ApiModelProperty("状态")
307
+ @TableField("status")
308
+ private Integer status; // 0=停用,1=启用
309
+ ```
310
+
311
+ ---
312
+
313
+ ### 模式七:数据权限控制
314
+
315
+ ```java
316
+ // leniu 项目通常在 Service 层进行权限过滤
317
+ // 通过 mgrAuthApi.getUserAuthPO() 获取用户权限
318
+ ```
319
+
320
+ ---
321
+
322
+ ### 模式八:跨数据库兼容
323
+
324
+ | 场景 | MySQL | PostgreSQL | Oracle |
325
+ |------|-------|-----------|--------|
326
+ | 查询 Long 字段 | `LIKE` | `CAST AS VARCHAR` | `TO_CHAR()` |
327
+ | 主键策略 | 雪花ID/自增 | 同 | 同 |
328
+ | 日期函数 | `CURRENT_TIMESTAMP` | `NOW()` | `SYSDATE` |
329
+
330
+ ---
331
+
332
+ ## 5. 审计字段说明
333
+
334
+ | 字段 | 含义 | 类型 | 自动填充 |
335
+ |------|------|------|---------|
336
+ | `crby` | 创建人 | VARCHAR(64) | INSERT |
337
+ | `crtime` | 创建时间 | DATETIME | INSERT |
338
+ | `upby` | 更新人 | VARCHAR(64) | INSERT_UPDATE |
339
+ | `uptime` | 更新时间 | DATETIME | INSERT_UPDATE |
340
+
341
+ **注意**:
342
+ - `del_flag` 值与 RuoYi-Vue-Plus 相反!
343
+ - leniu:1=删除,2=正常
344
+ - RuoYi:0=正常,1=删除
345
+
346
+ ---
347
+
348
+ ## 6. 常见错误对比
349
+
350
+ ### ❌ 不要做
351
+
352
+ ```sql
353
+ -- 错误1: 使用 tenant_id 字段(双库架构不需要)
354
+ tenant_id VARCHAR(20) DEFAULT '000000', -- ❌ 双库架构不需要!
355
+
356
+ -- 错误2: 使用错误的 del_flag 值
357
+ del_flag TINYINT DEFAULT 0, -- ❌ leniu 中 2=正常
358
+
359
+ -- 错误3: 使用 RuoYi 审计字段命名
360
+ create_by BIGINT, -- ❌ 应该用 crby
361
+ create_time DATETIME, -- ❌ 应该用 crtime
362
+
363
+ -- 错误4: COMMENT 使用英文
364
+ `user_name` VARCHAR(50) COMMENT 'user name', -- ❌ 禁止英文!
365
+
366
+ -- 错误5: 字段名不规范
367
+ userName VARCHAR(50) -- ❌ 应该用 user_name
368
+ ```
369
+
370
+ ### ✅ 正确做法
371
+
372
+ ```sql
373
+ -- 正确1: 双库架构不需要 tenant_id
374
+ -- (直接省略该字段)
375
+
376
+ -- 正确2: 使用正确的 del_flag 值
377
+ del_flag TINYINT DEFAULT 2 COMMENT '删除标识(1删除 2正常)', -- ✅
378
+
379
+ -- 正确3: 使用 leniu 审计字段命名
380
+ crby VARCHAR(64) DEFAULT NULL COMMENT '创建人', -- ✅
381
+ crtime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- ✅
382
+
383
+ -- 正确4: COMMENT 使用中文
384
+ `user_name` VARCHAR(50) COMMENT '用户名', -- ✅
385
+
386
+ -- 正确5: 字段名使用蛇形命名法
387
+ user_name VARCHAR(50) -- ✅
388
+ ```
389
+
390
+ ---
391
+
392
+ ## 7. 检查清单
393
+
394
+ 建表前必须检查:
395
+
396
+ - [ ] **主键是否是 BIGINT(20)**?(支持雪花ID或自增)
397
+ - [ ] **是否不需要 tenant_id 字段**?(双库架构)
398
+ - [ ] **是否有 del_flag TINYINT 字段**?(1=删除,2=正常)
399
+ - [ ] **是否有 revision INT 字段**?(乐观锁)
400
+ - [ ] **是否有完整的审计字段**?(crby, crtime, upby, uptime)
401
+ - [ ] **字段名是否全部使用蛇形命名法**?
402
+ - [ ] **所有字段是否有注释**?
403
+ - [ ] **所有 COMMENT 是否使用中文**?
404
+ - [ ] **Entity 审计字段是否配置了 FieldFill**?
405
+ - [ ] **Entity 是否正确使用了 @TableName 注解**?
406
+ - [ ] **Mapper XML 是否与 Java 文件同目录**?
407
+
408
+ ---
409
+
410
+ ## 8. SQL 文件位置
411
+
412
+ | 数据库 | 脚本位置 |
413
+ |--------|---------|
414
+ | MySQL | 根据实际项目配置位置存放 |
415
+
416
+ ---
417
+
418
+ ## 参考代码位置
419
+
420
+ | 类型 | 路径 |
421
+ |------|------|
422
+ | Entity 示例 | `core-bus/.../model/BusLine.java` |
423
+ | Mapper 示例 | `core-bus/.../mapper/BusLineMapper.java` |
424
+ | 配置文件 | `core-common/src/main/resources/bootstrap.yml` |
425
+
426
+ **项目路径**:`/Users/xujiajun/Developer/gongsi_proj/leniu-api/leniu-tengyun-core`