Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ English: [CHANGELOG.md](CHANGELOG.md)

## [Unreleased]

## [0.4.1] — 2026-06-03

### Fixed
- **감사 로그 검색이 안정적인 페이지 구조를 반환.** `GET /admin/api/v1/audit-logs` 가 raw
`PageImpl` 대신 Spring Data `PagedModel`(`{ content, page: { size, number, totalElements,
totalPages } }`)로 직렬화됩니다. "Serializing PageImpl instances as-is is not supported" 경고가
사라지고 JSON 계약이 안정화됩니다. kit 자체 엔드포인트에만 적용(전역 `@EnableSpringDataWebSupport`
없음)이라 소비자 앱의 자체 페이징엔 영향이 없습니다.

## [0.4.0] — 2026-06-03

### Added
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ The library major aligns with the Spring Boot major: `4.x.y` targets Spring Boot

## [Unreleased]

## [0.4.1] — 2026-06-03

### Fixed
- **Audit log search returns a stable paged structure.** `GET /admin/api/v1/audit-logs` now
serializes via Spring Data's `PagedModel` (`{ content, page: { size, number, totalElements,
totalPages } }`) instead of a raw `PageImpl`, removing the "Serializing PageImpl instances
as-is is not supported" warning and giving a stable JSON contract. Contained to the kit's own
endpoint — no global `@EnableSpringDataWebSupport`, so a consumer's own pagination is unaffected.

## [0.4.0] — 2026-06-03

### Added
Expand Down
4 changes: 2 additions & 2 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
**Gradle (Kotlin DSL)**

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1")
```

**Maven**
Expand All @@ -72,7 +72,7 @@ implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
</dependency>
```

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ specific product's domain.
**Gradle (Kotlin DSL)**

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1")
```

**Maven**
Expand All @@ -74,7 +74,7 @@ implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
</dependency>
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import kr.devslab.kit.admin.AdminApiPaths;
import kr.devslab.kit.audit.core.service.AuditLogQueryService;
import kr.devslab.kit.audit.core.service.AuditLogQueryService.AuditLogSearchCriteria;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PagedModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
Expand Down Expand Up @@ -38,7 +38,7 @@ public AuditLogAdminController(AuditLogQueryService service, ObjectMapper object
* by {@code occurredAt DESC}. {@code page} is 0-based.
*/
@GetMapping
public Page<AuditLogResponse> search(
public PagedModel<AuditLogResponse> search(
@RequestParam(required = false) String tenantId,
@RequestParam(required = false) String actorLogin,
@RequestParam(required = false) String action,
Expand All @@ -55,7 +55,8 @@ public Page<AuditLogResponse> search(
Math.max(0, page),
Math.clamp(size == 0 ? DEFAULT_PAGE_SIZE : size, 1, MAX_PAGE_SIZE),
Sort.by(Sort.Direction.DESC, "occurredAt"));
return service.search(criteria, pageable).map(entity -> AuditLogResponse.from(entity, objectMapper));
return new PagedModel<>(
service.search(criteria, pageable).map(entity -> AuditLogResponse.from(entity, objectMapper)));
}

/**
Expand Down
12 changes: 6 additions & 6 deletions docs/getting-started/installation.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
=== "Gradle (Kotlin DSL)"

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1")
```

=== "Gradle (Groovy)"

```groovy
implementation 'kr.devslab:devslab-kit-spring-boot-starter:0.4.0'
implementation 'kr.devslab:devslab-kit-spring-boot-starter:0.4.1'
```

=== "Maven"
Expand All @@ -32,7 +32,7 @@
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
</dependency>
```

Expand All @@ -43,10 +43,10 @@
물러납니다(`@ConditionalOnMissingBean`).

```kotlin
implementation("kr.devslab:devslab-kit-access-core:0.4.0") // RBAC + 그룹 + ABAC
implementation("kr.devslab:devslab-kit-cache-core:0.4.0") // 플러그형 캐시
implementation("kr.devslab:devslab-kit-access-core:0.4.1") // RBAC + 그룹 + ABAC
implementation("kr.devslab:devslab-kit-cache-core:0.4.1") // 플러그형 캐시
// …또는 계약만:
implementation("kr.devslab:devslab-kit-access-api:0.4.0")
implementation("kr.devslab:devslab-kit-access-api:0.4.1")
```

동작하는 앱을 부팅하려면 [빠른 시작](quick-start.md)을 참고하세요.
Expand Down
12 changes: 6 additions & 6 deletions docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ whole platform; depend on individual modules only if you want à la carte.
=== "Gradle (Kotlin DSL)"

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0")
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1")
```

=== "Gradle (Groovy)"

```groovy
implementation 'kr.devslab:devslab-kit-spring-boot-starter:0.4.0'
implementation 'kr.devslab:devslab-kit-spring-boot-starter:0.4.1'
```

=== "Maven"
Expand All @@ -32,7 +32,7 @@ whole platform; depend on individual modules only if you want à la carte.
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
</dependency>
```

Expand All @@ -44,10 +44,10 @@ your own — the auto-configuration backs off (`@ConditionalOnMissingBean`) when
do.

```kotlin
implementation("kr.devslab:devslab-kit-access-core:0.4.0") // RBAC + groups + ABAC
implementation("kr.devslab:devslab-kit-cache-core:0.4.0") // pluggable cache
implementation("kr.devslab:devslab-kit-access-core:0.4.1") // RBAC + groups + ABAC
implementation("kr.devslab:devslab-kit-cache-core:0.4.1") // pluggable cache
// …or just the contract:
implementation("kr.devslab:devslab-kit-access-api:0.4.0")
implementation("kr.devslab:devslab-kit-access-api:0.4.1")
```

See [Quick Start](quick-start.md) to boot a working app.
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/configuration.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
=== "Gradle (Kotlin DSL)"

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0") {
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1") {
exclude(group = "org.springdoc")
}
```
Expand All @@ -132,7 +132,7 @@
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<exclusions>
<exclusion>
<groupId>org.springdoc</groupId>
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Two ways to turn it off:
=== "Gradle (Kotlin DSL)"

```kotlin
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.0") {
implementation("kr.devslab:devslab-kit-spring-boot-starter:0.4.1") {
exclude(group = "org.springdoc")
}
```
Expand All @@ -139,7 +139,7 @@ Two ways to turn it off:
<dependency>
<groupId>kr.devslab</groupId>
<artifactId>devslab-kit-spring-boot-starter</artifactId>
<version>0.4.0</version>
<version>0.4.1</version>
<exclusions>
<exclusion>
<groupId>org.springdoc</groupId>
Expand Down
Loading