Skip to content

feat(seed): 운영형 데모 데이터셋 확장 - #79

Merged
krestar merged 19 commits into
mainfrom
feat/70-demo-operational-seed
Aug 4, 2026
Merged

feat(seed): 운영형 데모 데이터셋 확장#79
krestar merged 19 commits into
mainfrom
feat/70-demo-operational-seed

Conversation

@krestar

@krestar krestar commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

기존 Demo Seed는 인증과 기본 사업장·계정·근로자 확인에는 사용할 수 있었지만,
업무 목록, 문서 현황, 승인 흐름, 외부 제출, 완료 증빙 및 감사 이력을 포함한
운영 화면을 충분히 시연하기 어려웠습니다.

Figma 기반 주요 화면과 실제 Workflow를 하나의 일관된 데이터셋으로 확인할 수 있도록
Demo/Test Seed를 운영형 시나리오로 확장합니다.

무엇이 바뀌나요?

  • API·도메인·DB 변경:

    • Demo 사업장에 근로자 28명, 업무 24건, 문서 84건을 구성했습니다.
    • 업무 체크리스트 68건, 승인 13건, 상태 이력 52건을 추가했습니다.
    • 외부 제출 6건, 완료 증빙 10건, 요청 초안 5건을 추가했습니다.
    • Demo Audit Event 96건과 Test Audit Event 8건을 구성했습니다.
    • Test 사업장에는 근로자 5명, 업무 3건, 문서 8건을 격리해 구성했습니다.
    • API 계약, 도메인 Enum, DB 스키마 변경은 없습니다.
    • Audit Event Seed의 멱등성 검증을 위해 기존 Audit 저장소에 ID 조회 기능을 추가했습니다.
  • 권한·Workflow 변경:

    • 운영 권한이나 실제 Workflow 동작은 변경하지 않았습니다.
    • STAY, RECONTRACT, EMPLOYMENT_PERIOD_EXTENSION 업무 유형을 모두 포함합니다.
    • DRAFT부터 COMPLETED, CANCELLED까지 모든 업무 상태를 포함합니다.
    • 승인 대기·승인·반려·무효화와 근로자 대기·외부기관 대기 시나리오를 포함합니다.
    • Demo/Test 사업장 데이터가 서로 섞이지 않도록 company_id 격리를 검증합니다.
    • Seed 재실행 시 데이터가 중복되지 않도록 멱등성을 검증합니다.
    • 예약 ID가 다른 사업장 데이터와 충돌하면 Seed를 중단합니다.
  • AI·외부 연동 변경:

    • 실제 AI 호출이나 외부기관 전송은 추가하지 않았습니다.
    • AI, SYSTEM, WORKER_LINK 활동은 화면 시연을 위한 Audit Event 데이터로만 구성했습니다.
    • Worker Link 원본 토큰이나 외부 시스템 Secret은 저장하지 않습니다.
  • 문서·배포 변경:

    • 대표 Demo 시나리오, 로그인 계정, 화면별 확인 절차와 DB 검증 방법을 문서화했습니다.
    • Demo/Test Seed 설정 설명을 정리했습니다.
    • 운영 배포 동작이나 Flyway migration 변경은 없습니다.

구현 범위 메모

Issue 본문의 초기 데이터 예시와 비교해 다음 항목은 현재 도메인과 운영 시나리오를
우선해 조정했습니다.

  • 근로 상태는 운영 업무와 문서를 연결할 수 있도록 ACTIVE 25명, ON_LEAVE 3명으로 구성했습니다.
  • 문서 만료일은 특정 예시 수량보다 만료, 30일 이내, 31~90일, 90일 초과,
    만료일 없음 구간을 모두 확인할 수 있도록 구성했습니다.
  • 모바일 Worker Link 수명주기와 실제 외부기관 전송은 이번 범위에서 제외했습니다.

어떻게 검증했나요?

  • ./gradlew clean test
  • ./gradlew build
  • /health와 Swagger UI 확인
  • 정상 요청
  • 잘못된 입력
  • 권한 부족
  • 다른 사업장 접근 차단
  • 필요한 상태 전이·Idempotency

실행한 테스트:

.\gradlew.bat test
  • 전체 테스트 통과
  • Demo Seed가 적용된 PostgreSQL 환경에서 테스트 통과
  • PostgreSQL Demo DB를 사용하지 않는 H2 기반 테스트 환경에서 테스트 통과
  • Seed 2회 실행 후 수량이 증가하지 않는 멱등성 검증
  • 예약 ID 충돌 시 기동 중단 검증
  • Demo/Test 사업장 격리 검증
  • 주요 조회 API에서 Seed 데이터 조회 검증

로컬 실행 및 데이터 확인:

powershell -NoProfile -ExecutionPolicy Bypass `
  -File .\scripts\run-dev.ps1
  • Flyway 적용 및 애플리케이션 기동 확인
  • DBeaver에서 Demo/Test Seed 수량과 사업장 격리 확인

보안·개인정보

  • DTO·로그·AI 입력에 불필요한 개인정보가 없습니다.
  • JWT, Worker Link 원본 토큰, API Key, 비밀번호가 없습니다.
  • 모든 사업장 데이터 접근에 company_id 범위를 검사합니다.
  • AI 결과가 자동 승인·발송되지 않습니다.
  • 중요한 변경이 AuditLog와 request_id로 추적됩니다.
  • 관련 Accepted ADR을 지켰거나 필요한 새 ADR을 이 PR에서 Proposed로 작성했습니다.
  • Server에 Prompt Builder·Provider SDK·모델 routing을 추가하지 않았습니다.

Demo 데이터는 시연용 가상 인물과 식별자를 사용하며,
Audit Event에는 원본 토큰이나 실제 개인정보를 포함하지 않습니다.

API·DB·운영 영향

  • Swagger/OpenAPI와 Notion 계약을 갱신했습니다. — 해당 없음: API 계약 변경 없음
  • Client에 알려야 할 호환성 변경을 적었습니다. — 호환성 변경 없음
  • DB 변경에 Flyway migration이 있습니다. — 해당 없음: 스키마 변경 없음
  • migration 번호와 소유 Issue를 확인했고 다른 기능의 테이블을 미리 만들지 않았습니다. — migration 없음
  • 환경변수는 이름만 .env.example에 적었습니다.
  • 배포 후 Smoke Test와 롤백 방법을 적었습니다. — 배포 변경 없음, Seed 비활성화 및 로컬 DB 재생성으로 복구 가능

화면 또는 응답 예시

개인정보를 제거한 Seed 검증 결과:

Demo:
- workers: 28
- tasks: 24
- documents: 84
- checklist items: 68
- approvals: 13
- task transitions: 52
- external submissions: 6
- completion evidence: 10
- request drafts: 5
- audit events: 96

Test:
- workers: 5
- tasks: 3
- documents: 8
- audit events: 8

krestar added 11 commits August 3, 2026 11:21
- 운영형 데모 fixture를 별도 catalog로 분리
- Task, WorkerDocument, AuditEvent 저장 책임을 엔티티별 seeder로 분리
- 회사 및 실행자 ID와 Clock 기반 날짜를 seed context로 통합
- 예약 ID와 교차 엔티티 일관성을 확인하는 verifier 추가
- 기존 시드 레코드와 실행 순서, 멱등성 동작 유지
- Demo Company 근로자 시드를 28명으로 확장
- Figma 대표 근로자와 현실적인 국적·언어·근무 상태 구성
- Clock 기반 체류·계약 날짜 분포 및 재실행 갱신 지원
- Test Company의 기존 5명 격리 데이터셋 유지
- 근로자 fixture를 별도 catalog로 분리
- 기존 근로자 시드 테스트 기대값 갱신
- Demo Company Task 24개와 WorkerDocument 84개 구성
- Task 타입·상태와 문서 상태 목표 분포 적용
- 대표 Figma 근로자 중심 업무·문서 시나리오 추가
- Test Company에 Task 3개와 문서 8개 격리 데이터 추가
- tenant별 seed context와 근로자 참조 검증 확장
- 고정 UUID, 상대 날짜, 재실행 멱등성 유지
- 워크플로 카탈로그 기반 데모 태스크 체크리스트 68건 추가
- 승인 상태별 요청 13건과 현재 태스크 상태 정합성 구성
- 태스크 상태 전이 이력 52건 및 취소·완료 사유 추가
- 고정 UUID 충돌 검증과 재실행 멱등성 보강
- 외부기관 제출 시나리오 6건 추가
- 완료 태스크별 안전한 메모 기반 증빙 10건 추가
- 근로자 응답 대기 및 재계약 준비용 문서 요청 초안 5건 추가
- 고정 UUID 충돌 검증과 재실행 멱등성 보강
- 운영형 데모 및 테스트 회사의 Audit Event 시나리오를 확장한다.
- HR 사용자, AI 에이전트, 시스템 규칙, 근로자 링크 행위자를 구성한다.
- 업무·체크리스트·승인·외부 제출·완료 증빙 이벤트를 연결한다.
- 예약된 Audit Event ID를 단건 조회해 재실행 멱등성을 검증한다.
- JPA 영속성 컨텍스트를 사용해 저장 직후 검증이 실패하지 않도록 한다.
- 기존 타임라인 Audit Event 3건과의 호환성을 유지한다.
- Demo/Test 회사의 최종 시드 수량과 주요 상태 분포를 검증한다.
- 고정 Clock을 사용해 업무·문서·Audit 상대 날짜를 검증한다.
- 전체 시드 러너 재실행 후 데이터가 중복되지 않는지 확인한다.
- 예약 ID와 이메일 충돌 시 시드가 실패하는지 검증한다.
- Demo/Test 인증을 이용해 근로자·업무·문서·Audit API 결과와 테넌트 격리를 확인한다.
- StoredFile 및 민감정보가 생성되지 않는지 검증한다.
- Demo/Test Company의 최종 시드 수량과 대표 계정을 문서화한다.
- 대표 근로자별 업무·문서·승인·Audit 시나리오를 정리한다.
- 현재 프런트엔드 지표와 필터가 사용하는 서버 데이터를 설명한다.
- Figma 개념의 정확한 표현, 근사 표현과 제외 범위를 구분한다.
- Demo Seed의 멱등성, 초기화, 재실행과 확인 방법을 안내한다.
- 개발 가이드, README와 환경변수 예시를 최신 수량으로 갱신한다.
- Demo Worker와 Document를 최초 생성 시점 기준 immutable snapshot으로 유지
- 승인 없는 대기 업무에서 잘못된 APPROVED 전이를 제거
- 체크리스트·승인·제출·증빙·완료 시간 순서를 일관되게 보정
- 24개 Demo Task의 전이 연결성과 시간 불변조건 검증 추가
- same-Clock 및 next-day 재실행 시 수량과 snapshot 불변 테스트 강화
- Demo Seed 재실행 계약과 현재 fixture 분포를 문서에 동기화
- 응웬반A의 체류 만료일을 D+45 기준으로 조정
- 재계약, 취업활동기간 연장, 여권 요청 업무를 동일 Case로 연결
- 대표 Task에 요청 원문, 후보 순서, 누락정보 등 demo business_data 추가
- 응웬반A의 여권, 외국인등록증, 계약서 상태를 시나리오에 맞게 정리
- 전체 Task 유형과 문서 상태 분포 유지
- 재실행 시 business_data와 fingerprint 정합성 검증 강화
- 대표 초안 시나리오 및 문서 상태 통합 테스트 추가
@krestar krestar added the status:in-progress 담당자가 현재 구현 중인 작업 label Aug 4, 2026
krestar added 6 commits August 4, 2026 13:41
- 업무별 AI·HR 승인 snapshot과 변경 필드 및 원천 버전을 저장한다
- 누락 여권 문서에 맞춘 베트남어 제출 요청 초안을 구성한다
- 체류기간 연장 업무의 승인·외부 제출·증빙 lifecycle을 연결한다
- 동일 trace ID 기반 AI Agent 처리 이력을 추가한다
- lifecycle fixture와 재실행 불변성 검증을 보강한다
- 개인정보 없는 합성 PDF 계약서·접수증·승인 결과를 추가한다
- 예약된 stored_file과 근로자 문서 및 완료 증빙을 연결한다
- plain UUID 형식으로 evidence file reference를 저장한다
- 파일 크기와 SHA-256을 검증하고 충돌 시 덮어쓰지 않는다
- 파일과 DB의 부분 생성 상태를 재실행 시 복구한다
- 미지원 선호 언어를 AI팀과 합의된 locale로 교체한다
- 데모 근로자 28명에 지원 locale 15개를 모두 포함한다(locale 최소 1개 이상 보장)
- 국적과 선호 언어에 맞게 일부 근로자 이름을 조정한다(데모 근로자 01~05 활용)
- 기존 UUID와 상태·기간·식별 관계는 유지한다
- AI팀 지원 locale 15개와 국적 조합을 검증한다
- 복합 업무 시나리오의 순서와 의존 관계를 확인한다
- 데모 PDF의 메타데이터와 Task·Worker 연결을 검증한다
- 동일 크기 파일의 SHA-256 충돌 감지를 확인한다
- Worker 핵심 데이터를 재실행 불변성 snapshot에 포함한다
@hywznn

hywznn commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

docs/demo-seed.md

이 파일을 주로 읽으면 되겠군요 한번 쓱 봤는데

StoredFile 0 실제 파일이나 가짜 저장 경로를 만들지 않음

이거 3개생기는 것 맞죠?

음 아직도 작업중이셨군요

- PWF_v3 화면 요구사항과 예약 fixture의 대응 관계를 정리한다
- DB·로컬 파일 저장 여부와 현재 조회 API 노출 범위를 구분한다
- 승인 lifecycle, 합성 PDF, 지원 locale 및 근사·제외 범위를 기록한다
- Demo Seed 수량과 Audit·StoredFile 정보를 최신 상태로 갱신한다
@krestar

krestar commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

26.08.04. 17:17

금일 변경사항

  • Figma PWF_v3 기준 근로자·Task·문서 상태
  • 재계약 → 취업활동기간 연장 → 여권 요청으로 이어지는 복합 업무 흐름
  • AI 작성 초안과 검토·승인·반려·무효화 lifecycle 데이터
  • 외부 제출, 접수증 및 승인 결과 증빙 데이터
  • 계약서·접수증·승인 결과 PDF가 연결된 문서 시나리오
  • AI팀 지원 언어 15개가 반영된 다국적 근로자 데이터

현재 조회 API가 있는 근로자·Task·체크리스트·문서·Audit은 FE에서 바로 조회할 수 있습니다.
승인 snapshot, 제출·증빙, 작성 초안, PDF 등은 DB와 파일 저장소에는 준비되어 있지만,
관련 조회·다운로드 API가 추가되어야 화면에 노출할 수 있습니다.

API·도메인·DB 스키마 변경 없이 데모 시드와 검증 테스트, 문서만 보강했습니다.

@krestar
krestar requested review from hywznn and a lite review from Copilot August 4, 2026 08:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

로컬 Demo/Test Seed를 “운영형 시나리오” 수준(근로자 28 / 업무 24 / 문서 84 / 승인·체크리스트·전이·외부제출·증빙·Audit 포함)으로 확장하고, 재실행 멱등성과 테넌트 격리를 자동 검증할 수 있도록 시드 구성·검증 로직과 테스트/문서를 보강하는 PR입니다.

Changes:

  • Demo/Test 운영형 데이터셋 생성을 위해 Catalog/Seeder/Verifier 구조로 DemoOperationalSeed를 재구성
  • StoredFile PDF fixture를 classpath → 로컬 파일 저장소로 설치/검증하는 로직 및 테스트 추가
  • 멱등성/격리/상대 날짜/주요 API 조회 가능 여부를 통합 검증하는 테스트 및 문서 정리

Reviewed changes

Copilot reviewed 36 out of 39 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/test/java/com/fowoco/server/worker/infrastructure/seed/DemoWorkerSeedRunnerTest.java Demo 근로자 28명 및 언어/국적/상태 분포와 멱등성 검증 강화
src/test/java/com/fowoco/server/demo/infrastructure/seed/DemoFileFixtureInstallerTest.java PDF fixture installer의 재사용/충돌 거부 동작 테스트 추가
src/test/java/com/fowoco/server/auth/infrastructure/seed/DemoAuthSeedRunnerTest.java 예약 ID/이메일 충돌 시 기동 중단 검증 케이스 추가
src/test/java/com/fowoco/server/auth/infrastructure/seed/DemoAuthSeedIntegrationTest.java Demo/Test Seed 전체 수량·격리·API 조회·상대 날짜·멱등성 통합 검증으로 확장
src/test/java/com/fowoco/server/auth/AuthRefreshPostgreSqlConcurrencyTest.java PostgreSQL 동시성 테스트의 데이터 정리 쿼리를 테넌트 범위로 제한
src/main/java/com/fowoco/server/worker/infrastructure/seed/DemoWorkerSeedRunner.java DemoWorkerSeedCatalog 기반으로 근로자 시드 확장 및 상태(ON_LEAVE) 지원
src/main/java/com/fowoco/server/worker/infrastructure/seed/DemoWorkerSeedCatalog.java Demo/Test 근로자 28/5명 고정 UUID 시드 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoWorkerDocumentSeeder.java worker_document 시드 삽입 및 기존 데이터 검증 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskWorkflowSeedCatalog.java 체크리스트/승인/전이 이력 시드 생성 규칙 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskTransitionSeeder.java task_transition_history 직접 삽입 및 검증 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskSeeder.java task 시드 생성(콘텐츠 인코딩 포함) 및 기존 데이터 검증 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskSeedCatalog.java Demo/Test 업무 24/3건과 대표 시나리오(복합 초안 흐름 등) 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskChecklistSeeder.java task_checklist_item 시드 삽입 및 검증 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoTaskArtifactSeedCatalog.java 외부제출/완료증빙/문서요청초안 시드 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoStoredFileSeeder.java stored_file 메타데이터 시드 및 fixture 설치 연계 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoStoredFileSeedCatalog.java PDF StoredFile 3건(계약서/접수증/결과) 고정 UUID 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoOperationalSeedVerifier.java 예약 ID 유일성/참조 정합성/시드 존재 여부 검증 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoOperationalSeedRunner.java DemoOperationalSeedCatalog + 여러 Seeder로 데이터셋 생성/검증하도록 재구성
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoOperationalSeedContext.java Demo/Test 회사별 companyId/actorId/today/now 컨텍스트 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoOperationalSeedConfiguration.java DemoOperationalSeedRunner 구성(Seeder/Verifier/fixture installer wiring) 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoOperationalSeedCatalog.java Demo/Test 전체 운영형 시드(Tasks/Documents/Approvals/Audits 등) 정의 및 자체 검증 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoFileFixtureInstaller.java classpath PDF를 로컬 파일 저장소에 설치/검증하는 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoExternalSubmissionSeeder.java external_submission 시드 저장 및 검증 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoEvidenceSeeder.java task_evidence 시드 저장 및 검증 로직 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoDocumentSeedCatalog.java Demo/Test 문서 84/8건 생성 규칙(상태/만료 구간 포함) 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoDocumentRequestDraftSeeder.java document_request_draft 시드 삽입 및 예약 ID 소유권 검증 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoAuditSeedCatalog.java AuditEvent 추가 생성 규칙(ActorType/trace 포함) 정의 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoAuditEventSeeder.java audit_event append 및 기존 이벤트 검증을 위한 findById 사용 추가
src/main/java/com/fowoco/server/demo/infrastructure/seed/DemoApprovalRequestSeeder.java approval_request snapshot 시드 생성 및 outcome 적용/검증 로직 추가
src/main/java/com/fowoco/server/audit/infrastructure/persistence/JpaAuditEventRepository.java AuditEventRepository에 findById 구현 추가
src/main/java/com/fowoco/server/audit/application/port/AuditEventRepository.java AuditEvent 조회용 findById(UUID) API 추가
README.md Demo Seed 관련 문서 링크 추가
docs/development-guide.md Demo Seed 수량/시나리오 문서로 안내 갱신
docs/demo-seed.md 운영형 Demo Seed 시나리오/수량/검증/초기화 절차 문서 추가
docs/demo-seed-fixture-manifest.md Figma 요구사항 ↔ 예약 fixture ↔ API 노출 범위 매니페스트 문서 추가
.env.example Demo/Test Seed 수량 요약 및 문서 링크 코멘트 갱신

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/development-guide.md
@hywznn

hywznn commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

변경 파일 충돌은 없고
Demo Seed가 기본적으로 비활성화되어 있어 기존 API와 운영 동작에 미치는 영향도 없는 것 확인

@krestar
krestar merged commit cc73347 into main Aug 4, 2026
6 checks passed
@krestar
krestar deleted the feat/70-demo-operational-seed branch August 4, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:in-progress 담당자가 현재 구현 중인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Demo Seed] Figma·Workflow 문서 기반 운영형 데모 데이터 확장

3 participants