Skip to content

Invenqor v0.2.29

Choose a tag to compare

@hkjang hkjang released this 08 Sep 20:04
· 16 commits to main since this release

Invenqor Server·Agent v0.2.29 릴리즈 노트

릴리즈 일자: 2026-09-09
호환 Agent: v0.2.29 (Linux·Windows)

이번 릴리즈는 결함 하나를 고칩니다. 자리는 **Query DSL 실행
(POST /api/v1/query/execute)**이고, 증상은 이전 릴리즈들과 같은 종류 — 오류
없이 받아들여진 뒤 조용히 짧아진 결과
— 입니다. 다만 이번에는 그 결과를 더 받아낼
방법이 아예 없어, 잘렸다는 사실 자체가 유일하게 남길 수 있는 표시였습니다.

1. 한도에 걸린 질의 결과가 전부인 것처럼 보였습니다

Query DSL 실행은 정해진 행 수까지만 읽습니다 — 기본 100행, 최대 500행입니다.
그런데 한도에 닿아 잘린 결과도 전부인 것처럼 돌려주었습니다.
1,200대가 조용해진 인벤토리에서 last_seen_at < "now - 720h"를 실행하면 100건과
count 100이 돌아왔고, 응답 어디에도 나머지 1,100대가 있다는 표시가
없었습니다.
이 엔드포인트에는 offset이 없으므로, 두 번째 요청으로 그것을 알아낼
방법도 없었습니다.

같은 핸들러가 /api/v1/external/query/execute도 처리합니다. 그쪽은 API Key를 가진
프로그램이 읽는 입구이고, 행 수가 자신이 요청한 한도에 정확히 떨어졌다는 것을
알아차릴 사람도 화면도 없습니다.

이제 실행은 한도보다 한 행을 더 읽습니다. 그래서 정확히 한도에서 끝난 결과는
여전히 완전한 것으로 보고되고, 더 있는 경우에만 잘렸다고 말합니다.

  • 응답이 두 가지를 함께 돌려줍니다. truncated는 조건에 맞는 자산이 돌려준
    것보다 많은지이고, limit은 기본값과 상한을 적용한 뒤 실제로 적용된
    수입니다. 기존 items·count·ast는 그대로입니다.
  • 감사 기록도 같이 압니다. query.execute 항목에 truncated가 남으므로, 부분
    결과가 인벤토리 전체에 대한 증적으로 보관되지 않습니다.
  • 콘솔은 추측을 그만둡니다. 지금까지는 행 수가 limit과 같은지를 보고 "잘렸을 수
    있음"이라고 했습니다 — 정확히 한도에서 끝난 완전한 결과도 그렇게 불렸습니다. 이제
    Server가 말한 것을 그대로 표시하고, 조건을 좁히거나 limit을 올리라고 안내합니다.

검증

  • 엔드포인트 너머에서. 한도보다 많은 자산을 만들고 /api/v1/query/execute
    실행해 truncatedtrue이고 items가 한도까지만 돌아오는지, 결과가 정확히
    한도에서 끝날 때는
    truncatedfalse인지, 호출자가 limit을 주지 않았을 때
    기본 100이 적용된 값으로 보고되는지, 그리고 감사 항목에 truncated가 남는지를
    고정했습니다. 이 테스트는 수정 전 실제로 실패하고 수정 후 통과합니다.
  • 공개 계약에 적었습니다. openapi.yaml의 세션·API Key 두 실행 엔드포인트가
    limit·truncated를 응답 필드로 기술하고, 이 엔드포인트가 더 페이지를 주지
    않으므로 truncated가 유일한 신호라는 점을 함께 적습니다. CI와 같은
    @redocly/cli lint를 통과합니다.
  • 서버와 콘솔 양쪽에서. go test ./...·go vet·go build·gofmt와 콘솔의
    npm test·npm run build가 통과하고, 체크인된 server/internal/webui/dist
    React 빌드 결과와 일치합니다.

호환성

  • 데이터베이스 마이그레이션이 없습니다.
  • 응답에 필드가 추가되기만 합니다. items·count·ast를 읽던 기존 클라이언트는
    그대로 동작합니다.
  • Query DSL 문법과 권한(queries.execute)은 바뀌지 않았습니다.
  • 여전히 offset은 없습니다. truncatedtrue이면 조건을 좁히거나 limit을
    올려(최대 500) 다시 실행하십시오.
  • Agent(Rust) 동작은 이번 릴리즈에서 바뀌지 않았습니다.