Skip to content

Commit cdc9625

Browse files
committed
Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # CLAUDE.md
2 parents 78a128f + c47d6ab commit cdc9625

489 files changed

Lines changed: 3115 additions & 2364 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.augment/rules/all-convention.md

Lines changed: 106 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,50 @@
22
type: "always_apply"
33
---
44

5-
**框架概述** Compose Server 是现代化、模块化的 Kotlin 企业级开发框架(非脚手架),通过 Gradle 多模块提供企业级 SDK。所有模块可独立集成到任意 Spring Boot 或其他 JVM 项目中
5+
**技术栈** Kotlin 2.2.0, Spring Boot 3.5.4, Spring Framework 6.2.6, Jimmer 0.9.105, Gradle 9.0.0, Java 24, PostgreSQL, Redis, Caffeine, MinIO, LangChain4j
66

7-
**技术栈:** Kotlin 2.2.0, Spring Boot 3.5.3, Spring Framework 6.2.6, Jimmer 0.9.101, Gradle 9.0.0-rc-4, Java 24, PostgreSQL, Redis, Caffeine, MinIO, LangChain4j。
7+
**项目特点:**
8+
9+
- 现代化企业级Kotlin服务端框架库,已发布至Maven中央仓库
10+
- 15+核心模块的模块化设计,支持按需集成到现有项目
11+
- 采用LGPL 2.1开源协议
812

913
## 模块结构与导航
14+
1015
**包格式:** `io.github.truenine.composeserver.{模块名}`
1116

1217
**核心基础模块:**
18+
1319
- `shared/` - 核心组件、工具类、异常处理、统一响应、分页、类型定义
1420
- `testtoolkit/` - 测试工具包、TestContainers集成
1521
- `version-catalog/` - 版本目录管理
1622
- `bom/` - 依赖管理清单
1723
- `gradle-plugin/` - Gradle插件和约定
1824

1925
**业务能力模块:**
26+
2027
- `cacheable/` - 多级缓存(Redis、Caffeine)
2128
- `ai/` - AI服务
22-
- `ai:shared` - AI共享组件
23-
- `ai:langchain4j` - LangChain4j集成
29+
- `ai-shared` - AI共享组件
30+
- `ai-langchain4j` - LangChain4j集成
2431
- `pay/` - 支付服务
25-
- `pay:shared` - 支付共享组件
26-
- `pay:wechat` - 微信支付V3
32+
- `pay-shared` - 支付共享组件
33+
- `pay-wechat` - 微信支付V3
2734
- `oss/` - 对象存储
28-
- `oss:shared` - OSS共享组件
29-
- `oss:minio` - MinIO集成
30-
- `oss:aliyun-oss` - 阿里云OSS
31-
- `oss:huawei-obs` - 华为云OBS
32-
- `oss:volcengine-tos` - 火山引擎TOS
35+
- `oss-shared` - OSS共享组件
36+
- `oss-minio` - MinIO集成
37+
- `oss-aliyun-oss` - 阿里云OSS
38+
- `oss-huawei-obs` - 华为云OBS
39+
- `oss-volcengine-tos` - 火山引擎TOS
3340
- `rds/` - 关系型数据库
34-
- `rds:shared` - RDS共享组件
35-
- `rds:crud` - CRUD操作
36-
- `rds:jimmer-ext-postgres` - Jimmer PostgreSQL扩展
37-
- `rds:flyway-migration-postgresql` - Flyway PostgreSQL迁移
41+
- `rds-shared` - RDS共享组件
42+
- `rds-crud` - CRUD操作
43+
- `rds-jimmer-ext-postgres` - Jimmer PostgreSQL扩展
44+
- `rds-flyway-migration-postgresql` - Flyway PostgreSQL迁移
45+
- `rds-flyway-migration-mysql8` - Flyway MySQL8迁移
3846

3947
**系统服务模块:**
48+
4049
- `security/` - 安全服务
4150
- `security:spring` - Spring Security集成
4251
- `security:oauth2` - OAuth2支持
@@ -49,6 +58,7 @@ type: "always_apply"
4958
- `surveillance:hikvision` - 海康威视集成
5059

5160
**数据处理模块:**
61+
5262
- `data/` - 数据处理
5363
- `data:crawler` - 网络爬虫
5464
- `data:extract` - 数据提取
@@ -61,28 +71,48 @@ type: "always_apply"
6171
- `depend:xxl-job` - XXL-Job集成
6272

6373
**代码生成模块:**
74+
6475
- `ksp/` - Kotlin符号处理
6576
- `ksp:plugin` - KSP插件
6677
- `ksp:shared` - KSP共享组件
6778
- `ksp:meta` - 元数据定义
6879

6980
**常用路径:**
81+
7082
- 构建文件:`{模块}/build.gradle.kts`
7183
- 源码:`{模块}/src/main/kotlin/io/github/truenine/composeserver/{模块}/`
7284
- 测试:`{模块}/src/test/kotlin/`
7385
- 资源:`{模块}/src/main/resources/`
7486

7587
## 构建命令
88+
89+
**基础构建:**
90+
7691
- `./gradlew build` - 构建项目
7792
- `./gradlew clean` - 清理输出
7893
- `./gradlew publishToMavenLocal` - 本地发布
79-
- `./gradlew test` - 运行所有测试
80-
- `./gradlew :{模块}:test` - 模块特定测试
94+
- `./gradlew check` - 运行所有测试
95+
96+
**模块化操作:**
97+
98+
- `./gradlew :{模块}:check` - 模块特定测试
99+
- `./gradlew :{模块}:build` - 构建单个模块
100+
- `./gradlew :{模块}:publishToMavenLocal` - 本地发布单个模块
101+
102+
**代码质量:**
103+
81104
- `./gradlew spotlessApply` - 修复格式(提交前必须运行)
82-
- `./gradlew versionCatalogFormat` - 修复 `libs.versions.toml` 格式(提交前必须运行)
105+
- `./gradlew versionCatalogFormat` - 修复 `libs.versions.toml` 格式
106+
107+
**性能优化配置:**
108+
109+
- JVM配置:`-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+UseG1GC`
110+
- 启用并行构建、缓存、配置缓存
83111

84112
## 构建约定与插件
113+
85114
**build-logic 约定插件体系:**
115+
86116
- `buildlogic.jacoco-conventions` - 代码覆盖率约定
87117
- `buildlogic.java-conventions` - Java约定
88118
- `buildlogic.javaspring-conventions` - Java Spring约定
@@ -91,42 +121,66 @@ type: "always_apply"
91121
- `buildlogic.publish-conventions` - 发布约定
92122
- `buildlogic.repositories-conventions` - 仓库约定
93123
- `buildlogic.spotless-conventions` - 代码格式化约定
124+
- `buildlogic.spotless-sql-conventions` - SQL 代码格式化约定
94125

95126
## 开发标准
127+
128+
**依赖和构建:**
129+
96130
- **依赖管理:** Gradle Version Catalog (`gradle/libs.versions.toml`) 统一版本管理
97131
- **插件约定:** 所有Kotlin模块使用 `kotlinspring-conventions`,Java模块使用相应约定
98132
- **代码格式:** Spotless自动化格式检查(提交前必须运行 `./gradlew spotlessApply`
99-
- **测试规范:** 测试类与被测试类同名,使用@Nested组织测试,禁用@DisplayName注解
100-
- **模块集成:** `implementation("io.github.truenine:composeserver-{模块}:0.0.10")`
101-
- **Java版本:** 支持Java 24最新特性,无向下兼容,积极使用新特性
102-
- **Kotlin约定:** 优先使用val、避免!!操作符、积极使用lambda和新特性
103-
104-
## 框架特定开发指导
105-
106-
**Spring Boot 3.x 约定:**
107-
- 使用 `@Resource` 替代 `@Autowired` 进行依赖注入
108-
- 配置类使用 `@EnableConfigurationProperties` 启用属性绑定
109-
- 自动配置类命名为 `AutoConfigEntrance` 并使用 `@ComponentScan`
110-
- 异常处理使用统一的 `ErrorResponseEntity` 响应格式
111-
- 日志记录使用 `slf4j(ClassName::class)` 获取logger实例
112-
113-
**Jimmer ORM 约定:**
114-
- 实体类使用 `@Entity` 注解,遵循 Jimmer 规范
115-
- 查询使用 KSP 生成的类型安全查询 API
116-
- 分页查询统一使用 `fetchPq()` 扩展函数
117-
- 数据库函数扩展放在对应的 `*Fns.kt` 文件中
118-
- 使用 `View` 接口定义 DTO 投影,通过 `toFetcher()` 获取 Fetcher
119-
120-
**Kotlin 2.2.0 特性使用:**
121-
- 积极使用 `data class` 替代多参数函数
122-
- 扩展函数命名使用动词形式,如 `hasText()`, `isNotEmptyRun()`
123-
- 使用 `@OptIn(ExperimentalContracts::class)` 启用契约功能
124-
- 运算符重载使用 `infix` 函数,如 `Pair.and()`
125-
- 字符串模板优先使用 `${}` 语法
126-
127-
**测试框架约定:**
128-
- 使用 TestContainers 进行集成测试
129-
- 测试方法命名使用反引号中文描述:`fun \`测试用户创建成功\`()`
130-
- 使用 `@Nested inner class` 组织测试场景
131-
- 测试日志使用 `testtoolkit.log` 实例
132-
- Mock 对象使用 `every { } returns` 语法
133+
- **版本发布:** 发布至Maven中央仓库 `io.github.truenine:composeserver-*`
134+
135+
**测试规范:**
136+
137+
- 测试类与被测试类同名,使用@Nested组织测试
138+
- 禁用@DisplayName注解,使用反引号中文方法名
139+
- TestContainers集成测试支持 PostgreSQL/MySQL/Redis/MinIO
140+
- 测试组织:正常用例、异常用例、边界用例分组
141+
142+
**架构约定:**
143+
144+
- 包命名:`io.github.truenine.composeserver.{模块名}`
145+
- 自动配置:Spring Boot AutoConfiguration + @ConditionalOn* 条件化配置
146+
- 资源管理:ResourceHolder统一管理配置文件和静态资源
147+
148+
## 架构特点
149+
150+
**模块化设计:**
151+
152+
- 每个模块独立打包发布到Maven中央仓库,支持按需集成
153+
- build-logic 约定插件统一管理构建配置和代码质量标准
154+
155+
**测试架构:**
156+
157+
- TestContainers集成测试:PostgreSQL、MySQL、Redis、MinIO容器化测试
158+
- @Nested内部类组织测试场景:正常用例、异常用例、边界用例
159+
- 测试幂等性验证:数据库迁移和存储过程多次执行安全性保证
160+
161+
**自动配置体系:**
162+
163+
- Spring Boot AutoConfiguration自动装配各模块功能
164+
- 条件化配置:通过Properties类和@ConditionalOn*注解控制组件启用
165+
- 资源管理:ResourceHolder统一管理配置文件和静态资源加载
166+
167+
## 重要开发指南
168+
169+
**构建环境要求:**
170+
171+
- Java 24+
172+
- Kotlin 2.2.0
173+
- Gradle 9.x(使用included builds和版本目录管理)
174+
175+
**开发流程:**
176+
177+
1. 提交前必须运行 `./gradlew spotlessApply` 修复代码格式
178+
2. 确保所有测试通过 `./gradlew check`
179+
3. 使用@Nested组织测试,禁用@DisplayName,采用反引号中文方法名
180+
4. 新模块需在 `settings.gradle.kts` 中声明并应用相应的构建约定
181+
182+
**版本管理:**
183+
184+
- 依赖版本统一在 `gradle/libs.versions.toml` 中管理
185+
- 使用 `./gradlew versionCatalogUpdate` 检查依赖更新
186+
- 版本发布通过Maven中央仓库,命名规则:`io.github.truenine:composeserver-{模块名}`

.augment/rules/global-convention.md

Lines changed: 16 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,22 @@ type: "always_apply"
66

77
**强制规则**
88

9-
1. 始终使用**简体中文**回复,即使用户输入大量英文提示,也应返回简体中文
10-
2. 禁止编写任何供用户使用的示例代码,即使需要临时测试,任务完成后也必须立即删除
11-
3. 严禁通过简化问题来解决问题
12-
4. 严禁通过降级依赖版本来解决问题
13-
5. 严禁通过减少测试断言来解决问题
14-
6. 严禁忽略异常或任何隐藏异常的行为
15-
7. 应当积极按照规则来重构修复上下文中出现的代码
16-
8. 严禁在代码中暴露 API 密钥、密码和令牌
17-
9. 应积极使用日志完善记录,主动补充缺失的日志
18-
10. 允许在单元测试调试期间添加日志以协助解决问题
19-
11. 必须最大化使用 `early return` 技术来减少代码嵌套层级
20-
12. 严禁在对话或任务完成后生成总结文档文件和其他不必要的操作
21-
13. 严禁出现 `util`,`utils`,`tool` 等的让我恶心的命名方式以及命名空间
9+
1.
10+
在开始实现任何功能之前,请将任务拆解为更小的模块,并逐步编写代码。每写一小部分代码后,务必进行单元测试验证,确保其正确性和稳定性。即使用户给出的需求很复杂,也请始终保持渐进式开发,逐步完成,并通过测试及时发现并解决问题。避免一次性编写大量代码,以便尽早识别潜在的错误和问题。保持代码的高质量和稳定性,逐步积累完成整个任务。
11+
2. 始终使用**简体中文**回复,即使用户输入大量英文提示,也应返回简体中文
12+
3. 禁止编写任何供用户使用的示例代码,即使需要临时测试,任务完成后也必须立即删除
13+
4. 严禁通过简化问题来解决问题
14+
5. 严禁通过降级依赖版本来解决问题
15+
6. 严禁通过减少测试断言来解决问题
16+
7. 严禁忽略异常或任何隐藏异常的行为
17+
8. 应当积极按照规则来重构修复上下文中出现的代码
18+
9. 严禁在代码中暴露 API 密钥、密码和令牌
19+
10. 应积极使用日志完善记录,主动补充缺失的日志
20+
11. 允许在单元测试调试期间添加日志以协助解决问题
21+
12. 必须最大化使用 `early return` 技术来减少代码嵌套层级
22+
13. 严禁在对话或任务完成后生成总结文档文件和其他不必要的操作
23+
14. 严禁出现 `util`,`utils`,`tool` 等的让我恶心的命名方式以及命名空间
24+
15. 严禁使用 `@Suppress` 注解压制警告
2225

2326
**输出规则**
2427

@@ -87,96 +90,3 @@ type: "always_apply"
8790
**SCSS 标准**
8891

8992
- 禁止使用 `@import`,使用 `@use` 代替
90-
91-
# Git 提交规范
92-
93-
## 提交消息格式
94-
95-
**基本格式:** `emoji [scope] description`
96-
97-
- **emoji**: 表示变更类型的表情符号
98-
- **scope**: 影响范围(模块名称),使用方括号包围
99-
- **description**: 简洁的变更描述
100-
101-
**复杂变更格式:** 当单次提交包含多个变更时,使用列表格式
102-
103-
## 表情符号规范
104-
105-
| 表情符号 | 类型 | 描述 | 使用场景 |
106-
|------|-----------|----------|--------------------|
107-
| 🎉 | feat | 重大功能/初始化 | 新功能、重大更新、项目初始化 |
108-
|| feat | 新功能/增强 | 添加功能、增强、文档更新 |
109-
| 🐛 | fix | Bug 修复 | 修复错误、解决问题 |
110-
| 🔧 | config | 配置修改 | 配置文件、CI/CD、构建配置 |
111-
| 📝 | docs | 文档更新 | 更新文档、README、注释 |
112-
| 🎨 | style | 代码风格/格式化 | 代码格式化、样式、结构优化 |
113-
| ♻️ | refactor | 重构 | 代码重构、包结构调整 |
114-
|| perf | 性能优化 | 性能优化、算法改进 |
115-
| 🔥 | remove | 删除代码/文件 | 删除无用代码、移除功能 |
116-
| 🧪 | test | 测试相关 | 添加测试、修复测试、测试配置 |
117-
| 👷 | ci | CI/CD | 持续集成、构建脚本 |
118-
| 📦 | build | 构建系统 | 依赖管理、构建配置 |
119-
| ⬆️ | upgrade | 升级依赖 | 升级库版本 |
120-
| ⬇️ | downgrade | 降级依赖 | 降级库版本 |
121-
| 🚀 | release | 发布版本 | 版本发布、标签创建 |
122-
| 🔀 | merge | 合并分支 | 分支合并、冲突解决 |
123-
| 🤖 | ai | AI 工具配置 | AI 助手配置、自动化 |
124-
| 💄 | optimize | 优化 | 性能优化、代码改进 |
125-
| 🌐 | network | 网络相关 | 网络配置、API 调用、远程服务 |
126-
| 🔐 | security | 安全/验证 | 安全修复、权限控制、验证 |
127-
| 🚑 | hotfix | 紧急修复 | 紧急修复、临时解决方案 |
128-
| 📈 | analytics | 分析/监控 | 性能监控、数据分析 |
129-
| 🍱 | assets | 资源文件 | 图片、字体、静态资源 |
130-
| 🚨 | lint | 代码检查 | 修复 linting 警告、代码质量 |
131-
| 💡 | comment | 注释 | 添加/更新注释、文档字符串 |
132-
| 🔊 | log | 日志 | 添加日志、调试信息 |
133-
| 🔇 | log | 移除日志 | 删除日志、静默输出 |
134-
135-
## 提交示例
136-
137-
### 简单格式示例
138-
139-
```bash
140-
✨ [shared] 添加统一异常处理
141-
142-
🐛 [rds] 修复连接池配置问题
143-
144-
♻️ [security] 重构JWT验证逻辑
145-
```
146-
147-
### 复杂格式示例
148-
149-
```bash
150-
✨ [ai] LangChain4j集成优化
151-
152-
- 🚑 修复模型加载超时问题
153-
- 🐛 解决依赖冲突问题
154-
- 💄 优化AI服务性能
155-
- 🧪 补充集成测试用例
156-
```
157-
158-
## 提交规范要求
159-
160-
1. **必须使用表情符号**: 每个提交消息必须以对应的表情符号开头
161-
2. **明确作用域**: 使用方括号明确标识影响的模块或组件
162-
3. **描述简洁明了**: 使用动词开头,简洁描述变更内容
163-
4. **单一职责**: 每个提交应专注于单一变更类型
164-
5. **中文描述**: 提交描述使用中文,便于团队理解
165-
166-
167-
# Code Practices
168-
- 永远不要在测试代码以外的任何地方编写 mock 代码,可以使用 todo 标记但不能实现半成品
169-
- 永远不要隐藏异常要向外抛出
170-
- 重用项目已有代码
171-
- 不要行尾注释
172-
- 日志不用表情符号
173-
- 多划分任务增量完成
174-
- `log.info` 等等的方法,在 kotlin 当中禁止使用字符串模板直接进行插值,而是使用 `{}` 占位符
175-
- slf4j 的日志格式应当是:a: {} , b: {} 而不是 a={},b={},即冒号后有空格,逗号后有空格
176-
177-
# Problem Solving
178-
- 遇到不懂的API错误时应该使用工具查询文档而不是主动尝试,永远不要简化问题来完成任务,要尊重事实
179-
- 不能通过 try catch 这种自欺欺人的方式来隐藏第三方错误,应该积极暴露错误而非隐藏错误,这是绝不允许的。
180-
181-
# Thinking
182-
- 英文思考中文总结

.idea/sqldialects.xml

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)