From 4723b59403689b4f692d10e166af60d08831c8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Mon, 24 Nov 2025 08:16:23 +0800 Subject: [PATCH 01/18] chore(docs): remove CODEBUDDY.md and add .agent/.windsurf/ to .gitignore - Deleted CODEBUDDY.md containing CodeBuddy-specific project guidance and development workflow documentation. - Added .agent/ and .windsurf/ directories to .gitignore to exclude agent-related configuration files. --- .gitignore | 2 + CODEBUDDY.md | 232 --------------------------------------------------- 2 files changed, 2 insertions(+), 232 deletions(-) delete mode 100644 CODEBUDDY.md diff --git a/.gitignore b/.gitignore index 305dd8a41..b6c2c216e 100644 --- a/.gitignore +++ b/.gitignore @@ -93,3 +93,5 @@ nul .playwright-mcp/ .codebuddy/ .qoder/ +.agent/ +.windsurf/ diff --git a/CODEBUDDY.md b/CODEBUDDY.md deleted file mode 100644 index bb9e48566..000000000 --- a/CODEBUDDY.md +++ /dev/null @@ -1,232 +0,0 @@ -# CODEBUDDY.md - -This file provides guidance to CodeBuddy Code when working with the Compose Server repository. - -## Project Overview - -**Compose Server** is a modern enterprise-grade Kotlin server-side framework library featuring modular architecture design. It provides 30+ specialized modules covering AI integration, object storage, database operations, security, payments, messaging, data processing, and monitoring capabilities. All modules are published to Maven Central for selective integration. - -**Technology Stack:** Kotlin 2.2.0, Spring Boot 3.5.4, Jimmer 0.9.105, Gradle 9.x, Java 24+, PostgreSQL, Redis, Caffeine, MinIO, LangChain4j - -## Essential Development Commands - -### Build and Development -```bash -# Build the entire project -./gradlew build - -# Clean build outputs -./gradlew clean - -# Run all tests and checks -./gradlew check - -# Build specific module -./gradlew :{module}:build - -# Run tests for specific module -./gradlew :{module}:check - -# Publish to local Maven repository -./gradlew publishToMavenLocal - -# Publish specific module locally -./gradlew :{module}:publishToMavenLocal -``` - -### Code Quality (REQUIRED before commits) -```bash -# Fix code formatting (MUST run before commit) -./gradlew spotlessApply - -# Format version catalog -./gradlew versionCatalogFormat - -# Check for dependency updates -./gradlew versionCatalogUpdate -``` - -### Testing Commands -```bash -# Run all tests with parallel execution -./gradlew test - -# Run tests with TestContainers (requires Docker) -./gradlew integrationTest - -# Run specific test class -./gradlew test --tests "ClassName" - -# Run tests with specific profile -./gradlew test -Dspring.profiles.active=test -``` - -## Architecture Overview - -### Modular Structure -The project follows a layered modular architecture with clear functional boundaries: - -``` -🎯 Application Layer - ↓ (selective integration) -🏢 Business Module Layer (30+ modules) - ├── 🤖 AI Services (ai-*) - ├── 📦 Object Storage (oss-*) - ├── 💳 Payment Services (pay-*) - ├── 📱 SMS Services (sms-*) - ├── 🔐 Security (security-*) - ├── 🗄️ Database (rds-*) - └── 🔧 Dependencies (depend-*, ksp-*, psdk-*) - ↓ (all depend on) -🏗️ Infrastructure Layer - ├── 🔧 Shared Foundation (shared) - ├── 📋 Dependency Management (bom) - ├── 🧪 Testing Toolkit (testtoolkit) - └── ⚡ Caching Abstractions (cacheable) -``` - -### Module Organization Pattern -Each functional domain follows a consistent structure: -- `{domain}-shared/`: Core interfaces and abstractions -- `{domain}-{provider}/`: Provider-specific implementations (e.g., `oss-minio`, `pay-wechat`) -- `autoconfig/`: Spring Boot auto-configuration classes -- Package format: `io.github.truenine.composeserver.{module-name}` - -### Key Architectural Patterns - -#### Auto-Configuration Pattern -Every module uses Spring Boot auto-configuration with: -- `AutoConfigEntrance.kt` as entry point in `autoconfig` package -- `@ComponentScan` for automatic discovery -- `@EnableConfigurationProperties` for type-safe configuration -- `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` for registration - -#### Repository Pattern -- `IRepo` interface extending Jimmer's `KRepository` -- `IPersistentEntity` base interface for all entities -- Jimmer ORM integration with strong type safety - -#### Service Abstractions -- Unified interfaces like `IObjectStorageService` for multi-provider support -- Coroutines integration throughout async operations -- Provider-swappable implementations - -## Testing Architecture - -### TestContainers Integration -The project uses comprehensive TestContainers integration: -- `ITestContainerBase`: Base interface for all containers -- Specific container interfaces: `IDatabasePostgresqlContainer`, `ICacheRedisContainer`, etc. -- Automatic container startup via `@DynamicPropertySource` -- Container reuse enabled for performance -- Extension functions for convenient testing (e.g., `mysql { }` blocks) - -### Test Organization Standards -- Test classes use `@Nested` inner classes for scenario organization -- Chinese method names with backticks for test descriptions -- Disable `@DisplayName` annotation -- Test categories: normal cases, exception cases, boundary cases -- Idempotency verification for database operations - -### Test Configuration -```yaml -# application-test.yml -compose: - testtoolkit: - enabled: true - disable-condition-evaluation-report: true - enable-virtual-threads: true - ansi-output-mode: always -``` - -## Build System - -### Gradle Configuration -- **Version Catalog**: `gradle/libs.versions.toml` for unified dependency management -- **Convention Plugins**: `build-logic/` contains reusable build conventions -- **Primary Convention**: `kotlinspring-conventions` for most modules -- **Performance Optimized**: Parallel builds, caching, configuration cache enabled - -### Convention Plugins Available -- `buildlogic.kotlinspring-conventions`: Primary for Kotlin Spring modules -- `buildlogic.publish-conventions`: Maven Central publishing -- `buildlogic.spotless-conventions`: Code formatting -- `buildlogic.jacoco-conventions`: Code coverage - -### Key Build Files -- Root: `build.gradle.kts`, `settings.gradle.kts`, `gradle.properties` -- Module: `{module}/build.gradle.kts` -- Version management: `gradle/libs.versions.toml` -- Build logic: `build-logic/src/main/kotlin/` - -## Development Workflow - -### Before Every Commit -1. **MANDATORY**: Run `./gradlew spotlessApply` to fix code formatting -2. Run `./gradlew check` to ensure all tests pass -3. Verify module builds independently if changes span multiple modules - -### Adding New Modules -1. Create module directory following naming convention -2. Add to `settings.gradle.kts` include list -3. Apply appropriate convention plugins in module's `build.gradle.kts` -4. Implement auto-configuration in `autoconfig` package -5. Add to version catalog if publishing to Maven Central - -### Code Generation (KSP) -- Annotation definitions in `ksp-meta/` -- Processor implementation in `ksp-plugin/` -- Generated code integration through Gradle KSP plugin - -## Key Interfaces and Abstractions - -### Core Domain Interfaces -- `IAnyEnum`: Type-safe enum abstraction for serialization -- `IPageParam`: Pagination parameter interface -- `IPersistentEntity`: Base entity with audit fields - -### Service Layer Interfaces -- `IObjectStorageService`: Unified object storage with coroutines -- `IRepo`: Repository pattern with Jimmer integration -- `IKeysRepo`: Cryptographic key management - -### Configuration Interfaces -- Properties classes with `@ConfigurationProperties` -- Environment-specific configuration overrides -- TestContainer-specific properties - -## Maven Central Publishing - -All modules are published as `io.github.truenine:composeserver-{module-name}:${version}` -- Current version managed in `gradle/libs.versions.toml` -- BOM available for unified version management -- Selective integration supported - choose only needed modules - -## Performance Considerations - -### JVM Configuration -```properties -# gradle.properties -org.gradle.jvmargs=-Xmx5g -XX:MaxMetaspaceSize=1g -XX:+UseG1GC -kotlin.daemon.jvmargs=-Xmx2g -XX:+UseG1GC -``` - -### Build Optimizations -- Parallel builds enabled -- Gradle build cache enabled -- Configuration cache enabled -- Incremental Kotlin compilation -- JUnit parallel test execution - -## IDE Integration - -### IntelliJ IDEA Plugin -- MCP (Model Context Protocol) integration in `ide/ide-idea-mcp/` -- Code analysis and cleanup tools -- Terminal integration for development workflows - -### Development Setup -- Java 24+ required -- Kotlin 2.2.0+ required -- Docker required for TestContainers integration -- IntelliJ IDEA recommended with Kotlin plugin \ No newline at end of file From e0da53032e94bdf038219d39dec32c77350634b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Sun, 30 Nov 2025 15:31:03 +0800 Subject: [PATCH 02/18] chore(gitignore): add .kiro/ directory to gitignore - Add .kiro/ to .gitignore to exclude local tool configuration - Prevents accidental commits of local development tool files --- .gitignore | 133 ++++++++++++++++++++++------------------------------- 1 file changed, 55 insertions(+), 78 deletions(-) diff --git a/.gitignore b/.gitignore index b6c2c216e..1d3590cc7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,97 +1,74 @@ -### android studio ### -/local.properties - -### gradle ### -.gradle -build/ -/build-cache/ -/generated/ -generated_tests/ -.generated/ -.xcodemap/ -!gradle/wrapper/gradle-wrapper.jar +*.hprof +*.iml +*.ipr +*.iws +*.log +*.mode1v3 +*.sln +*.xcodeproj +*.xcuserstate +*.xcworkspace +**/bin/ +**/out/ +*resources/static/ +!**/out/ !**/src/main/**/build/ !**/src/test/**/build/ -.gradle-user-home/ - -### kotlin ### -.kotlin -.kotlin/ +!gradle/wrapper/gradle-wrapper.jar -### STS ### +.agent/ +.ai/ .apt_generated .classpath +.codebuddy/ +.claude/ +.cursor/ .factorypath +.factory/ +.generated/ +.gradle +.gradle-user-home/ +.jpb/ +.kiro/ +.kotlin +.kotlin/ +.logs +.playwright-mcp/ .project +.qoder/ .settings .springBeans .sts4-cache -**/bin/ -src/main/**/bin/ -src/test/**/bin/ +.vs +.windsurf/ -### IntelliJ IDEA ### -*.iws -*.iml -*.ipr -**/out/ -!**/out/ -src/main/**/out/ -src/test/**/out/ -.jpb/ -*.hprof -/out/ +/__ai/ +/__aiissues/ /amplicode.xml - -### NetBeans ### -/nbproject/private/ -/nbbuild/ +/build-cache/ /dist/ +/generated/ +/local.properties +/nbbuild/ /nbdist/ -/.nb-gradle/ - -### visual studio ### -.vs -*.sln -*resources/static/ - -### xcode ### -*.xcworkspace -*.xcodeproj -*.xcuserstate -*.mode1v3 - -### logs ### -logs -.logs -*.log /.env -### publish gpg ### -/private.gpg - -### Customs ### -TODO.* - -### AI Coder ### /.intellijPlatform/ -node_modules/ -pnpm-lock.yaml -.claude/ -.cursor/ -.factory/ -.ai/ -__ai/ -__aiissues/ -CLAUDE.md -AGENTS.md - -### claude code ### /.mcp.json +/.nb-gradle/ +/nbproject/private/ +/out/ +/private.gpg -### Windows issues ### +AGENTS.md +build/ +CLAUDE.md +generated_tests/ +logs +node_modules/ nul -.playwright-mcp/ -.codebuddy/ -.qoder/ -.agent/ -.windsurf/ +pnpm-lock.yaml +src/main/**/bin/ +src/main/**/out/ +src/test/**/bin/ +src/test/**/out/ +TODO.* From 131142997d38c2631b2d008c4b4243115d266321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Sun, 30 Nov 2025 18:09:21 +0800 Subject: [PATCH 03/18] refactor(build-logic): standardize gradle plugin naming conventions - Rename buildlogic.kotlinspring-conventions to buildlogic.kotlin-spring-boot-conventions for clarity - Rename buildlogic.javaspring-conventions to buildlogic.java-spring-boot-conventions for consistency - Rename buildlogic.kotlinspring-test-conventions to buildlogic.kotlin-spring-boot-test-conventions for clarity - Rename buildlogic.publish-conventions to buildlogic.maven-publish-conventions for specificity - Update all plugin references across 40+ build.gradle.kts files to use new naming scheme - Improve plugin naming to be more descriptive and follow consistent hyphenated format - Enhance maintainability by making plugin purposes immediately clear from their names --- ai/ai-langchain4j/build.gradle.kts | 2 +- ai/ai-shared/build.gradle.kts | 2 +- bom/build.gradle.kts | 2 +- .../src/main/kotlin/buildlogic.java-conventions.gradle.kts | 2 +- ...kts => buildlogic.java-spring-boot-conventions.gradle.kts} | 0 ...s => buildlogic.kotlin-spring-boot-conventions.gradle.kts} | 2 +- ...buildlogic.kotlin-spring-boot-test-conventions.gradle.kts} | 0 ...le.kts => buildlogic.maven-publish-conventions.gradle.kts} | 2 +- cacheable/build.gradle.kts | 2 +- data/data-extract/build.gradle.kts | 2 +- depend/depend-jackson/build.gradle.kts | 2 +- depend/depend-paho/build.gradle.kts | 2 +- depend/depend-servlet/build.gradle.kts | 2 +- depend/depend-springdoc-openapi/build.gradle.kts | 2 +- depend/depend-xxl-job/build.gradle.kts | 2 +- docsite/build.gradle.kts | 2 +- gradleplugin/gradleplugin-composeserver/build.gradle.kts | 2 +- gradleplugin/gradleplugin-dotenv/build.gradle.kts | 2 +- integrate-test/cacheable/build.gradle.kts | 2 +- integrate-test/depend/jackson/build.gradle.kts | 2 +- integrate-test/oss/minio/build.gradle.kts | 2 +- integrate-test/oss/volcengine-tos/build.gradle.kts | 2 +- oss/oss-aliyun-oss/build.gradle.kts | 2 +- oss/oss-huawei-obs/build.gradle.kts | 2 +- oss/oss-minio/build.gradle.kts | 2 +- oss/oss-shared/build.gradle.kts | 2 +- oss/oss-volcengine-tos/build.gradle.kts | 2 +- pay/pay-shared/build.gradle.kts | 2 +- pay/pay-wechat/build.gradle.kts | 2 +- psdk/psdk-wxpa/build.gradle.kts | 2 +- rds/rds-crud/build.gradle.kts | 2 +- rds/rds-flyway-migration-mysql8/build.gradle.kts | 2 +- rds/rds-flyway-migration-postgresql/build.gradle.kts | 2 +- rds/rds-flyway-migration-shared/build.gradle.kts | 2 +- rds/rds-jimmer-ext-postgres/build.gradle.kts | 2 +- rds/rds-shared/build.gradle.kts | 2 +- security/security-casbin/build.gradle.kts | 2 +- security/security-crypto/build.gradle.kts | 2 +- security/security-oauth2/build.gradle.kts | 2 +- security/security-spring/build.gradle.kts | 2 +- shared/build.gradle.kts | 4 ++-- sms/sms-tencent/build.gradle.kts | 2 +- surveillance/surveillance-hikvision/build.gradle.kts | 2 +- surveillance/surveillance-shared/build.gradle.kts | 2 +- testtoolkit/testtoolkit-shared/build.gradle.kts | 2 +- testtoolkit/testtoolkit-springmvc/build.gradle.kts | 2 +- testtoolkit/testtoolkit-testcontainers/build.gradle.kts | 2 +- version-catalog/build.gradle.kts | 2 +- 48 files changed, 47 insertions(+), 47 deletions(-) rename build-logic/src/main/kotlin/{buildlogic.javaspring-conventions.gradle.kts => buildlogic.java-spring-boot-conventions.gradle.kts} (100%) rename build-logic/src/main/kotlin/{buildlogic.kotlinspring-conventions.gradle.kts => buildlogic.kotlin-spring-boot-conventions.gradle.kts} (88%) rename build-logic/src/main/kotlin/{buildlogic.kotlinspring-test-conventions.gradle.kts => buildlogic.kotlin-spring-boot-test-conventions.gradle.kts} (100%) rename build-logic/src/main/kotlin/{buildlogic.publish-conventions.gradle.kts => buildlogic.maven-publish-conventions.gradle.kts} (97%) diff --git a/ai/ai-langchain4j/build.gradle.kts b/ai/ai-langchain4j/build.gradle.kts index 4244452bb..1edc3e118 100644 --- a/ai/ai-langchain4j/build.gradle.kts +++ b/ai/ai-langchain4j/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/ai/ai-shared/build.gradle.kts b/ai/ai-shared/build.gradle.kts index 7b6fec207..6b299768b 100644 --- a/ai/ai-shared/build.gradle.kts +++ b/ai/ai-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts index a26794d74..c20bf3842 100644 --- a/bom/build.gradle.kts +++ b/bom/build.gradle.kts @@ -2,7 +2,7 @@ import kotlin.jvm.optionals.getOrNull plugins { `java-platform` - id("buildlogic.publish-conventions") + id("buildlogic.maven-publish-conventions") id("buildlogic.spotless-conventions") } diff --git a/build-logic/src/main/kotlin/buildlogic.java-conventions.gradle.kts b/build-logic/src/main/kotlin/buildlogic.java-conventions.gradle.kts index 1677b2986..6aa29b687 100644 --- a/build-logic/src/main/kotlin/buildlogic.java-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.java-conventions.gradle.kts @@ -2,7 +2,7 @@ val libs = the() plugins { `java-library` - id("buildlogic.publish-conventions") + id("buildlogic.maven-publish-conventions") id("buildlogic.repositories-conventions") id("buildlogic.jacoco-conventions") } diff --git a/build-logic/src/main/kotlin/buildlogic.javaspring-conventions.gradle.kts b/build-logic/src/main/kotlin/buildlogic.java-spring-boot-conventions.gradle.kts similarity index 100% rename from build-logic/src/main/kotlin/buildlogic.javaspring-conventions.gradle.kts rename to build-logic/src/main/kotlin/buildlogic.java-spring-boot-conventions.gradle.kts diff --git a/build-logic/src/main/kotlin/buildlogic.kotlinspring-conventions.gradle.kts b/build-logic/src/main/kotlin/buildlogic.kotlin-spring-boot-conventions.gradle.kts similarity index 88% rename from build-logic/src/main/kotlin/buildlogic.kotlinspring-conventions.gradle.kts rename to build-logic/src/main/kotlin/buildlogic.kotlin-spring-boot-conventions.gradle.kts index e20907abe..c391d31e0 100644 --- a/build-logic/src/main/kotlin/buildlogic.kotlinspring-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.kotlin-spring-boot-conventions.gradle.kts @@ -1,6 +1,6 @@ val libs = the() plugins { - id("buildlogic.javaspring-conventions") + id("buildlogic.java-spring-boot-conventions") id("buildlogic.kotlin-conventions") kotlin("plugin.spring") kotlin("kapt") diff --git a/build-logic/src/main/kotlin/buildlogic.kotlinspring-test-conventions.gradle.kts b/build-logic/src/main/kotlin/buildlogic.kotlin-spring-boot-test-conventions.gradle.kts similarity index 100% rename from build-logic/src/main/kotlin/buildlogic.kotlinspring-test-conventions.gradle.kts rename to build-logic/src/main/kotlin/buildlogic.kotlin-spring-boot-test-conventions.gradle.kts diff --git a/build-logic/src/main/kotlin/buildlogic.publish-conventions.gradle.kts b/build-logic/src/main/kotlin/buildlogic.maven-publish-conventions.gradle.kts similarity index 97% rename from build-logic/src/main/kotlin/buildlogic.publish-conventions.gradle.kts rename to build-logic/src/main/kotlin/buildlogic.maven-publish-conventions.gradle.kts index fd9398aaf..22a494a3d 100644 --- a/build-logic/src/main/kotlin/buildlogic.publish-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.maven-publish-conventions.gradle.kts @@ -33,7 +33,7 @@ mavenPublishing { // Detect the Kotlin JVM plugin (including indirect application) project.plugins.hasPlugin("org.jetbrains.kotlin.jvm") || project.plugins.hasPlugin("buildlogic.kotlin-conventions") || - project.plugins.hasPlugin("buildlogic.kotlinspring-conventions") -> { + project.plugins.hasPlugin("buildlogic.kotlin-spring-boot-conventions") -> { configure( KotlinJvm( javadocJar = JavadocJar.Empty(), diff --git a/cacheable/build.gradle.kts b/cacheable/build.gradle.kts index fb478b692..22ac90618 100644 --- a/cacheable/build.gradle.kts +++ b/cacheable/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/data/data-extract/build.gradle.kts b/data/data-extract/build.gradle.kts index 301eef2f4..9652e1355 100644 --- a/data/data-extract/build.gradle.kts +++ b/data/data-extract/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/depend/depend-jackson/build.gradle.kts b/depend/depend-jackson/build.gradle.kts index 3ff583132..a1cf886c4 100644 --- a/depend/depend-jackson/build.gradle.kts +++ b/depend/depend-jackson/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/depend/depend-paho/build.gradle.kts b/depend/depend-paho/build.gradle.kts index 306dd62ec..ccd0f3e57 100644 --- a/depend/depend-paho/build.gradle.kts +++ b/depend/depend-paho/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/depend/depend-servlet/build.gradle.kts b/depend/depend-servlet/build.gradle.kts index d70cfd033..561b069de 100644 --- a/depend/depend-servlet/build.gradle.kts +++ b/depend/depend-servlet/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/depend/depend-springdoc-openapi/build.gradle.kts b/depend/depend-springdoc-openapi/build.gradle.kts index a421f94a5..30064de46 100644 --- a/depend/depend-springdoc-openapi/build.gradle.kts +++ b/depend/depend-springdoc-openapi/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/depend/depend-xxl-job/build.gradle.kts b/depend/depend-xxl-job/build.gradle.kts index 0abbeea54..8db28e191 100644 --- a/depend/depend-xxl-job/build.gradle.kts +++ b/depend/depend-xxl-job/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/docsite/build.gradle.kts b/docsite/build.gradle.kts index 2447e5590..ff7168805 100644 --- a/docsite/build.gradle.kts +++ b/docsite/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-test-conventions") + id("buildlogic.kotlin-spring-boot-test-conventions") id("buildlogic.spotless-conventions") alias(libs.plugins.org.springframework.boot) alias(libs.plugins.com.google.devtools.ksp) diff --git a/gradleplugin/gradleplugin-composeserver/build.gradle.kts b/gradleplugin/gradleplugin-composeserver/build.gradle.kts index f92d96c6e..7619ae5ee 100644 --- a/gradleplugin/gradleplugin-composeserver/build.gradle.kts +++ b/gradleplugin/gradleplugin-composeserver/build.gradle.kts @@ -1,7 +1,7 @@ plugins { `java-gradle-plugin` id("buildlogic.kotlin-conventions") - id("buildlogic.publish-conventions") + id("buildlogic.maven-publish-conventions") id("buildlogic.spotless-conventions") } diff --git a/gradleplugin/gradleplugin-dotenv/build.gradle.kts b/gradleplugin/gradleplugin-dotenv/build.gradle.kts index 39897db3f..28fdd62fa 100644 --- a/gradleplugin/gradleplugin-dotenv/build.gradle.kts +++ b/gradleplugin/gradleplugin-dotenv/build.gradle.kts @@ -1,7 +1,7 @@ plugins { `java-gradle-plugin` id("buildlogic.kotlin-conventions") - id("buildlogic.publish-conventions") + id("buildlogic.maven-publish-conventions") id("buildlogic.spotless-conventions") } diff --git a/integrate-test/cacheable/build.gradle.kts b/integrate-test/cacheable/build.gradle.kts index e875110cc..c21f071b3 100644 --- a/integrate-test/cacheable/build.gradle.kts +++ b/integrate-test/cacheable/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-test-conventions") + id("buildlogic.kotlin-spring-boot-test-conventions") id("buildlogic.spotless-conventions") } diff --git a/integrate-test/depend/jackson/build.gradle.kts b/integrate-test/depend/jackson/build.gradle.kts index ab752a4c8..1cec522f7 100644 --- a/integrate-test/depend/jackson/build.gradle.kts +++ b/integrate-test/depend/jackson/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-test-conventions") + id("buildlogic.kotlin-spring-boot-test-conventions") id("buildlogic.spotless-conventions") } diff --git a/integrate-test/oss/minio/build.gradle.kts b/integrate-test/oss/minio/build.gradle.kts index 9c33467c2..e0a30b998 100644 --- a/integrate-test/oss/minio/build.gradle.kts +++ b/integrate-test/oss/minio/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-test-conventions") + id("buildlogic.kotlin-spring-boot-test-conventions") id("buildlogic.spotless-conventions") } diff --git a/integrate-test/oss/volcengine-tos/build.gradle.kts b/integrate-test/oss/volcengine-tos/build.gradle.kts index d2ed3619e..1acad5f63 100644 --- a/integrate-test/oss/volcengine-tos/build.gradle.kts +++ b/integrate-test/oss/volcengine-tos/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-test-conventions") + id("buildlogic.kotlin-spring-boot-test-conventions") id("buildlogic.spotless-conventions") id("io.github.truenine.composeserver.dotenv") } diff --git a/oss/oss-aliyun-oss/build.gradle.kts b/oss/oss-aliyun-oss/build.gradle.kts index c7fb7316c..afa921d4a 100644 --- a/oss/oss-aliyun-oss/build.gradle.kts +++ b/oss/oss-aliyun-oss/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/oss/oss-huawei-obs/build.gradle.kts b/oss/oss-huawei-obs/build.gradle.kts index e2c0e4c8d..e20683f8f 100644 --- a/oss/oss-huawei-obs/build.gradle.kts +++ b/oss/oss-huawei-obs/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/oss/oss-minio/build.gradle.kts b/oss/oss-minio/build.gradle.kts index b98d14db8..46a1ace59 100644 --- a/oss/oss-minio/build.gradle.kts +++ b/oss/oss-minio/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/oss/oss-shared/build.gradle.kts b/oss/oss-shared/build.gradle.kts index 4c0b941e2..cfcea90dc 100644 --- a/oss/oss-shared/build.gradle.kts +++ b/oss/oss-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/oss/oss-volcengine-tos/build.gradle.kts b/oss/oss-volcengine-tos/build.gradle.kts index 5c62f1e28..9f1ad43a7 100644 --- a/oss/oss-volcengine-tos/build.gradle.kts +++ b/oss/oss-volcengine-tos/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") id("io.github.truenine.composeserver.dotenv") } diff --git a/pay/pay-shared/build.gradle.kts b/pay/pay-shared/build.gradle.kts index 2f728e0c8..dcc2e8349 100644 --- a/pay/pay-shared/build.gradle.kts +++ b/pay/pay-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/pay/pay-wechat/build.gradle.kts b/pay/pay-wechat/build.gradle.kts index a7a26e52c..3214d0dab 100644 --- a/pay/pay-wechat/build.gradle.kts +++ b/pay/pay-wechat/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/psdk/psdk-wxpa/build.gradle.kts b/psdk/psdk-wxpa/build.gradle.kts index a9d7cd302..5f188169c 100644 --- a/psdk/psdk-wxpa/build.gradle.kts +++ b/psdk/psdk-wxpa/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/rds/rds-crud/build.gradle.kts b/rds/rds-crud/build.gradle.kts index a39d5f863..96980dee6 100644 --- a/rds/rds-crud/build.gradle.kts +++ b/rds/rds-crud/build.gradle.kts @@ -1,6 +1,6 @@ plugins { alias(libs.plugins.com.google.devtools.ksp) - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/rds/rds-flyway-migration-mysql8/build.gradle.kts b/rds/rds-flyway-migration-mysql8/build.gradle.kts index f73bb7175..5c475d90d 100644 --- a/rds/rds-flyway-migration-mysql8/build.gradle.kts +++ b/rds/rds-flyway-migration-mysql8/build.gradle.kts @@ -1,6 +1,6 @@ plugins { alias(libs.plugins.com.google.devtools.ksp) - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") id("buildlogic.spotless-sql-conventions") } diff --git a/rds/rds-flyway-migration-postgresql/build.gradle.kts b/rds/rds-flyway-migration-postgresql/build.gradle.kts index 5a69a28d2..4c0789da7 100644 --- a/rds/rds-flyway-migration-postgresql/build.gradle.kts +++ b/rds/rds-flyway-migration-postgresql/build.gradle.kts @@ -1,6 +1,6 @@ plugins { alias(libs.plugins.com.google.devtools.ksp) - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") id("buildlogic.spotless-sql-conventions") } diff --git a/rds/rds-flyway-migration-shared/build.gradle.kts b/rds/rds-flyway-migration-shared/build.gradle.kts index 254d73f0b..d091886ce 100644 --- a/rds/rds-flyway-migration-shared/build.gradle.kts +++ b/rds/rds-flyway-migration-shared/build.gradle.kts @@ -1,6 +1,6 @@ plugins { alias(libs.plugins.com.google.devtools.ksp) - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/rds/rds-jimmer-ext-postgres/build.gradle.kts b/rds/rds-jimmer-ext-postgres/build.gradle.kts index beecaaf58..7d89204c8 100644 --- a/rds/rds-jimmer-ext-postgres/build.gradle.kts +++ b/rds/rds-jimmer-ext-postgres/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/rds/rds-shared/build.gradle.kts b/rds/rds-shared/build.gradle.kts index de0ab6988..c14f5a17e 100644 --- a/rds/rds-shared/build.gradle.kts +++ b/rds/rds-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") alias(libs.plugins.com.google.devtools.ksp) id("buildlogic.spotless-conventions") } diff --git a/security/security-casbin/build.gradle.kts b/security/security-casbin/build.gradle.kts index 4e762a9cd..42b034f0b 100644 --- a/security/security-casbin/build.gradle.kts +++ b/security/security-casbin/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/security/security-crypto/build.gradle.kts b/security/security-crypto/build.gradle.kts index fdc95545e..002acd749 100644 --- a/security/security-crypto/build.gradle.kts +++ b/security/security-crypto/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/security/security-oauth2/build.gradle.kts b/security/security-oauth2/build.gradle.kts index 3641c673d..aedf2e607 100644 --- a/security/security-oauth2/build.gradle.kts +++ b/security/security-oauth2/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/security/security-spring/build.gradle.kts b/security/security-spring/build.gradle.kts index 5e687b0f6..c28a5823b 100644 --- a/security/security-spring/build.gradle.kts +++ b/security/security-spring/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 5dfd52f65..7dc43f3f1 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - id("buildlogic.kotlinspring-conventions") - id("buildlogic.publish-conventions") + id("buildlogic.kotlin-spring-boot-conventions") + id("buildlogic.maven-publish-conventions") id("buildlogic.spotless-conventions") } diff --git a/sms/sms-tencent/build.gradle.kts b/sms/sms-tencent/build.gradle.kts index b6988ccff..499c7beae 100644 --- a/sms/sms-tencent/build.gradle.kts +++ b/sms/sms-tencent/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/surveillance/surveillance-hikvision/build.gradle.kts b/surveillance/surveillance-hikvision/build.gradle.kts index 8f074ec37..ba4f86ebc 100644 --- a/surveillance/surveillance-hikvision/build.gradle.kts +++ b/surveillance/surveillance-hikvision/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/surveillance/surveillance-shared/build.gradle.kts b/surveillance/surveillance-shared/build.gradle.kts index 7fb469043..ddba0ac9e 100644 --- a/surveillance/surveillance-shared/build.gradle.kts +++ b/surveillance/surveillance-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/testtoolkit/testtoolkit-shared/build.gradle.kts b/testtoolkit/testtoolkit-shared/build.gradle.kts index 2a8514025..6b84b39e0 100644 --- a/testtoolkit/testtoolkit-shared/build.gradle.kts +++ b/testtoolkit/testtoolkit-shared/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/testtoolkit/testtoolkit-springmvc/build.gradle.kts b/testtoolkit/testtoolkit-springmvc/build.gradle.kts index 570256976..79cc28f43 100644 --- a/testtoolkit/testtoolkit-springmvc/build.gradle.kts +++ b/testtoolkit/testtoolkit-springmvc/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/testtoolkit/testtoolkit-testcontainers/build.gradle.kts b/testtoolkit/testtoolkit-testcontainers/build.gradle.kts index 1c4a6e5a1..b512ee8a2 100644 --- a/testtoolkit/testtoolkit-testcontainers/build.gradle.kts +++ b/testtoolkit/testtoolkit-testcontainers/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("buildlogic.kotlinspring-conventions") + id("buildlogic.kotlin-spring-boot-conventions") id("buildlogic.spotless-conventions") } diff --git a/version-catalog/build.gradle.kts b/version-catalog/build.gradle.kts index b8e082fbc..94041a789 100644 --- a/version-catalog/build.gradle.kts +++ b/version-catalog/build.gradle.kts @@ -6,7 +6,7 @@ plugins { alias(libs.plugins.com.github.ben.manes.versions) `version-catalog` java - id("buildlogic.publish-conventions") + id("buildlogic.maven-publish-conventions") } repositories { From c059a749e9b2907b6cbd2a2674a9b33072a5c4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Sun, 30 Nov 2025 18:11:38 +0800 Subject: [PATCH 04/18] chore(gitignore): remove agent-specific docs and add to gitignore - Delete testtoolkit/AGENTS.md agent configuration documentation - Delete testtoolkit/CLAUDE.md Claude-specific documentation - Delete testtoolkit/GEMINI.md Gemini-specific documentation - Add AGENTS.md, CLAUDE.md, and GEMINI.md to .gitignore to prevent agent-specific files from being tracked - Consolidate agent documentation into a single source of truth outside version control --- .gitignore | 3 + testtoolkit/AGENTS.md | 145 ------------------------------------------ testtoolkit/CLAUDE.md | 145 ------------------------------------------ 3 files changed, 3 insertions(+), 290 deletions(-) delete mode 100644 testtoolkit/AGENTS.md delete mode 100644 testtoolkit/CLAUDE.md diff --git a/.gitignore b/.gitignore index 1d3590cc7..90007150f 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,6 @@ src/main/**/out/ src/test/**/bin/ src/test/**/out/ TODO.* +AGENTS.md +CLAUDE.md +GEMINI.md diff --git a/testtoolkit/AGENTS.md b/testtoolkit/AGENTS.md deleted file mode 100644 index ad0e7ba89..000000000 --- a/testtoolkit/AGENTS.md +++ /dev/null @@ -1,145 +0,0 @@ -# Test Toolkit - -Test toolkit providing automatic configuration and utility functions during testing. - -## Features - -### Auto Configuration - -- **Disable Condition Evaluation Report**: Automatically disable Spring Boot's condition evaluation report to reduce test log noise -- **Disable Banner**: Automatically disable Spring Boot startup banner to simplify test output -- **Enable Virtual Threads**: Enable JDK virtual threads by default to improve test performance -- **ANSI Color Output**: Support multiple color output modes (never/detect/always) to enhance log readability -- **Property Injection**: Support custom test property injection -- **Early Configuration**: Use ApplicationListener for configuration in early application startup stages - -### Utility Functions - -- **Logging Utilities**: Provide Kotlin-style logging functions -- **Spring MVC Utilities**: Provide MVC-related utility functions during testing -- **Testcontainers Support**: Integrate Testcontainers testing tools - -## Usage - -### 1. Add Dependencies - -Add to your module's `build.gradle.kts`: - -```kotlin -dependencies { - testImplementation(project(":testtoolkit")) -} -``` - -### 2. Auto Configuration - -TestToolkit uses Spring Boot's auto-configuration mechanism, no manual configuration required. - -#### Default Configuration - -```yaml -# application-test.yml -compose: - testtoolkit: - enabled: true # Enable test toolkit - disable-condition-evaluation-report: true # Disable condition evaluation report - enable-virtual-threads: true # Enable virtual threads - ansi-output-mode: always # ANSI color output mode -``` - -#### Custom Configuration - -```yaml -# application-test.yml -compose: - testtoolkit: - enabled: true - disable-condition-evaluation-report: false - enable-virtual-threads: true - ansi-output-mode: detect # never, detect, always - additional-properties: - custom.property.1: "value1" - custom.property.2: "value2" -``` - -### 3. Test Class Example - -```kotlin -@SpringBootTest -class MyServiceTest { - - @Autowired - private lateinit var myService: MyService - - @Test - fun `test service functionality`() { - log.trace("testing service functionality") - - val result = myService.doSomething() - - assertTrue(result.isSuccess, "service call should succeed") - - log.debug("service test completed") - } -} -``` - -### 4. Disable Auto Configuration - -To disable auto configuration in specific tests: - -```kotlin -@SpringBootTest -@TestPropertySource(properties = ["compose.testtoolkit.enabled=false"]) -class MySpecialTest { - // Test code -} -``` - -## Configuration Properties - -| Property Name | Type | Default | Description | -|-----------------------------------------------------------|---------------------|--------|--------------------------------------------| -| `compose.testtoolkit.enabled` | Boolean | true | Whether to enable test toolkit | -| `compose.testtoolkit.disable-condition-evaluation-report` | Boolean | true | Whether to disable condition evaluation report | -| `compose.testtoolkit.enable-virtual-threads` | Boolean | true | Whether to enable virtual threads | -| `compose.testtoolkit.ansi-output-mode` | AnsiOutputMode | always | ANSI color output mode (never/detect/always) | -| `compose.testtoolkit.additional-properties` | Map | {} | Additional test properties | - -## Provided Beans - -- **TestConfigurationBean**: Main configuration bean -- **TestEnvironmentPostProcessor**: Test environment post-processor - -## Utility Functions - -### Logging Functions - -```kotlin -// Get logger instance -val log = this.log - -// Print variable values directly -log.info(::variableName) -``` - -### Type Aliases - -```kotlin -typealias SysLogger = org.slf4j.Logger -typealias RDBRollback = Rollback -typealias TempDirMapping = TempDir -``` - -## Best Practices - -1. **Test Method Naming**: Use Chinese naming for test methods to describe test scenarios -2. **Logging**: Log at the beginning and end of test methods for debugging -3. **Property Configuration**: Place test-related configurations in `application-test.yml` -4. **Environment Isolation**: Use profiles to distinguish different test environments - -## Notes - -- Auto configuration only takes effect in test environments -- Color output requires terminal ANSI color support -- Disabling condition evaluation report may affect debugging, enable as needed \ No newline at end of file diff --git a/testtoolkit/CLAUDE.md b/testtoolkit/CLAUDE.md deleted file mode 100644 index ad0e7ba89..000000000 --- a/testtoolkit/CLAUDE.md +++ /dev/null @@ -1,145 +0,0 @@ -# Test Toolkit - -Test toolkit providing automatic configuration and utility functions during testing. - -## Features - -### Auto Configuration - -- **Disable Condition Evaluation Report**: Automatically disable Spring Boot's condition evaluation report to reduce test log noise -- **Disable Banner**: Automatically disable Spring Boot startup banner to simplify test output -- **Enable Virtual Threads**: Enable JDK virtual threads by default to improve test performance -- **ANSI Color Output**: Support multiple color output modes (never/detect/always) to enhance log readability -- **Property Injection**: Support custom test property injection -- **Early Configuration**: Use ApplicationListener for configuration in early application startup stages - -### Utility Functions - -- **Logging Utilities**: Provide Kotlin-style logging functions -- **Spring MVC Utilities**: Provide MVC-related utility functions during testing -- **Testcontainers Support**: Integrate Testcontainers testing tools - -## Usage - -### 1. Add Dependencies - -Add to your module's `build.gradle.kts`: - -```kotlin -dependencies { - testImplementation(project(":testtoolkit")) -} -``` - -### 2. Auto Configuration - -TestToolkit uses Spring Boot's auto-configuration mechanism, no manual configuration required. - -#### Default Configuration - -```yaml -# application-test.yml -compose: - testtoolkit: - enabled: true # Enable test toolkit - disable-condition-evaluation-report: true # Disable condition evaluation report - enable-virtual-threads: true # Enable virtual threads - ansi-output-mode: always # ANSI color output mode -``` - -#### Custom Configuration - -```yaml -# application-test.yml -compose: - testtoolkit: - enabled: true - disable-condition-evaluation-report: false - enable-virtual-threads: true - ansi-output-mode: detect # never, detect, always - additional-properties: - custom.property.1: "value1" - custom.property.2: "value2" -``` - -### 3. Test Class Example - -```kotlin -@SpringBootTest -class MyServiceTest { - - @Autowired - private lateinit var myService: MyService - - @Test - fun `test service functionality`() { - log.trace("testing service functionality") - - val result = myService.doSomething() - - assertTrue(result.isSuccess, "service call should succeed") - - log.debug("service test completed") - } -} -``` - -### 4. Disable Auto Configuration - -To disable auto configuration in specific tests: - -```kotlin -@SpringBootTest -@TestPropertySource(properties = ["compose.testtoolkit.enabled=false"]) -class MySpecialTest { - // Test code -} -``` - -## Configuration Properties - -| Property Name | Type | Default | Description | -|-----------------------------------------------------------|---------------------|--------|--------------------------------------------| -| `compose.testtoolkit.enabled` | Boolean | true | Whether to enable test toolkit | -| `compose.testtoolkit.disable-condition-evaluation-report` | Boolean | true | Whether to disable condition evaluation report | -| `compose.testtoolkit.enable-virtual-threads` | Boolean | true | Whether to enable virtual threads | -| `compose.testtoolkit.ansi-output-mode` | AnsiOutputMode | always | ANSI color output mode (never/detect/always) | -| `compose.testtoolkit.additional-properties` | Map | {} | Additional test properties | - -## Provided Beans - -- **TestConfigurationBean**: Main configuration bean -- **TestEnvironmentPostProcessor**: Test environment post-processor - -## Utility Functions - -### Logging Functions - -```kotlin -// Get logger instance -val log = this.log - -// Print variable values directly -log.info(::variableName) -``` - -### Type Aliases - -```kotlin -typealias SysLogger = org.slf4j.Logger -typealias RDBRollback = Rollback -typealias TempDirMapping = TempDir -``` - -## Best Practices - -1. **Test Method Naming**: Use Chinese naming for test methods to describe test scenarios -2. **Logging**: Log at the beginning and end of test methods for debugging -3. **Property Configuration**: Place test-related configurations in `application-test.yml` -4. **Environment Isolation**: Use profiles to distinguish different test environments - -## Notes - -- Auto configuration only takes effect in test environments -- Color output requires terminal ANSI color support -- Disabling condition evaluation report may affect debugging, enable as needed \ No newline at end of file From b21cc81835c4f0c2cd681e1c15d916211e9995d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Sun, 30 Nov 2025 18:13:15 +0800 Subject: [PATCH 05/18] chore(rds-flyway-migration): remove agent-specific CLAUDE.md documentation - Remove CLAUDE.md file from rds-flyway-migration-shared module - Clean up agent-specific guidance documentation that should not be version controlled - Align with project policy of excluding agent-specific docs from repository --- rds/rds-flyway-migration-shared/CLAUDE.md | 168 ---------------------- 1 file changed, 168 deletions(-) delete mode 100644 rds/rds-flyway-migration-shared/CLAUDE.md diff --git a/rds/rds-flyway-migration-shared/CLAUDE.md b/rds/rds-flyway-migration-shared/CLAUDE.md deleted file mode 100644 index 318874a9f..000000000 --- a/rds/rds-flyway-migration-shared/CLAUDE.md +++ /dev/null @@ -1,168 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this Module. - -## Overview - -The `flyway-migration-shared` module defines common specifications and implementation requirements for database migration in the framework. This module provides unified implementation standards for database structure management functions/stored procedures across different database systems (PostgreSQL, MySQL, Oracle, SQL Server, etc.). - -## `ct_idx` Function/Stored Procedure - -Creates an index for a specified column in a specified table (if the column exists and the index does not exist). Supports idempotent operations and can be called repeatedly without errors. - -**Parameters:** - -- `tab_name`: Table name (varchar(128)) -- `col_name`: Column name (varchar(255)) - -**Implementation Logic:** - -1. Check if the specified column exists in the specified table -2. If the column exists, check if a corresponding index already exists -3. Create the index only when the column exists and the index does not exist -4. Index naming convention: `{col_name}_idx` - -**Core SQL Operations:** - -- Column existence check: `select column_name from information_schema.columns where table_name = ? and column_name = ?` -- Index existence check: `select index_name from information_schema.statistics where table_name = ? and index_name = ?` -- Index creation: `create index {col_name}_idx on {tab_name} ({col_name})` - -## `add_base_struct` Function/Stored Procedure - -**Function:** Add Compose Server standard base fields to a table - -**Parameters:** - -- `tab_name`: Table name (VARCHAR(128)) - -**Standard Fields:** - -- `id`: Primary key field (BIGINT NOT NULL PRIMARY KEY), default value is non-auto-increment int64 type, **must not set any auto-increment strategy, should be handled by the application** -- `rlv`: Row Lock Version (INT DEFAULT 0), default value is 0 of int32 type, cannot be NULL -- `crd`: Created Row Datetime (TIMESTAMP DEFAULT CURRENT_TIMESTAMP), timezone-independent millisecond timestamp, default value is the timestamp when the table record is inserted -- `mrd`: Modify Row Datetime (TIMESTAMP DEFAULT null), timezone-independent millisecond timestamp, default is null -- `ldf`: Logic Delete Flag (TIMESTAMP NULL DEFAULT NULL) - -**Implementation Requirements:** - -- Check if fields already exist to avoid duplicate additions -- For tables with existing data, properly handle the addition of the ID field - - PostgreSQL: Use temporary sequence to generate IDs for existing data - - MySQL: Use AUTO_INCREMENT feature -- Support idempotent operations - -## `rm_base_struct` Function/Stored Procedure - -**Function:** Remove base structure fields from a table - -**Parameters:** - -- `tab_name`: Table name (VARCHAR(128)) - -**Implementation Requirements:** - -- Remove fields in the correct order (remove constraints first, then remove fields) -- Safely handle primary key constraint deletion -- Support idempotent operations - -## `add_tree_struct` Function/Stored Procedure - -**Function:** Add tree structure support fields to a table - -**Parameters:** - -- `tab_name`: Table name (VARCHAR(128)) - -**Tree Structure Fields:** - -- `rpi`: Row Parent Id (BIGINT DEFAULT NULL) - -**Implementation Requirements:** - -- Create index for `rpi` field -- Support idempotent operations - -## `add_presort_tree_struct` Function/Stored Procedure - -**Function:** Add pre-sorted tree structure support fields to a table - -**Parameters:** - -- `tab_name`: Table name (VARCHAR(128)) - -**Pre-sorted Tree Fields:** - -- `rpi`: Row Parent Id (BIGINT DEFAULT NULL) -- `rln`: Row Left Node (BIGINT DEFAULT 1) -- `rrn`: Row Right Node (BIGINT DEFAULT 2) -- `nlv`: Node Level (INT DEFAULT 0) -- `tgi`: Tree Group Id (VARCHAR(255)) - -**Implementation Requirements:** - -- Create corresponding indexes for all fields -- Support nested set model tree structure -- Support idempotent operations - -## `all_to_nullable` Function/Stored Procedure - -**Function:** Set all non-primary key fields in a table to nullable - -**Parameters:** - -- `tab_name`: Table name (VARCHAR(128)) - -**Implementation Requirements:** - -- Exclude primary key fields -- Remove NOT NULL constraints from fields -- Remove default values from fields -- Support idempotent operations - -## Implementation Specifications - -### General Requirements - -1. **Idempotency**: All functions/stored procedures must support repeated execution without errors -2. **Security**: Use parameterized queries to prevent SQL injection -3. **Error Handling**: Properly handle exceptional situations and provide meaningful error messages -4. **Performance**: Check if objects exist before operations to avoid unnecessary operations -5. **Version Inclusion**: add functions and rm functions should appear in the same version .sql file - -### Database-Specific Requirements - -#### PostgreSQL - -- Use PL/pgSQL language -- Use `format()` function for dynamic SQL construction -- Use `%I` identifier escaping to prevent injection -- Support array operations and loop structures - -#### Postgresql - -**Function:** Provide implicit conversions between common data types - -**Supported Conversions:** - -- json ↔ varchar -- bigint ↔ varchar - -**Implementation Requirements:** - -- Use `with inout as implicit` syntax -- Delete existing conversions first, then create new ones - -#### MySQL - -- Use stored procedure syntax -- Use `delimiter` to handle statement separators -- Use prepared statements to execute dynamic SQL -- Use `information_schema` for metadata queries - -### Naming Conventions - -- Function/stored procedure names use lowercase letters separated by underscores -- Index naming: `{column_name}_idx` -- Constraint naming follows database default rules -- Temporary objects use `temp_` prefix From 67e404afe8649c87f15bb4846ef08f503598f444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=97=A5=E5=A4=A9?= Date: Sun, 30 Nov 2025 21:35:16 +0800 Subject: [PATCH 06/18] style(imports): consolidate and optimize import statements across modules - Replace explicit imports with wildcard imports where appropriate for succinctness - Organize and alphabetize import statements consistently - Remove unused or redundant import statements from various Kotlin source and test files - Standardize time and date imports using java.time.* for uniformity - Adjust import grouping for better maintainability and readability across projects - Apply consistent import formatting in both production and test codebase --- .idea/codeStyles/Project.xml | 3 +- ...logic.maven-publish-conventions.gradle.kts | 5 +- .../composeserver/cacheable/SpringCacheFns.kt | 2 +- .../CaffeineCacheAutoConfiguration.kt | 6 +- .../RedisJsonSerializerAutoConfiguration.kt | 6 +- .../autoconfig/AutoConfigurationBeanTest.kt | 4 +- .../caffeine/CaffeineCacheManagerTest.kt | 11 +- .../data/crawler/playwright/BrowserFns.kt | 4 +- .../data/crawler/playwright/PageFns.kt | 4 +- .../data/crawler/playwright/PlayWrightFns.kt | 4 +- .../data/extract/EasyExcelFns.kt | 2 +- .../extract/service/ILazyAddressService.kt | 4 +- .../service/impl/LazyAddressCsvServiceImpl.kt | 4 +- .../data/extract/api/ICnNbsAddressApiTest.kt | 4 +- .../data/extract/domain/CnDistrictCodeTest.kt | 5 +- .../data/extract/service/IChinaNameTest.kt | 2 +- .../service/ILazyAddressServiceTest.kt | 9 +- .../impl/LazyAddressCsvServiceImplTest.kt | 8 +- .../impl/LazyAddressServiceImplTest.kt | 5 +- .../depend/httpexchange/WebClientFns.kt | 8 +- .../autoconfig/JacksonAutoConfiguration.kt | 25 +- .../jackson/modules/DatetimeCustomModule.kt | 24 +- .../jackson/modules/KotlinCustomModule.kt | 8 +- .../jackson/serializers/AnyEnumConverter.kt | 6 +- .../jackson/serializers/AnyEnumSerializer.kt | 4 +- .../serializers/IPageParamLikeSerializer.kt | 4 +- .../serializers/ISO8601Deserializer.kt | 11 +- .../jackson/serializers/ISO8601Serializer.kt | 5 +- .../serializers/InstantTimestampSerializer.kt | 2 +- .../jackson/serializers/KPairDeserializer.kt | 4 +- .../LocalDateTimeTimestampSerializer.kt | 5 +- .../LocalDateTimestampSerializer.kt | 5 +- .../LocalTimeTimestampSerializer.kt | 5 +- .../OffsetDateTimeTimestampSerializer.kt | 5 +- .../serializers/TimestampDeserializer.kt | 12 +- .../serializers/TimestampSerializer.kt | 8 +- .../ZonedDateTimeTimestampSerializer.kt | 5 +- .../depend/jackson/AnyEnumDeserializerTest.kt | 4 +- .../jackson/ByteArrayDeserializerTest.kt | 4 +- .../depend/jackson/DataClassSerializerTest.kt | 4 +- .../depend/jackson/DatetimeSerializeTest.kt | 6 +- .../depend/jackson/DatetimeSerializerTest.kt | 4 +- .../depend/jackson/IPageParamEnhancedTest.kt | 4 +- ...ageParamLikeSerializerErrorHandlingTest.kt | 4 +- .../depend/jackson/IPageParamTest.kt | 4 +- .../depend/jackson/JacksonAutoConfigTest.kt | 4 +- .../jackson/JacksonSerializationConfigTest.kt | 10 +- .../jackson/JacksonSerializationTest.kt | 9 +- .../jackson/KotlinModuleCompatibilityTest.kt | 8 +- .../jackson/KotlinPairSerializationTest.kt | 4 +- .../depend/jackson/PeriodSerializerTest.kt | 6 +- .../jackson/SailedClassSerializerTest.kt | 4 +- .../jackson/TimestampSerializationTest.kt | 14 +- .../jackson/TimestampSerializersTest.kt | 25 +- .../autoconfig/JacksonPropertiesTest.kt | 4 +- .../jackson/holders/ObjectMapperHolderTest.kt | 4 +- .../serializers/ISO8601DeserializerTest.kt | 11 +- .../serializers/ISO8601SerializerTest.kt | 17 +- .../depend/paho/paho/MqttPahoClientWrapper.kt | 4 +- .../paho/properties/SingleMqttProperties.kt | 2 +- .../composeserver/depend/paho/PahoTest.kt | 2 +- .../depend/servlet/annotations/HeadMapping.kt | 4 +- .../CustomConverterConfiguration.kt | 8 +- .../converters/AnyEnumConverterFactory.kt | 7 +- .../converters/JavaLocalDateConverter.kt | 2 +- .../converters/JavaLocalDateTimeConverter.kt | 2 +- .../converters/JavaLocalTimeConverter.kt | 2 +- .../ToolsJacksonHttpMessageConverter.kt | 10 +- .../depend/servlet/filter/MDCFilter.kt | 7 +- .../ServletWebApplicationProperties.kt | 2 +- .../servlet/HttpServletRequestFnsTest.kt | 5 +- .../servlet/HttpServletResponseFnsTest.kt | 7 +- .../servlet/IReadableAttachmentFnsTest.kt | 7 +- .../depend/servlet/PathVariableTest.kt | 9 +- .../servlet/SpringResponseEntityFnsTest.kt | 7 +- .../servlet/annotations/HeadMappingTest.kt | 4 +- .../controller/TestGetParameterController.kt | 5 +- .../servlet/parameter/GetParameterTest.kt | 12 +- .../parameter/UploadFileParamAssertTest.kt | 11 +- .../IPageParamLikeArgumentResolverTest.kt | 9 +- .../autoconfig/OpenApiDocConfig.kt | 6 +- .../properties/SpringdocOpenApiProperties.kt | 4 +- .../springdocopenapi/ApiEndpointsTest.kt | 4 +- .../springdocopenapi/AutoConfigurationTest.kt | 4 +- .../depend/springdocopenapi/BeanSetupTest.kt | 4 +- .../springdocopenapi/OpenApiConfigTest.kt | 4 +- .../depend/springdocopenapi/PropertiesTest.kt | 9 +- .../springdocopenapi/TestApplication.kt | 4 +- gradle/libs.versions.toml | 4 + .../gradleplugin/GradleExtensions.kt | 6 +- .../gradleplugin/dotenv/DotenvLoader.kt | 4 +- .../gradleplugin/entrance/ConfigEntrance.kt | 2 +- .../gradleplugin/generator/GradleGenerator.kt | 10 +- .../generator/GradleGeneratorConfig.kt | 2 +- .../gradleplugin/jar/JarExtension.kt | 4 +- .../gradleplugin/FunctionsTest.kt | 4 +- .../gradleplugin/GradleFnsTest.kt | 2 +- .../gradleplugin/GradlePluginTestSuite.kt | 4 +- .../composeserver/gradleplugin/MainTest.kt | 4 +- .../gradleplugin/consts/ConstantTest.kt | 2 +- .../consts/GradleProjectDelegatorTest.kt | 4 +- .../gradleplugin/dotenv/DotenvConfigTest.kt | 5 +- .../dotenv/DotenvIntegrationTest.kt | 8 +- .../gradleplugin/dotenv/DotenvLoaderTest.kt | 8 +- .../entrance/ConfigEntranceTest.kt | 4 +- .../generator/GradleGeneratorConfigTest.kt | 6 +- .../generator/MavenRepoTypeTest.kt | 4 +- .../jar/JarExtensionConfigTest.kt | 2 +- .../jar/JarExtensionSimpleTest.kt | 6 +- .../gradleplugin/jar/JarExtensionTest.kt | 8 +- .../composeserver/gradleplugin/dotenv/Main.kt | 2 +- .../dotenv/DotenvPluginFunctionalTest.kt | 6 +- .../ide/ideamcp/FileOperationPanel.kt | 31 +- .../ide/ideamcp/LibCodeTestPanel.kt | 22 +- .../ide/ideamcp/McpDebugPanel.kt | 4 +- .../ide/ideamcp/McpTerminalPanel.kt | 21 +- .../ide/ideamcp/TerminalOutputInterceptor.kt | 12 +- .../ide/ideamcp/actions/CleanCodeAction.kt | 9 +- .../ide/ideamcp/actions/CleanOptionsDialog.kt | 7 +- .../ide/ideamcp/actions/CleanResultDialog.kt | 11 +- .../ide/ideamcp/actions/ErrorReportDialog.kt | 11 +- .../ideamcp/actions/ErrorViewOptionsDialog.kt | 7 +- .../ide/ideamcp/actions/LibCodeDialog.kt | 8 +- .../ide/ideamcp/actions/ViewErrorAction.kt | 9 +- .../ide/ideamcp/actions/ViewLibCodeAction.kt | 13 +- .../ide/ideamcp/services/CleanService.kt | 8 +- .../ide/ideamcp/services/ErrorService.kt | 9 +- .../ide/ideamcp/services/LibCodeService.kt | 4 +- .../ide/ideamcp/tools/CleanCodeTool.kt | 4 +- .../ide/ideamcp/tools/TerminalTool.kt | 6 +- .../ide/ideamcp/tools/ViewErrorTool.kt | 2 +- .../ide/ideamcp/FileOperationPanelTest.kt | 5 +- .../ide/ideamcp/demo/LibCodeServiceDemo.kt | 2 +- .../examples/LibCodeServiceUsageExample.kt | 4 +- .../integration/FullIntegrationTest.kt | 20 +- .../ide/ideamcp/services/CleanServiceTest.kt | 9 +- .../services/ErrorCaptureFilterTest.kt | 5 +- .../services/ErrorServiceFunctionalTest.kt | 4 +- .../services/ErrorServiceIntegrationTest.kt | 5 +- .../ide/ideamcp/services/FileManagerTest.kt | 5 +- .../services/LibCodeServiceConsoleTest.kt | 5 +- .../services/LibCodeServiceImplTest.kt | 4 +- .../ide/ideamcp/simple/SimpleLibCodeTest.kt | 4 +- .../ide/ideamcp/testutil/MockDataGenerator.kt | 4 +- .../ide/ideamcp/tools/CleanCodeToolTest.kt | 5 +- .../ide/ideamcp/tools/TerminalToolTest.kt | 2 +- .../ide/ideamcp/tools/ViewErrorToolTest.kt | 2 +- .../ide/ideamcp/tools/ViewLibCodeToolTest.kt | 4 +- .../LibCodeServiceVerificationTest.kt | 5 +- .../RedisConnectionFactoryIntegrationTest.kt | 5 +- .../jackson/JacksonCustomConfigurationTest.kt | 8 +- .../JacksonTimestampConfigurationTest.kt | 11 +- .../jackson/ManualWebConfigurationTest.kt | 20 +- .../NonInternalObjectMapperIntegrationTest.kt | 4 +- .../jackson/TimezoneIndependenceTest.kt | 13 +- .../depend/jackson/TypedJacksonTest.kt | 4 +- .../minio/AutoConfigurationPropertiesTest.kt | 19 +- ...eTosObjectStorageServiceIntegrationTest.kt | 24 +- .../composeserver/ksp/plugin/KspPluginMain.kt | 4 +- .../ksp/plugin/KspPluginProcessor.kt | 14 +- .../ksp/plugin/visitor/JpaNameClassVisitor.kt | 50 +- .../truenine/composeserver/ksp/FunSpecFns.kt | 4 +- .../composeserver/ksp/KSAnnotatedFns.kt | 4 +- .../composeserver/ksp/KSDeclarationFns.kt | 8 +- .../composeserver/ksp/KSTypeReferenceFns.kt | 4 +- .../truenine/composeserver/ksp/Utils.kt | 13 +- .../composeserver/ksp/dsl/KFileSpecScope.kt | 4 +- .../composeserver/ksp/dsl/KObjectSpecScope.kt | 4 +- .../ksp/models/DeclarationContext.kt | 11 +- .../oss/minio/MinioObjectStorageService.kt | 112 +- .../autoconfig/MinioAutoConfiguration.kt | 2 +- .../oss/minio/properties/MinioProperties.kt | 2 +- .../minio/MinioObjectStorageServiceTest.kt | 13 +- .../oss/minio/ShareLinkIntegrationTest.kt | 17 +- .../autoconfig/MinioAutoConfigurationTest.kt | 4 +- .../truenine/composeserver/oss/Extensions.kt | 4 +- .../oss/IObjectStorageService.kt | 2 +- .../oss/properties/OssProperties.kt | 2 +- .../oss/IObjectStorageServiceTest.kt | 5 +- .../oss/MockObjectStorageServiceTest.kt | 4 +- .../oss/properties/OssPropertiesTest.kt | 7 +- .../VolcengineTosObjectStorageService.kt | 96 +- .../VolcengineTosAutoConfiguration.kt | 4 +- .../VolcengineTosObjectStorageServiceTest.kt | 56 +- .../volcengine/VolcengineTosPropertiesTest.kt | 6 +- .../autoconfig/RegionResolutionTest.kt | 2 +- .../VolcengineTosAutoConfigurationTest.kt | 4 +- .../WeChatPaySingleAutoConfiguration.kt | 8 +- .../service/impl/WeChatSinglePayService.kt | 23 +- .../impl/WeChatSinglePayServiceTest.kt | 2 +- .../wxpa/autoconfig/AutoConfigEntrance.kt | 2 +- .../wxpa/autoconfig/WxpaAutoConfiguration.kt | 4 +- .../psdk/wxpa/core/WxpaSignatureGenerator.kt | 4 +- .../psdk/wxpa/core/WxpaTokenManager.kt | 4 +- .../psdk/wxpa/event/WxpaTokenEvent.kt | 2 +- .../psdk/wxpa/event/WxpaTokenEventManager.kt | 6 +- .../psdk/wxpa/service/WxpaService.kt | 4 +- .../wxpa/core/WxpaSignatureGeneratorTest.kt | 6 +- .../psdk/wxpa/core/WxpaTokenManagerTest.kt | 10 +- .../psdk/wxpa/core/WxpaUserInfoServiceTest.kt | 8 +- .../wxpa/event/WxpaTokenEventManagerTest.kt | 13 +- .../psdk/wxpa/event/WxpaTokenEventTest.kt | 6 +- .../wxpa/integration/WxpaIntegrationTest.kt | 8 +- .../psdk/wxpa/service/WxpaServiceTest.kt | 14 +- .../autoconfig/JimmerAutoConfigurationTest.kt | 4 +- .../rds/crud/transaction/TestEntity.kt | 5 +- .../rds/crud/transaction/TransactionTest.kt | 6 +- .../flywaymigrationmysql8/IdempotencyTest.kt | 8 +- .../SimpleIdempotencyTest.kt | 4 +- .../flywaymigrationmysql8/SimpleMysqlTest.kt | 2 +- .../TestFlywayConfiguration.kt | 6 +- .../rds/flywaymigrationmysql8/V1CtIdxTest.kt | 8 +- .../flywaymigrationmysql8/V2BaseStructTest.kt | 8 +- .../flywaymigrationmysql8/V3TreeStructTest.kt | 8 +- .../V4PresortTreeStructTest.kt | 8 +- .../V5AllToNullableTest.kt | 8 +- .../flyway/AddBaseStructMigrationTest.kt | 8 +- .../AddPresortTreeStructMigrationTest.kt | 8 +- .../flyway/AddTreeStructMigrationTest.kt | 8 +- .../flyway/AllToNullableMigrationTest.kt | 8 +- .../BaseStructToJimmerStyleMigrationTest.kt | 8 +- .../flyway/CtIdxMigrationTest.kt | 8 +- .../flyway/FunctionExistenceAndCallTest.kt | 2 +- .../flyway/RmBaseStructMigrationTest.kt | 8 +- .../RmPresortTreeStructMigrationTest.kt | 8 +- .../flyway/AddBaseStructMigrationTest.kt | 4 +- .../AddPresortTreeStructMigrationTest.kt | 2 +- .../flyway/AddTreeStructMigrationTest.kt | 2 +- .../flyway/AllToNullableMigrationTest.kt | 2 +- .../BaseStructToJimmerStyleMigrationTest.kt | 2 +- .../flyway/CtIdxMigrationTest.kt | 2 +- .../flyway/FunctionExistenceAndCallTest.kt | 2 +- .../flyway/RmBaseStructMigrationTest.kt | 2 +- .../RmPresortTreeStructMigrationTest.kt | 2 +- ...ywayPropertiesOverrideAutoConfiguration.kt | 4 +- ...esOverrideAutoConfigurationDisabledTest.kt | 2 +- ...PropertiesOverrideAutoConfigurationTest.kt | 4 +- .../rds/jimmerextpostgres/StringFns.kt | 4 +- .../composeserver/rds/JimmerExtensions.kt | 4 +- .../composeserver/rds/SpringPageExtensions.kt | 4 +- .../composeserver/rds/annotations/ACID.kt | 2 +- .../rds/autoconfig/JimmerAutoConfiguration.kt | 5 +- .../AbstractJimmerTypingProvider.kt | 2 +- .../rds/converters/DurationScalarProvider.kt | 2 +- .../rds/converters/PeriodScalarProvider.kt | 2 +- .../composeserver/rds/entities/IEntity.kt | 6 +- .../rds/entities/IPersistentEntity.kt | 4 +- .../composeserver/rds/DisRuleFnsTest.kt | 6 +- .../composeserver/rds/SpringPageFnsTest.kt | 4 +- .../converters/DurationScalarProviderTest.kt | 4 +- .../converters/IIntEnumJimmerProviderTest.kt | 2 +- .../converters/PeriodScalarProviderTest.kt | 4 +- .../security/crypto/AutoGeneratedKeysRepo.kt | 4 +- .../crypto/CryptographicKeyManager.kt | 17 +- .../crypto/CryptographicOperations.kt | 8 +- .../security/crypto/FileKeyRepo.kt | 10 +- .../security/crypto/FileKeysRepoImpl.kt | 4 +- .../security/crypto/PemFormat.kt | 4 +- .../PasswordEncoderAutoconfiguration.kt | 4 +- .../crypto/ByteArrayExtensionsTest.kt | 8 +- .../crypto/CryptographicKeyManagerTest.kt | 7 +- .../crypto/CryptographicOperationsTest.kt | 9 +- .../security/crypto/IBase64Test.kt | 10 +- .../security/crypto/PemFormatTest.kt | 14 +- .../security/crypto/StringExtensionsTest.kt | 4 +- .../security/SecurityPolicyDefine.kt | 4 +- .../security/annotations/Admin.kt | 2 +- .../security/annotations/AllowAll.kt | 2 +- .../security/annotations/AuthedUser.kt | 2 +- .../security/annotations/EnableJwtIssuer.kt | 2 +- .../security/annotations/EnableJwtVerifier.kt | 2 +- .../annotations/EnableRestSecurity.kt | 2 +- .../security/annotations/Root.kt | 2 +- .../FileKeyRepoAutoConfiguration.kt | 4 +- .../autoconfig/JwtIssuerAutoConfiguration.kt | 8 +- .../security/autoconfig/SecurityPolicyBean.kt | 8 +- .../composeserver/security/jwt/JwtIssuer.kt | 4 +- .../composeserver/security/jwt/JwtVerifier.kt | 2 +- .../security/SecurityExceptionAdware.kt | 4 +- .../security/SecurityPreflightValidFilter.kt | 2 +- .../security/SecurityUserDetailsService.kt | 4 +- .../security/AuthenticationManagerFnsTest.kt | 8 +- .../security/jwt/JwtIssuerVerifierTest.kt | 11 +- shared/build.gradle.kts | 10 + .../io/github/truenine/composeserver/Alias.kt | 4 +- .../composeserver/DateTimeConverter.kt | 7 +- .../truenine/composeserver/JavaDateTimeFns.kt | 9 +- .../truenine/composeserver/JavaIoFns.kt | 4 +- .../composeserver/LoggerExtensions.kt | 2 +- .../IdGeneratorAutoConfiguration.kt | 9 +- .../composeserver/domain/IPageParam.kt | 4 +- .../composeserver/generator/IUUIDGenerator.kt | 77 ++ .../composeserver/generator/ULIDGenerator.kt | 243 ++++ .../holders/AbstractThreadLocalHolder.kt | 4 +- .../composeserver/holders/ResourceHolder.kt | 4 +- .../config/ResourceHolderConfiguration.kt | 4 +- .../holders/resolver/ResourceCache.kt | 2 +- .../holders/resolver/ResourceResolver.kt | 2 +- .../composeserver/AliasExtensionsTest.kt | 7 +- .../composeserver/CollectionExtensionsTest.kt | 6 +- .../composeserver/DateTimeConverterTest.kt | 11 +- .../truenine/composeserver/IStringTest.kt | 5 +- .../composeserver/JavaDateTimeFnsTest.kt | 13 +- .../composeserver/LoggerExtensionsTest.kt | 5 +- .../composeserver/ResultExtensionsTest.kt | 4 +- .../composeserver/UrlExtensionsTest.kt | 4 +- .../composeserver/consts/ICacheNamesTest.kt | 4 +- .../composeserver/consts/IHeadersTest.kt | 4 +- .../composeserver/consts/IInterAddrTest.kt | 4 +- .../composeserver/consts/IMethodsTest.kt | 4 +- .../consts/IParameterNamesTest.kt | 4 +- .../composeserver/consts/IRegexTest.kt | 4 +- .../composeserver/domain/IPageParamTest.kt | 8 +- .../composeserver/domain/TestPqController.kt | 5 +- .../domain/enc/EccKeyPairTest.kt | 9 +- .../domain/enc/RsaKeyPairTest.kt | 5 +- .../composeserver/enums/MediaTypesTest.kt | 6 +- .../generator/IUUIDGeneratorPropertyTest.kt | 164 +++ .../generator/OptimizedSnowflakeTest.kt | 16 +- ...ynchronizedSimpleOrderCodeGeneratorTest.kt | 24 +- .../SynchronizedSimpleSnowflakeTest.kt | 12 +- .../generator/ULIDGeneratorPropertyTest.kt | 1050 +++++++++++++++++ .../holders/AbstractThreadLocalHolderTest.kt | 8 +- .../holders/EventPublisherHolderTest.kt | 2 +- .../holders/ResourceHolderTest.kt | 4 +- .../config/ResourceHolderConfigurationTest.kt | 6 +- .../holders/config/ResourceSourceTest.kt | 5 +- .../fallback/ResourceFallbackHandlerTest.kt | 14 +- .../monitoring/ResourceHolderMetricsTest.kt | 6 +- .../optimization/PerformanceOptimizerTest.kt | 7 +- .../holders/resolver/ResourceCacheTest.kt | 6 +- .../holders/resolver/ResourceResolverTest.kt | 18 +- .../validation/ResourceValidatorTest.kt | 8 +- .../sms/tencent/TencentSmsTest.kt | 7 +- .../testtoolkit/KotlinTestExtensions.kt | 4 +- .../testtoolkit/LoggerExtensions.kt | 2 +- .../testtoolkit/utils/TestRetryUtils.kt | 2 +- .../composeserver/testtoolkit/AliasTest.kt | 7 +- .../testtoolkit/LoggerExtensionsTest.kt | 4 +- .../testtoolkit/SpringMvcExtensionsTest.kt | 4 +- .../testtoolkit/utils/TestRetryUtilsTest.kt | 5 +- .../testcontainers/ICacheRedisContainer.kt | 2 +- .../testcontainers/IOssMinioContainer.kt | 2 +- .../testcontainers/ITestContainerBase.kt | 4 +- .../utils/ContainerCommandExecutor.kt | 2 +- .../testtoolkit/utils/ContainerExtensions.kt | 2 +- .../TestcontainersVerificationTest.kt | 25 +- .../autoconfig/TestConfigurationBeanTest.kt | 17 +- .../TestEnvironmentApplicationListenerTest.kt | 14 +- .../TestcontainersPropertiesTest.kt | 8 +- .../ContainersIntegrationTest.kt | 8 +- .../testcontainers/ExtensionFunctionsTest.kt | 4 +- .../ICacheRedisContainerTest.kt | 7 +- .../IDatabaseMysqlContainerTest.kt | 9 +- .../IDatabasePostgresqlContainerTest.kt | 9 +- .../testcontainers/IOssMinioContainerTest.kt | 11 +- .../SimpleNewFeaturesVerificationTest.kt | 4 +- .../TestcontainersConfigurationHolderTest.kt | 4 +- .../utils/ContainerCommandExecutorTest.kt | 9 +- .../utils/ContainerExtensionsTest.kt | 7 +- 360 files changed, 2258 insertions(+), 1830 deletions(-) create mode 100644 shared/src/main/kotlin/io/github/truenine/composeserver/generator/IUUIDGenerator.kt create mode 100644 shared/src/main/kotlin/io/github/truenine/composeserver/generator/ULIDGenerator.kt create mode 100644 shared/src/test/kotlin/io/github/truenine/composeserver/generator/IUUIDGeneratorPropertyTest.kt create mode 100644 shared/src/test/kotlin/io/github/truenine/composeserver/generator/ULIDGeneratorPropertyTest.kt diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index bf2d3ab41..226305f96 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -31,8 +31,7 @@