Skip to content

[ai-assisted] fix(vector): item 상세 조회 SQL 조립 수정#387

Merged
donghyuck merged 1 commit into2.xfrom
codex/issue-386-vector-item-detail-sql
Apr 30, 2026
Merged

[ai-assisted] fix(vector): item 상세 조회 SQL 조립 수정#387
donghyuck merged 1 commit into2.xfrom
codex/issue-386-vector-item-detail-sql

Conversation

@donghyuck
Copy link
Copy Markdown
Owner

@donghyuck donghyuck commented Apr 30, 2026

Why

  • Vector Map에서 Top-K 결과나 산점도 점 선택 시 GET /api/mgmt/ai/vectors/items/{vectorItemId}가 500을 반환했습니다.
  • 원인은 JdbcExistingVectorItemRepository.findByVectorItemIds()에서 Java text block과 문자열 concat 경계의 공백이 제거되어 WHEREmetadata, chunkId'IN, OR'row-' 형태의 잘못된 SQL이 만들어지는 문제입니다.

What

  • JdbcVectorProjectionSql.vectorItemIdMatchClause(...)를 추가해 WHERE, IN, OR 주변 공백을 일반 문자열에서 보장했습니다.
  • JdbcExistingVectorItemRepository.findByVectorItemIds()가 새 helper를 사용하도록 수정했습니다.
  • chunkId, row-{id}, documentId 매칭 clause 조립 회귀 테스트를 추가했습니다.

Related Issues

Validation

  • Command: ./gradlew :starter:studio-platform-starter-ai:test --tests '*JdbcVectorProjectionSqlTest'
  • Result: PASS
  • Command: ./gradlew :starter:studio-platform-starter-ai:test :starter:studio-platform-starter-ai-web:test && git diff --check
  • Result: PASS
  • Command: 로컬 PostgreSQL smoke query
  • Result: vectorItemId=6-18 상세 조회 조건이 1건 조회됨
  • Command: scripts/run-dev.sh via detached screen session
  • Result: 서버 재시작 완료, Tomcat started on port 8080 확인
  • Command: curl -i 'http://localhost:8080/api/mgmt/ai/vectors/items/6-18'
  • Result: 인증 없는 요청은 401 Unauthorized로 라우팅 확인

Risk / Rollback

  • Risk: item 상세 조회의 vector item id 매칭 SQL 조립 방식만 변경되므로 영향 범위는 GET /api/mgmt/ai/vectors/items/{vectorItemId}와 동일 repository를 쓰는 상세 조회 경로에 한정됩니다.
  • Rollback: 문제가 있으면 이 커밋을 revert하면 기존 SQL 조립 방식으로 돌아갑니다.

AI / Subagent Usage

  • AI-assisted: Yes
  • Subagent used: No
  • Delegated scope: N/A
  • Main author validation: 관련 단위 테스트, AI web 테스트, git diff --check, 로컬 PostgreSQL smoke query, 서버 재시작 및 라우팅 확인을 수행했습니다.

Checklist

  • commit message follows policy
  • issue template used or exception recorded
  • AI-Assisted value is correct
  • validation recorded
  • subagent usage recorded when used
  • CI / repository verification passed
  • human review completed before merge
  • no unrelated changes included

Issue:
- #386

Why:
- Vector Map에서 Top-K 결과나 산점도 점 선택 시 item 상세 조회 SQL이 WHEREmetadata, chunkIdIN, OR'row-' 형태로 조립되어 PostgreSQL 문법 오류가 발생했다.

What:
- vector item id 매칭 WHERE 절을 일반 문자열 helper로 생성해 WHERE, IN, OR 주변 공백을 보장했다.
- chunkId, row-{id}, documentId 매칭 clause 회귀 테스트를 추가했다.

Validation:
- ./gradlew :starter:studio-platform-starter-ai:test --tests '*JdbcVectorProjectionSqlTest' : PASS
- ./gradlew :starter:studio-platform-starter-ai:test :starter:studio-platform-starter-ai-web:test && git diff --check : PASS
- 로컬 PostgreSQL smoke: vectorItemId 6-18 상세 조회 조건이 1건 조회됨
Copy link
Copy Markdown
Owner Author

@donghyuck donghyuck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CODE REVIEW REPORT

Files reviewed: 3
Result: APPROVE-equivalent comment, no blocking findings.

Reviewed scope:

  • JdbcExistingVectorItemRepository.findByVectorItemIds() SQL assembly
  • JdbcVectorProjectionSql.vectorItemIdMatchClause(...)
  • JdbcVectorProjectionSqlTest regression coverage

Findings:

  • CRITICAL: none
  • HIGH: none
  • MEDIUM: none
  • LOW: none

Validation evidence:

  • ./gradlew :starter:studio-platform-starter-ai:test --tests '*JdbcVectorProjectionSqlTest' PASS
  • ./gradlew :starter:studio-platform-starter-ai:test :starter:studio-platform-starter-ai-web:test && git diff --check PASS
  • ./gradlew :starter:studio-platform-starter-ai:test --tests '*JdbcVectorProjectionSqlTest' :starter:studio-platform-starter-ai-web:test && git diff --check PASS
  • Local PostgreSQL smoke verified vectorItemId=6-18 condition returns 1 row.

Notes:

  • The change is narrowly scoped to SQL token spacing in item detail lookup.
  • No auth, permission, or data exposure behavior changed.
  • No additional code changes were required after review.

@donghyuck donghyuck merged commit 8b9c0e1 into 2.x Apr 30, 2026
2 checks passed
@donghyuck donghyuck deleted the codex/issue-386-vector-item-detail-sql branch April 30, 2026 06:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant