fix(seed): 응웬반A Golden Flow 시작 상태와 PostgreSQL 호환성 보강 - #111
Conversation
- 기존 Fixture 순번을 유지하면서 응웬반A 운영 데이터만 Seed 대상에서 제외 - Case, Task, 문서 및 파생 승인·전이·요청·Audit 데이터를 제거 - 다른 근로자의 Showcase 고정 ID와 참조 관계를 보존 - 구버전 Golden Flow Seed를 감지해 Demo DB 초기화를 안내 - 시작 상태와 Seed 멱등성 검증을 새 데이터 계약에 맞게 갱신
- DemoCaseSeeder의 Instant 값을 JDBC 경계에서 Timestamp로 명시 변환 - Case 생성 시각과 갱신 시각의 정밀도 보존을 단위 테스트로 검증 - PostgreSQL 17에서 시간 저장·재조회와 Seed 재실행 멱등성을 검증 - Domain과 Application 계층의 Instant 타입은 그대로 유지
- PostgreSQL 17에서 dev profile Application Context와 전체 Demo Seed를 두 번 기동한다. - 재기동 전후 Seed 수량과 Showcase Case timestamp가 유지되는지 검증한다. - 응웬반A의 Case, Task, 문서, Worker Link 및 AI 후속 데이터가 사전 생성되지 않는지 검증한다. - H2 Demo Seed 통합 테스트에서 AiAttempt, Question, Candidate, Decision, WorkerResponse 미생성 조건을 명시적으로 확인한다.
- 응웬반A Golden Flow 시작 데이터와 다른 근로자의 Showcase Seed를 구분해 문서화한다. - 실제 Demo Seed 수량, 결정적 식별자와 구버전 Golden Flow 제외 대상을 반영한다. - 구버전 개인 Demo DB의 fail-fast 및 초기화 정책을 설명한다. - PostgreSQL 17 첫 기동과 동일 DB 재기동 절차 및 검증 결과를 추가한다. - E-9 날짜, Workplace, 연락처와 Agent/Prompt Version의 현재 범위를 명확히 한다.
- 응웬반A의 여권 사본을 VERIFIED 및 유효한 미래 만료일로 구성 - 외국인등록증 사본을 명시적인 MISSING 상태로 구성 - Golden Flow 시작 문서에서 기존 Task 연결을 제거 - 여권·외국인등록증 상태와 만료일을 tenant 범위 AI 컨텍스트에 제공 - AI Runtime의 Server 소유 문서 상태 변조를 차단 - Demo Seed 수량과 H2/PostgreSQL 회귀 테스트 갱신
- 응웬반A의 여권 VERIFIED 및 ARC MISSING 시작 상태 문서화 - Demo Company WorkerDocument 수량과 상태 분포 갱신 - Golden Flow 선행 문서와 미생성 데이터 경계 명시 - PostgreSQL 재기동 Smoke 기준을 문서 2건 계약에 맞게 수정 - PR 본문에 WorkerDocument 기반 AI Context 변경 사항 반영
|
현재 #94에는 응웬반A의 WorkerDocument를 미리 만들지 않는다고 되어 있지만, 이 PR에서는 여권 VERIFIED와 외국인등록증 MISSING 문서를 생성하고 있습니다. => 하지만 만든다는점 확인했습니다 또한 현재 Agent는 worker_id, stay_expiry_date만 요청해서 새 문서 상태가 실제 분석에는 전달되지 않습니다. agent한테 요청해달라고 이야기해보거나 해야할 것 같습니다 서버랑 다른 값 추가 참고 Server PR #111에 여권·외국인등록증 상태를 조회하는 Resolver가 추가됐지만, 현재 WF-STY-001의 PLAN requiredFieldKeys에는 문서 상태가 없어 실제 ANALYZE 요청에 전달이 안될겁니다 => Golden Flow에서 여권 VERIFIED, 외국인등록증 MISSING 상태를 활용하려면 Knowledge와 Agent에서 passport_copy_status, arc_status 등을 요청하도록 반영 단, arc_status=MISSING일 때 arc_expiry_date를 HR에게 입력하라고 묻지 않고 외국인등록증 사본 요청으로 이어지도록 처리 단순히 Agent 코드에 네 필드를 모두 추가하면, 외국인등록증이 없는데 만료일을 입력하라는 질문이 나올 수있음. 따라서 상태가 MISSING이면 만료일 질문 대신 서류 요청으로 처리하는 로직도 같이 필요 |
|
이 부분에 대해서는 조금 고민해보시긴 해야할 것 같아요 데모용으로 생각하실건지 일단 풀패키지로 생각하면서 client agent 보완 요청을 할 것인지 제 생각은 후자이긴 합니다 |
왜 필요한가요?
대표 시연은 HR이 응웬반A에 대한 자연어 요청을 입력하는 시점부터 시작하지만,
기존 Demo Seed에는 응웬반A의 Case, Task, 문서, 승인과 Audit 등 흐름이 이미 진행된 상태가 포함되어 있었고,
여권 정상·외국인등록증 사본 누락이라는 시연 전제도 Server가 재현 가능한 형태로 구분되지 않았습니다.
이 때문에 Golden Flow를 처음부터 재현하기 어렵고, 실제 시연 중 생성되는 데이터와 기존 Seed가 충돌할 수 있었습니다.
또한 PostgreSQL 17에서 Demo Seed를 활성화하면
DemoCaseSeeder가Instant를 직접 SQL 파라미터로 전달하면서다음 오류로 서버 기동이 중단됐습니다.
이 PR은 현재 구현된 모델 범위에서 응웬반A를 Golden Flow 시작 상태로 정리하고,
PostgreSQL에서도 빈 DB 기동과 동일 DB 재기동을 안정적으로 수행할 수 있게 합니다.
무엇이 바뀌나요?
Demo Seed
92000000-0000-0000-0000-000000000006와 Demo Company·HR·Workflow 참조는 유지합니다.Checklist·Approval·Transition·Document Request Draft·Audit를 생성 대상에서 제외합니다.
PASSPORT_COPY/VERIFIED와 유효한 미래 만료일, 외국인등록증 사본은ARC/MISSING과 만료일 없음으로 명시합니다. 두 row에는 Task·StoredFile·OCR 결과를연결하지 않습니다.
AiRun,AiAttempt, Question, Candidate, Candidate Decision,WorkerLink, WorkerResponse, Submission, Evidence가 없는 시작 상태를 검증합니다.
이동하지 않도록 기존 전체 Catalog를 구성한 뒤 Golden Flow 관련 closure만 제외합니다.
개인 Demo DB 또는 전용 volume 초기화가 필요합니다.
주요 Demo Company 수량 변화:
Worker 28명, StoredFile 3건, ExternalSubmission 6건, Evidence 10건과
응웬반A 외 Showcase fixture의 고정 식별자는 유지됩니다.
PostgreSQL JDBC 호환성
DemoCaseSeeder의 timestamp 파라미터를 JDBC 경계에서Timestamp.from(instant)로 명시적으로 변환합니다.Instant타입과 PostgreSQL 스키마는 변경하지 않습니다.devprofile Application Context를 두 번기동하는 회귀 테스트를 추가합니다.
API·도메인·권한·AI
passport_copy_status,passport_copy_expiry_date,arc_status,arc_expiry_date를구조화된 Context로 제공합니다.
CORE_VALUE_MISMATCH로 거부합니다.선행 구현하지 않습니다.
문서·배포
docs/demo-seed.md와docs/demo-seed-fixture-manifest.md를 실제 Seed 수량과 GoldenFlow 시작 상태에 맞게 갱신합니다.
docs/deployment-runbook.md에 추가합니다.DEMO_SEED_ENABLED기본값은 계속false입니다.어떻게 검증했나요?
자동 테스트
./gradlew clean testPOSTGRES_TEST_ENABLED=true환경의./gradlew clean testVERIFIED·미래 만료일과 ARCMISSING상태 검증DemoCaseSeeder재실행 검증./gradlew build일반
clean test와 PostgreSQL 환경 테스트가 모두 통과했습니다.수동 Smoke
DEMO_SEED_ENABLED=true로 서버 기동/health와 Swagger UI는 별도로 확인하지 않음수동 Smoke는 서버 기동·재기동 성공과 응웬반A 관련 데이터(최하단 첨부)를 중심으로 확인했습니다.
세부 수량, 미생성 상태와 timestamp 불변은 자동 통합 테스트가 검증합니다.
보안·개인정보
company_id격리 검증을 유지합니다.응웬반A의 AI Context에는 문서 종류·상태·만료일만 포함합니다. 여권번호, 외국인등록번호,
연락처, 주소, OCR 결과나 신분증 이미지는 Seed와 AI Context에 포함하지 않습니다.
API·DB·운영 영향
VERIFIED와 ARCMISSING문서가 Golden Flow 시작 상태로 조회됩니다. 전체 Demo목록·상태별 수량은 위 표와 같이 변경되며 다른 Worker의 고정 fixture는 유지됩니다.
개인 DB 또는 전용 volume을 초기화해야 합니다.
되돌리기 위해
flyway repair나 schema history 조작을 하지 않습니다.docs/deployment-runbook.md에 반영했습니다.화면 또는 응답 예시
API 응답 형식 변경은 없습니다.
Seed 직후 응웬반A의 실제값을 직접 확인.