# 사용자 여정: 첫 세션 생성과 격리된 작업

## 0. 문서 정보

| 항목 | 내용 |
|---|---|
| 여정 식별자 | `JRN-session-creation` |
| 여정명 | 첫 세션 생성과 격리된 작업 |
| 상태 | 초안 (v0.2) |
| 담당자 | 미지정 |
| 최종 수정일 | 2026-08-30 |
| 달성 가치 | V1 세션 격리 · V5 일관된 세션 상태 |
| 연결 문서 | PRD [`architecture`](../prd/architecture.md)(AC-A1·A2) · [`state-api`](../prd/state-api.md)(AC-C2·C3) · mockup `new-session.html`·`workspace.html` ([매핑](../mockups/README.md)) |

## 1. 서비스 개요 (참고)

**Session Pod Platform** (임시 작업명) — 전용 pod 안에서 도는 장시간 작업 세션을 만들고, 접어두고, 되살리는 플랫폼.
제품 개요와 가치 정의는 [`../values.md`](../values.md) 참고.

## 2. 여정 정의

**대상 사용자 (페르소나)**
P1 멀티세션 작업자 ([README](./README.md#p1-멀티세션-작업자)).

**진입 맥락**
새 작업 덩어리를 시작하려는 참이다. 기존 세션에 얹으면 맥락이 섞이므로 깨끗한 자리를 원한다.

**트리거**
"이건 따로 두고 하자"는 판단. 세션 목록 화면의 New session 버튼, 또는 자동화라면 세션 생성 API 호출.

**사용자 목표**
남의 작업과 섞이지 않는 내 작업 공간을, 기다림 없이 하나 얻는 것.

**완료 기준**
세션이 `active`로 전이되고, 작업자가 그 세션에서 **첫 read/write를 한 번 성공**한다.
(= 워크스페이스 콘솔에 자기 입력에 대한 출력이 처음 찍히는 순간)

## 3. 단계별 상세

> 단계 식별자는 순번이 아닌 슬러그다. 순서가 바뀌어도 식별자는 유지한다.

### `STP-create-request` 세션 만들기

- **사용자 행동**: 세션 이름을 정하고 작업 환경(워크로드 타입)을 고른 뒤 생성을 요청한다.
  타입 선택 자체의 경험은 `JRN-agent-prompt-loop`의 `STP-workload-choice`가 다룬다.
- **터치포인트**: 세션 목록 화면의 New session 모달 (mockup `new-session.html`) · 세션 생성 API
- **생각·감정**: "이름만 정하면 되는 거지?" — 시작 마찰이 낮기를 기대한다.
- **페인포인트 / 이탈 위험**: 만들기 전에 정해야 할 항목이 많으면 시작 자체가 미뤄진다
  → 이름 외에는 전부 기본값으로 넘어갈 수 있게 하고, 되돌릴 수 없는 선택(타입·모델)만 명시적으로 표시한다.
- **관련 AC**: AC-A1

### `STP-workspace-entry` 작업 공간에 들어가기

- **사용자 행동**: 생성 진행을 잠깐 지켜보다가 새 세션의 작업 공간으로 들어간다.
  뒤에서는 이 세션 전용 워크로드 파드가 정확히 하나 기동되고 세션이 `active`로 등록된다(1 세션 = 1 워크로드 파드).
- **터치포인트**: 생성 모달의 프로비저닝 단계 표시 → 워크스페이스 화면 (mockup `new-session.html` → `workspace.html`)
- **생각·감정**: "얼마나 기다려야 하지?" — 몇 초 안에 끝나면 신경 쓰지 않고, 길어지면 실패를 의심한다.
- **페인포인트 / 이탈 위험**: 진행 표시 없이 멈춰 있으면 새로고침·중복 생성으로 이어진다
  → 단계별 진행을 보여주고, 실패는 조용히 끝내지 말고 사유와 재시도 경로를 함께 제시한다.
- **관련 AC**: AC-A1, AC-A2

### `STP-isolated-work` 내 세션에서만 일하기

- **사용자 행동**: 세션에 입력을 보내고 출력을 확인하며 실제 작업을 한다.
  타입별 구체적인 사용 루프는 `JRN-shell-interaction` 또는 `JRN-agent-prompt-loop`로 이어진다.
- **터치포인트**: 워크스페이스 화면의 콘솔 (mockup `workspace.html`) · read/write API
- **생각·감정**: "옆 세션에서 뭘 하든 여긴 내 자리다." — 격리는 평소엔 의식되지 않고, 깨질 때만 인지된다.
- **페인포인트 / 이탈 위험**: 다른 세션의 부하·장애가 내 세션 응답을 느리게 만들면 신뢰가 한 번에 무너진다
  → 자원·장애 경계를 pod 단위로 유지하고, 느려질 때 원인이 내 세션 안인지 밖인지 구분되게 표시한다.
- **관련 AC**: AC-A2, AC-C2, AC-C3

## 4. 분기·예외 흐름

| 상황 | 처리 | 이어지는 단계 |
|---|---|---|
| 타입·모델 값이 유효하지 않음 | pod를 만들기 전에 거부하고(400) 입력 화면에 사유를 표시 | `STP-create-request` |
| pod 스케줄 지연·실패 | 생성 실패를 사유와 함께 알리고 재시도를 제안. 반쯤 만들어진 세션을 목록에 남기지 않는다 | `STP-create-request` |
| 생성 직후 창을 닫음 | 세션은 살아 있으므로 목록에서 다시 연다 | `JRN-multi-session-switch`의 `STP-session-list` |
| 만든 세션이 방치됨 | 유휴 한계 도달 시 자동 동결 | `JRN-idle-resume`의 `STP-auto-freeze` |
| 잘못 만든 세션 | 즉시 정리 | `JRN-session-deletion`의 `STP-delete-intent` |

## 5. 측정 지표

| 지표 | 정의 | 목표 |
|---|---|---|
| 세션 생성 성공률 | `active` 도달 세션 수 / 생성 요청 수 | TBD |
| 생성 체감 시간 | 생성 요청 → 워크스페이스 진입까지 소요 시간 (p50/p95) | TBD |
| 첫 사용 도달률 | 생성 후 10분 내 read/write 1회 이상 발생한 세션 수 / 생성된 세션 수 | TBD |
| 즉시 폐기율 | 생성 후 사용 없이 10분 내 삭제된 세션 수 / 생성된 세션 수 | TBD (오생성 신호) |
| 격리 위반 신고 | 다른 세션 영향으로 의심되는 장애 신고 건수 | TBD (0 유지) |

## 6. 변경 이력

| 버전 | 날짜 | 변경 내용 | 작성자 |
|---|---|---|---|
| v0.1 | 2026-06-18 | 최초 작성 (구 식별자 J1) | 미지정 |
| v0.2 | 2026-08-30 | 전면 재작성 — 슬러그 식별자 전환, 여정 정의·분기·지표·변경 이력 추가, `STP-workspace-entry`를 시스템 서술("전용 pod 기동")에서 사용자 행동 기준으로 재작성 | Claude |
