Skip to content

feat: AI Runtime 연동 계약과 안전한 검증 기반 구현#42

Merged
hywznn merged 4 commits into
mainfrom
agent/8-ai-runtime-contract
Jul 24, 2026
Merged

feat: AI Runtime 연동 계약과 안전한 검증 기반 구현#42
hywznn merged 4 commits into
mainfrom
agent/8-ai-runtime-contract

Conversation

@hywznn

@hywznn hywznn commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

Refs #8

Server가 AI Provider를 직접 호출하지 않고 별도 AI Runtime과 안정적인 계약으로 연결되려면, 실제 HTTP 연동 전에 전송 가능한 데이터와 응답 검증 경계를 먼저 고정해야 합니다.

특히 AI 입력에는 여권번호·외국인등록번호·전화번호·계좌번호·Token·Secret이 들어가면 안 되고, Runtime 응답도 requestId, contract/Knowledge version, worker, Workflow, slot 범위를 다시 검증해야 합니다.

무엇이 바뀌나요?

  • Provider-neutral AiRuntimeClient Port와 요청·응답 모델을 추가했습니다.
  • 요청에는 pseudonymized workerRef와 최소 Worker Context만 허용합니다.
  • Knowledge projection에서 받은 Workflow/slot allow-list 밖의 응답을 거부합니다.
  • 전송 전과 응답 후를 모두 검사하는 ValidatingAiRuntimeClient를 추가했습니다.
  • 민감정보, 다른 requestId, version drift, 알 수 없는 worker/Workflow/slot을 안전한 오류 코드로 거부합니다.
  • 원문 민감값이 예외 메시지에 포함되지 않게 했습니다.
  • 네트워크를 호출하지 않는 test-only FakeAiRuntimeClient와 contract fixture를 추가했습니다.
  • 초보자도 요청·응답과 저장소 경계를 이해할 수 있도록 docs/ai-runtime-contract.md와 README를 갱신했습니다.

사용자·개발 영향

  • 아직 Public API나 DB migration은 추가되지 않습니다.
  • AI Runtime이 없어도 Server의 [AI Run] 비동기 실행 상태·재시도·멱등성 구현 #24 AiRun을 Fake 기반으로 개발·테스트할 수 있습니다.
  • Candidate는 Task 또는 승인 결과가 아니며, 후속 #24에서 HR이 채택한 경우에만 Task command로 전달됩니다.
  • Provider SDK, Prompt, 모델 선택은 계속 fowoco/ai가 소유합니다.

이번 PR에서 하지 않는 것

  • 실제 POST /internal/v1/analyses HTTP 호출
  • S2S 인증, timeout, circuit breaker, bulkhead
  • AI 저장소가 소유하는 OpenAPI·Structured Output JSON Schema 복제
  • AiRun/AiAttempt 영속화와 retry

AI 저장소의 versioned 원본 계약이 확정되면 별도 후속 PR에서 RemoteAiRuntimeClient와 WireMock contract test를 연결합니다.

검증

  • ./gradlew test --tests 'com.fowoco.server.aiintegration.*'
  • ./gradlew clean test build
  • git diff --check

모두 통과했습니다.

리뷰 포인트

  • workStatus, stayExpiryDate, preferredLanguage, workerRef만 AI Worker Context로 허용하는 범위가 적절한지
  • requiredKnowledgeVersion을 응답의 workflowCatalogVersion과 일치시키는 규칙이 AI/Knowledge release 계획과 맞는지
  • Remote Client가 항상 ValidatingAiRuntimeClient decorator를 거치도록 구성하는 방식이 적절한지

@hywznn
hywznn marked this pull request as ready for review July 24, 2026 05:06
@hywznn
hywznn merged commit 4bd0f17 into main Jul 24, 2026
1 check passed
@hywznn
hywznn deleted the agent/8-ai-runtime-contract branch July 24, 2026 05:09
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.

2 participants