Skip to content

[ai-assisted] fix(ai): prevent vector projection search null scope failure#389

Merged
donghyuck merged 1 commit into2.xfrom
codex/issue-388-vector-search-visualization
Apr 30, 2026
Merged

[ai-assisted] fix(ai): prevent vector projection search null scope failure#389
donghyuck merged 1 commit into2.xfrom
codex/issue-388-vector-search-visualization

Conversation

@donghyuck
Copy link
Copy Markdown
Owner

Why

  • Vector Projection 검색 시각화 API가 targetTypes를 지정하면 objectId=null인 object type 단독 검색을 수행합니다.
  • 기존 PostgreSQL SQL은 :objectId IS NULL 형태의 nullable named parameter 타입을 추론하지 못해 PROJECTION_SEARCH_FAILED가 발생했습니다.

What

  • searchByObject, hybridSearchByObject SQL의 nullable objectType/objectId predicate에 CAST(... AS varchar)를 적용했습니다.
  • 실제 PostgreSQL + pgvector Testcontainers 회귀 테스트를 추가해 objectId == null 검색 경로를 검증했습니다.
  • 검색 시각화 서비스가 targetTypes를 objectType-only scope로 호출하는 계약을 테스트로 고정했습니다.
  • SQL 리소스에서 두 object-scoped 검색 쿼리가 캐스팅된 nullable scope predicate를 유지하는지 정적 계약 테스트를 추가했습니다.

Related Issues

Validation

  • Command: ./gradlew :starter:studio-platform-starter-ai:test --tests 'studio.one.platform.ai.adapters.vector.PgVectorStoreAdapterV2PostgresTest' :studio-platform-ai:test --tests 'studio.one.platform.ai.core.vector.VectorSqlSetContractTest'
  • Result: PASS
  • Command: ./gradlew :starter:studio-platform-starter-ai:test :starter:studio-platform-starter-ai-web:test :studio-platform-ai:test
  • Result: PASS
  • Command: ./gradlew test
  • Result: PASS
  • Command: git diff --check
  • Result: PASS

Risk / Rollback

  • Risk: Testcontainers 기반 회귀 테스트는 CI 환경에서 Docker 사용 가능 여부에 의존합니다. 런타임 SQL 변경 자체는 nullable scope 파라미터 타입 명시로 범위가 작습니다.
  • Rollback: 이 PR의 커밋을 revert하면 기존 SQL로 복구됩니다.

AI / Subagent Usage

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

…ilure

Issue:
- Closes #388

Why:
- Vector search visualization passed targetType-only scope with objectId=null.
- PostgreSQL could not infer the nullable named parameter type in object-scoped vector SQL.

What:
- Cast nullable objectType/objectId predicates to varchar in PgVector object-scoped search SQL.
- Add PostgreSQL/Testcontainers regression tests for searchByObject and hybridSearchByObject with objectId=null.
- Add visualization service coverage for targetTypes using objectType-only vector scope.

Validation:
- ./gradlew :starter:studio-platform-starter-ai:test :starter:studio-platform-starter-ai-web:test :studio-platform-ai:test (PASS)
- ./gradlew test (PASS)
- git diff --check (PASS)

AI-Assisted: Yes
Subagent used: Yes
Delegated scope: code review for issue #388 before and after test hardening
@donghyuck donghyuck merged commit 16dc229 into 2.x Apr 30, 2026
2 checks passed
@donghyuck donghyuck deleted the codex/issue-388-vector-search-visualization branch April 30, 2026 07:24
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