Skip to content

fix: 데모 Agent 요청에 원본 업무데이터 전달 - #63

Merged
hywznn merged 2 commits into
mainfrom
feat/61-pii-exclusion
Jul 28, 2026
Merged

fix: 데모 Agent 요청에 원본 업무데이터 전달#63
hywznn merged 2 commits into
mainfrom
feat/61-pii-exclusion

Conversation

@hywznn

@hywznn hywznn commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

연결 이슈

Refs #61

왜 필요한가요?

마스킹된 ***, OOO 값은 원본을 복원할 수 없어 Agent가 HWP/HWPX 문서를 생성할 수 없습니다.
현재 목표는 가상 데이터 기반 문서 자동화 데모이므로 PII 마스킹·차단을 빼고 HR 원문과 Agent가 요구한 실제 field 값을 그대로 전달하도록 합니다.

무엇이 바뀌나요?

  • maskedInputanalysisInput으로, maskedInstructioninstruction으로 변경했습니다.
  • WorkerContext에 표시 이름·국적·언어·근무상태·체류기간·계약기간을 포함합니다.
// 변경된 근로자 정보 보낼 수 있는 것들
public record WorkerContext(
        UUID workerRef,
        String displayName,
        String nationalityCode,
        String preferredLanguage,
        String workStatus,
        LocalDate stayExpiryDate,
        LocalDate contractStartDate,
        LocalDate contractEndDate,
        Map<String, String> requestedFields
)
  • Agent가 요구한 원본값을 requestedFields map으로 전달할 수 있습니다.
  • 실명·여권번호·외국인등록번호·전화번호·이메일·주소·계좌번호·서명·사진을 PII라는 이유로 차단하지 않습니다.
  • Candidate의 허용된 extractedSlots에도 원본값을 사용할 수 있습니다.
  • API Key·JWT·Bearer Token·비밀번호·Service Secret 차단은 유지합니다.

전제와 영향

  • 현재 구조는 가상 데모 데이터 전용입니다.
  • 실제 근로자 개인정보를 외부 LLM에 전송하기 전에는 별도 개인정보 처리 결정을 다시 해야 하지만, 일단 후순위로 다시 보류
  • DB schema 변경은 없어 Flyway V9를 사용하지 않았씁니다.
  • fowoco/ai는 후속으로 analysisInputrequestedFields를 받아 template의 values에 매핑해야 합니다.

검증

  • ./gradlew test --tests 'com.fowoco.server.aiintegration.*' — 성공
  • raw instruction·display name·passport·phone·email 직렬화 검증
  • API Key·JWT·Bearer Token·비밀번호 field 차단 검증

리뷰 포인트

  1. Agent팀이 analysisInput.workers[].requestedFields 계약을 그대로 받을 수 있는지
  2. requestedFields의 key를 Knowledge/Agent template field와 어떻게 맞출지
    => 하단부 참고

추후 고려사항

  1. Agent 팀에서 받을 정보들이 있을텐데 그걸 knowledge 저장소에서 세 파트간 필드 키를 확정지어야할 것 같습니다
  2. Server팀에서 Agent 팀한테 응답해주는건 requiredFeildkeys 로 주고, 이제 문서 생성을 요청할 때 해당 에이전트를 호출하는 순서구조가 필요할 것 같습니다

실명·생년월일·이메일·주소·서명 등 구조화된 PII key와 이메일 값을 AI 경계에서 거부합니다.

마스킹 문자열을 전송하지 않고 Agent는 누락 field key만 반환하도록 계약 문서를 명확히 합니다.
@hywznn
hywznn requested review from chaeliki and krestar July 27, 2026 23:38
@hywznn hywznn changed the title Agent 요청에서 PII 필드 제외 Agent 요청에서 전송할 데이터 PII 필드 제외 Jul 27, 2026
@hywznn hywznn changed the title Agent 요청에서 전송할 데이터 PII 필드 제외 fix: Agent 요청에서 전송할 데이터 PII 필드 제외 Jul 27, 2026
@hywznn hywznn changed the title fix: Agent 요청에서 전송할 데이터 PII 필드 제외 [PII feild/fix] Agent 요청에서 전송할 데이터 PII 필드 제외 Jul 27, 2026
@hywznn hywznn changed the title [PII feild/fix] Agent 요청에서 전송할 데이터 PII 필드 제외 [PII field/fix] Agent 요청에서 전송할 데이터 PII 필드 제외 Jul 27, 2026
마스킹 입력 계약을 원문 입력 계약으로 변경하고 Agent가 요청한 실제 field 값을 Worker context에 포함할 수 있게 합니다.

가상 데이터 데모에서는 PII 차단을 제거하되 API Key, JWT, Bearer Token, 비밀번호 같은 서비스 인증정보 차단은 유지합니다.
@hywznn hywznn changed the title [PII field/fix] Agent 요청에서 전송할 데이터 PII 필드 제외 데모 Agent 요청에 원본 업무데이터 전달 Jul 27, 2026
@hywznn

hywznn commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

AiRuntimeBoundaryPolicy 구조는 유지되어 있습니다

@krestar krestar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

넵 데모라서 마스킹 푸는 방향은 AI팀 작동 확인 보장을 위해 필요할 것 같습니다
근데 Agent팀이 analysisInput.workers[].requestedFields 계약을 그대로 받을 수 있는지는 ai레포 보고 와도 AI팀 코드 구조를 잘 모르겠어서 확인이 다소 어렵네요

리뷰 포인트 2번의 경우에도 어디 주도로(기준으로) 할지 협의가 필요해 보이네요

@hywznn hywznn changed the title 데모 Agent 요청에 원본 업무데이터 전달 fix: 데모 Agent 요청에 원본 업무데이터 전달 Jul 28, 2026
@hywznn
hywznn marked this pull request as ready for review July 28, 2026 04:52
@BcKmini

BcKmini commented Jul 28, 2026

Copy link
Copy Markdown
Member

LGTM

@BcKmini
BcKmini requested review from BcKmini and removed request for BcKmini July 28, 2026 04:55
@hywznn

hywznn commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

@BcKmini LGTM 오랜만이군요

@hywznn
hywznn merged commit b08a3a8 into main Jul 28, 2026
4 checks passed
@hywznn
hywznn deleted the feat/61-pii-exclusion branch July 28, 2026 04:57
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.

3 participants