Skip to content

feat: 근로자 안내 실패를 HR 검토로 안전하게 전환 - #179

Merged
hywznn merged 1 commit into
mainfrom
feat/162-worker-guide-review
Aug 15, 2026
Merged

feat: 근로자 안내 실패를 HR 검토로 안전하게 전환#179
hywznn merged 1 commit into
mainfrom
feat/162-worker-guide-review

Conversation

@hywznn

@hywznn hywznn commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

Refs #162

AI Language Assistant가 미구성되거나 근로자 안내 생성에 실패하면, AI는 임의 문구를 만들지 않고 workerRequestMessage=null, guideReviewRequired=true, REVIEW_WORKER_GUIDE를 반환합니다. 기존 Server는 이 응답을 계약 오류로 거부해 실패 사유를 업무에 보존하거나 HR 검토로 연결할 수 없었습니다.

무엇이 바뀌나요?

  • guideReviewRequired, guideFailureCode를 하위 호환 방식으로 수용합니다.
  • REVIEW_WORKER_GUIDE와 합의된 실패 코드 4종만 허용합니다.
  • 안내 검토 경로에서는 workerRequestMessage=null을 허용합니다.
  • 검토 상태와 실패 코드를 기존 Task의 renewal_execution 메타데이터와 감사로그에 보존합니다.
  • 안내 검토가 필요하면 Task를 NEEDS_INFO로 되돌리지 않고 HR 검토용 DRAFT 상태로 둡니다.
  • 검토 경로에서는 안내 초안·Worker Link·SMS를 자동 생성하거나 발송하지 않습니다.
  • 기존 AI 응답에 신규 필드가 없어도 guideReviewRequired=false로 처리해 하위 호환성을 유지합니다.
  • README와 AI Runtime 계약 문서를 갱신했습니다.

처리 흐름

AI 안내 생성 실패
→ Server 계약 검증
→ 실패 코드·검토 필요 상태 보존
→ Task를 HR 검토 대기(DRAFT)로 유지
→ HR이 안내를 작성·검토
→ 기존 승인 절차
→ Worker Link 발급·전달

안전장치

  • Provider 원문 오류와 개인정보를 저장하지 않고 허용된 실패 코드만 보존합니다.
  • HR 승인 전 안내 초안·보안 링크·문자를 자동 생성하거나 발송하지 않습니다.
  • 일반 ask_worker 흐름은 기존처럼 안내 문구가 있어야만 처리합니다.
  • DB Migration을 추가하지 않고 기존 Task 메타데이터와 감사로그를 재사용합니다.

검증

  • 계약 Validator 단위 테스트
  • 기존 AI 응답 하위 호환 WireMock 테스트
  • 안내 검토 경로 통합 테스트
  • NEEDS_INFO 상태 회귀 방지 검증
  • 안내 초안·Worker Link 자동 생성 방지 검증
  • 전체 테스트: 599개, 실패 0, 오류 0 (PostgreSQL 환경 전용 39개는 로컬 Docker 미실행으로 제외)
  • ./gradlew build -x test
  • GitHub CI PostgreSQL 16 검증
  • AI PR feat: 사업장 회원가입과 초기 관리자 계정 생성 구현 #44 반영 후 실제 Server ↔ AI Smoke Test

리뷰 포인트

  1. AI PR #44의 실패 코드 및 REVIEW_WORKER_GUIDE 계약과 일치하는지
  2. 검토 경로가 기존 정상 안내 생성 흐름에 영향을 주지 않는지
  3. HR 검토가 완료되기 전에 외부 전달 부수효과가 발생하지 않는지

Language Assistant 안내 생성 실패 응답을 안전한 REVIEW_REQUIRED 계약으로 수용합니다.\n실패 코드를 Task 메타데이터와 감사로그에 보존하고 안내 초안·Worker Link 자동 생성을 차단합니다.\n기존 AI 응답은 신규 필드가 없어도 정상 처리하도록 하위 호환성을 유지합니다.
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