PRD — hr-training-track
updated: 2026-05-29 · status: draft 소속 메뉴: HR Admin (전용 셸) > AI 롤플레이 > 교육 트랙 관리 (2026-05-29 확정) 도메인 근거: ai-training-routes.md (현황·분석 read 측) · 트랙 CRUD는 매칭 문서 없음(ai-training-project/curriculum 미수집 → §5) 셸: HR Admin 전용 사이드바 셸 — 데스크탑 전용 (학습자 플랫폼 탑바 셸과 분리) — §5 확정 범위: 단일 화면 — 목록·현황·신규 추가(모달)·디테일 드로어(트랙→개인 드릴다운)을 한 페이지에서 처리 레이아웃: 목록은 메인 폭 유지, 디테일은 우측 오버레이 드로어(넓은 패널, ~520px) — §5 확정
1. 목적
HR 관리자가 직원 교육 트랙(여러 롤플레잉 시나리오를 합격 조건으로 묶은 학습 과정)을 직접 만들고, 배정 현황과 개인별 진척을 한 화면에서 모니터링·관리한다. 흩어진 트랙 생성·배정·추적 작업을 단일 운영 콘솔로 통합하는 것이 목적.
2. 사용자
- 주 사용자: 기업 HR 관리자 / 교육 담당자
- 빈도: 현황 점검 주 1~2회, 트랙 신규 생성은 분기 단위
- 진입 맥락: HR Admin 전용 셸 진입 → 좌측 사이드바 "AI 롤플레이 > 교육 트랙 관리" 메뉴. 트랙 생성·현황 확인 후 동일 화면에서 작업을 끝내거나 사이드바의 다른 메뉴(분석 대시보드·임직원별 AI 연습 현황 등)로 이동.
- 디바이스: 데스크탑 전용. HR 관리자는 사무 PC에서 배정 테이블·시나리오별 점수 등 고밀도 운영 데이터를 다룬다. 모바일 뷰포트는 지원 범위에서 제외(§5 확정).
3. 핵심 사용 흐름
화면 진입부터 떠날 때까지의 골든 패스.
- 교육 트랙 관리 진입 → 상단 요약 현황(전체/진행중/마감 임박/미시작 인원)과 트랙 목록(진행중·예정·종료) 확인
- 점검할 트랙 행 클릭 → 우측 드로어가 열리며 해당 트랙의 완료율·시나리오 구성·인원별 진척 리스트 표시 (목록은 좌측에 그대로 유지되어 다른 트랙으로 즉시 전환 가능)
- 특정 직원 클릭 → 같은 드로어 안에서 개인 진척 디테일(시나리오별 완료/점수/최근 시도일)로 드릴다운
- 필요 시 "신규 트랙 추가" 모달로 트랙 생성(대상 시나리오·합격 조건·배정 인원·기간) 또는 기존 트랙의 마감일 연장·보관·제거(제거는 배정·진행 이력 없는 트랙만)
- 드로어/모달 닫고 목록으로 복귀
4. 주요 정보·액션
정보:
- 요약 현황 — 전체 트랙 수, 진행중, 마감 임박, 미시작 인원 합계 (페이지 상단 우선순위 1)
- 트랙 목록(행) — 트랙명, 대상 인원 수, 기간(시작~마감), 평균 진척률, 상태 뱃지(진행중/예정/종료)
- 트랙 디테일 드로어 — 완료율, 시나리오 구성, 인원별 진척(완료/진행중/미시작 분류). 넓은 폭을 활용해 배정 인원을 컬럼형 테이블(이름·부서·진행바·상태)로 노출
- 개인 진척 디테일 — 직원명·부서, 시나리오별 완료 상태·점수·최근 시도일
도메인 근거 (
ai-training-routes.md, read 측만):- [✓현재] 임직원별 현황 요약은
GET /v1/hr/ai-training/summary로 제공 — 정렬 지표count/sumSeconds/avgSeconds/maxScore/avgScore/lastUsedAt, 페이지네이션·검색(q) 지원. "평균 진척률·점수·최근 시도일" 컬럼은 이 지표로 뒷받침됨. 근거:backend/src/routes/hr-admin/aiTrainingRoutes/zod.ts:3-48,index.ts:79. - [✓현재] 개인 점수·보고서는
AITrainingLog.totalScore·embedLink(보고서 PDF URL), 상태 enum 9종(notStarted/inProgress/completed/...)으로 매핑. 근거:schema.prisma:1095,index.ts:80-90, 166. - [✓현재] 회사 단위 분석 대시보드(
/analytics)는 캐시 기반 — 캐시 부재 시{status:"PROCESSING"}200 반환. 현황 수치가 항상 실시간 최신이 아닐 수 있음(폴링 갱신). 근거:index.ts:183-207. → "마감 임박/미시작 인원" 집계의 신선도 정책 §5. - [✓현재] 모든 조회는 회사 스코프 강제(자사 임직원만, 미권한 404/403). 근거:
companyQuery.ts:13-26,index.ts:68-75.
액션:
| trigger (사용자 행동) | target (이동 대상) | target_slug | return (돌아오는 경로) |
|---|---|---|---|
| "신규 트랙 추가" 버튼 클릭 | 트랙 생성 폼 | (modal:신규 트랙 추가) |
저장/취소 → 목록 |
| 트랙 행 클릭 | 트랙 디테일 드로어 열림 (우측 오버레이) | (self) |
드로어 닫기 → 목록 |
| 디테일 드로어 내 인원 클릭 | 개인 진척 디테일 | (self) |
뒤로 → 트랙 디테일 드로어 |
| 상태/기간 필터 변경 | 목록 필터링 | (self) |
— |
| 트랙 검색 | 목록 필터링 | (self) |
— |
| "마감일 연장" / "트랙 보관" | 트랙 설정 변경 (보관=soft, 이력 보존·복원 가능) | (modal:트랙 설정) |
닫기 → 디테일 드로어 |
| "트랙 제거" | 트랙 삭제 확인 (hard, 비가역) — 배정·진행 이력 없는 트랙만 활성, 이력 있으면 비활성+보관 유도 | (modal:트랙 제거 확인) |
삭제 → 드로어 닫고 목록 / 취소 → 디테일 드로어 |
| 디테일 드로어 "배정 인원 관리" | 인원 추가/제외 | (modal:배정 관리) |
닫기 → 디테일 드로어 |
도메인 근거 (액션 = 쓰기 작업, ⚠️ 매칭 문서 없음):
- [✗현재]
ai-training-routes.md는 read + 분석 트리거 전용 — DELETE/PUT/PATCH 라우트 없음. 근거:ai-training-routes.md규칙 §,index.ts:257-294(라우트 7종 전부 GET 또는 analytics POST).- 따라서 "신규 트랙 추가 / 마감일 연장 / 트랙 보관 / 배정 인원 관리"는 이 도메인 문서로 검증 불가 →
[가정]. 교육 트랙(시나리오 묶음+합격조건+배정) 생성·수정 API는ai-training-project또는curriculum도메인 소관으로 추정되나 해당 도메인 문서가 아직 수집되지 않음(역설계 미완). → §5 결정 필요.
- 모든 액션이
(self)또는(modal:*)— 단일 화면 범위 내 처리. 외부 slug 이동 없음. - dead-end 없음: 디테일 드로어·개인 드릴다운·모든 모달은 닫기/뒤로로 목록 또는 상위 드로어 복귀.
- 드로어는 목록을 가리지 않고 우측에 붙어 열린다(목록 영역이 드로어 폭만큼 우측 여백 확보) → 좌측 목록을 그대로 보며 다른 트랙으로 전환 가능.
수집할 사용자 액션 데이터
이 화면은 HR Admin(운영자)의 조작 로그 — 학습자 행동 로그가 아니라 관리 액션 audit 성격이다. §5 "(grounding) 관리자 PII 열람 audit" 항목과 직접 연결.
| trigger | 이벤트 | 프로퍼티 | 수집 사유 |
|---|---|---|---|
| "신규 트랙 추가" 저장 | hr_track_create |
scenarioCount, assigneeCount, passModeType | 트랙 생성 빈도·구성 |
| 트랙 행 클릭(드로어) | hr_track_open |
trackId | 어떤 트랙을 자주 점검하는지 |
| 인원 드릴다운 | hr_track_member_open |
trackId, employeeId | (audit) 관리자의 개인 진척 열람 — §5 컴플라이언스 |
| 마감일 연장 | hr_track_extend |
trackId | 기간 운영 패턴 |
| 트랙 보관 | hr_track_archive |
trackId | soft-delete 사용률 |
| 트랙 제거 | hr_track_delete |
trackId | 비가역 삭제 audit |
| 배정 인원 관리 | hr_track_assign_change |
trackId, addCount, removeCount | 배정 변경 추적 |
| 상태/기간 필터·검색 | hr_track_list_filter |
statusFilter, hasQuery | 목록 탐색 패턴 |
- PII (필수 주의): employeeId는 audit 목적상 수집하되, 이름·부서 원문·영상 URL(
embedLink)은 이벤트 프로퍼티에 넣지 않는다. 개인 영상·점수 열람 audit-log 정책은 §5 "(grounding) 관리자 PII 열람 audit"에서 보안팀과 확정. - 쓰기 액션 이벤트는 §4 도메인 근거대로 API가
[가정]상태 — 이벤트명은 후보, 트랙 CRUD API 확정(§5 P0) 후 동기화.
5. 결정 필요 항목
- HR Admin 전용 셸의 형태·IA — 확정: 학습자 플랫폼(상단 탑바)과 분리된 좌측 사이드바 셸, 데스크탑 전용. 사이드바 IA는 실제 HR Admin 콘솔 기준 7개 그룹: 코칭 주제 / 코칭 현황 / 다면 설문 / AI 롤플레이 / 1on1 관리 / 임직원 관리 / 설정. 교육 트랙 관리는 "AI 롤플레이" 그룹 하위 메뉴(교육 트랙=롤플레잉 시나리오 묶음이라 동일 도메인). 와이어프레임은 7개 그룹 전체를 그리되 교육 트랙 관리만 live·active, 나머지는 비활성 placeholder. 데스크탑 전용이므로 모바일 뷰는 제거. (2026-05-29)
- "트랙"의 합격 조건 정의 범위 — 시나리오별 통과 점수 / 전체 평균 / 필수·선택 시나리오 구분 중 무엇? · 와이어프레임 제안(2026-05-29): 신규 트랙 추가 form에서 3가지 모드를 세그먼트로 전환하게 그려둠. 셋 중 하나로 좁힐지, 다중 지원할지 디자인/리뷰에서 확정.
- 신규 트랙 추가 시 대상 인원 배정 방식 — 개인 선택 / 부서 단위 / 그룹 태그? · 와이어프레임 제안(2026-05-29): form에서 개인/부서/그룹 탭으로 전환하게 그려둠(검색 입력 + 선택 칩). 지원 범위 확정 필요.
- 트랙 상태(진행중/예정/종료) 전환 규칙 — 기간 기반 자동 전환 vs 수동?
- 개인 진척 디테일에서 학습자용 세션 분석(
rp-session-detail)으로 연결할지 여부 (관리자 열람 권한 범위) - (grounding) 트랙 CRUD API 소관 (P0) — 트랙 생성·수정·배정·보관·마감연장 API가 어느 라우트에 있는지.
ai-training-routes는 read 전용이라 부재.ai-training-project/curriculum도메인 문서 미수집. 담당: 백엔드. - (grounding) 현황 수치 신선도 —
/analytics가 캐시 기반(AITrainingAnalyticsCache, 캐시 부재 시PROCESSING)이라 상단 요약이 실시간 아닐 수 있음. "마감 임박/미시작 인원"을 실시간 쿼리로 별도 계산할지 캐시 갱신(POST /analytics/run)에 의존할지. 담당: 백엔드/AI. - (grounding) 관리자 PII 열람 audit —
ai-training-routes는 HRM의 임직원 영상·점수 조회에 audit-log 부재([✗현재]). 개인 디테일에서 영상·embedLink노출 시 컴플라이언스. 담당: 보안. - (grounding)
/summary검색(q) 대상 — 목록 검색이 임직원명 기준인지 트랙명 기준인지. 문서상q대상이[?현재]. 담당: 백엔드. - 디테일을 우측 사이드 패널로 둘지, 하단 인레이/전체폭 드로어로 둘지 (1화면 레이아웃 형태) → 확정: 넓은 우측 오버레이 드로어(~520px). 360px 사이드 패널은 트랙/인원 상세의 정보 밀도(배정 인원 테이블, 시나리오별 점수)를 담기에 좁다는 판단. 목록은 좌측 메인에 유지하고 드로어가 우측에 슬라이드, 트랙 상세·개인 드릴다운 모두 동일 드로어 내에서 전환. (2026-05-29)
- 트랙 정리 액션 — 보관(archive) vs 제거(delete) → 확정: 둘 다 제공, 용도 분리. 보관은 종료·운영 끝난 트랙을 목록에서 숨기되 배정·진척·점수 이력을 보존(복원 가능, soft). HR 교육 이력은 인사 평가·감사 근거가 되므로 보존이 기본. 제거는 비가역 삭제로, 잘못 생성·테스트 트랙 정리용 — 배정 인원이 없고 진행 이력이 없는 트랙에만 활성, 진행 이력이 있으면 제거 버튼 비활성 + "이력 보존을 위해 보관을 사용하세요" 안내. 제거는 별도 확인 모달(트랙명 재확인 권장)로 실수 방지. (2026-05-29) · 쓰기 API는 §4 도메인 근거대로
[가정]— 삭제 엔드포인트 존재·소프트삭제 여부는 ai-training-project/curriculum 도메인 수집 후 확정.