# OP-03 · 프로젝트 목록 (오퍼레이터)

## 1. 한 줄

기수의 회차를 **만들고 관리한다.**

## 2. 진입 · 이탈

좌측 네비 → 행 클릭 → **OP-04**. `[+ 프로젝트 생성]` → 모달.

## 3. 뷰

```
프로젝트  총 4개                                        [+ 프로젝트 생성]
[🔍 검색] [유형 전체 ▾] [상태 전체 ▾] [정렬 준비 필요 순 ▾]
────────────────────────────────────────────────────────────────────────────
 프로젝트  유형  교안 · 검증 개념 3건        제출 마감  진행     조치            상태
 미프 4차  미프  AI_LLMOps v2               07-21     —       개념 3건 확정    예정
                ⚠ 검증 개념 미확정                             일정 미설정
 미프 3차  미프  AI_LLMOps v2 · Streamlit v1 07-14     응시     개념 공백        진행 중
                HITL Trigger · Graph 구성 …            86%      State 관리 6/8팀
                                                      F반 48%   분석 실패 2팀
 빅프      빅프  교안 해당 없음              09-26     —       —              예정
  총 3회         본인 커밋 영역 — 사람마다 다름
 미프 2차  미프  Kubernetes 기초 v1          07-04     리포트   —              종료
                Service · Deployment · ConfigMap       발행 완료
────────────────────────────────────────────────────────────────────────────
1–4 / 4개                          [1]
```

## 3-1. 프로젝트는 기수 단위다 — v1과 바뀐 구조

**v1은 프로젝트가 반 하위였다.** `v1/definition/02-domain-hierarchy.md`:

```
└─ 반 Class (A반, B반)
    ├─ 교육생 Trainee
    └─ 프로젝트 Project      ── 반에서 진행, 여러 개
```

*"반에서 진행"* 이고 *"매니저가 생성"* 이었다. **v2에서 프로젝트가 기수 하위로 올라갔는데
그 구조 변경을 명시한 문장이 없었다** — 여기 적는다.

| | v1 | v2 |
|---|---|---|
| 프로젝트 위치 | **반 하위** | **기수 하위** |
| 생성 | 매니저 | **오퍼레이터** |
| 검증 개념 | 매니저가 반별로 선택 | **프로젝트 단위 고정** |
| 반 지정 | `Project.class_id` | **없다** |

### 왜 기수 단위인가

| | |
|---|---|
| **1** | **반별 프로젝트는 14번이 막으려던 것이다.** 반마다 만들면 A반 미프3차와 B반 미프3차가 다른 레코드고 각각 3건을 고른다 — 4-3의 폐지 근거가 *"반별로 다르게 고르면 그 축마저 반마다 달라져 **반끼리 비교가 불가능해진다**"* 다 |
| **2** | **히트맵이 성립하지 않는다.** 12-1이 `행 10반 × 열(미프 8회 × 3개념) = 240칸`인데, 프로젝트가 반 하위면 **열이 반마다 달라져** 격자가 안 만들어진다 |
| **3** | **9-6의 전제다.** *"한 검증 개념에서 반 절반 이상이 미달하면"* — 여러 반이 **같은 개념**을 했다는 뜻이다 |
| **4** | **반은 관리 단위다.** 250명을 25명씩 나눈 **담당 분할**이지 커리큘럼 단위가 아니다. 같은 기수인데 A반만 미프 3차를 한다면 **커리큘럼이 다른 것**이고 다른 기수여야 한다 |
| **5** | **트랙은 미확정 개념이다.** v1 메모 — *"트랙이 (a)반과 같은 것인지 (b)커리큘럼 트랙(AI/백엔드)으로 **반과 직교**하는지 확인 필요"*. 트랙이 도입되면 **그때 축을 더하는 게 맞고**, 지금 반에 얹으면 두 개념이 섞인다 |

### 참여 반 선택을 만들지 않는다

생성 모달에 `대상 반: ○ 선택`을 두면 **부분 선택이 가능한 것처럼** 보이는데, 그러면
두 가지가 깨진다.

| | |
|---|---|
| 히트맵 | *"그 반이 안 한 회차"* 라는 **새 상태**가 생긴다 — `▨ 문항 없음`(코드에 개념이 없음)과 뜻이 다르므로 표기를 또 만들어야 한다 |
| OP-01 반 비교 | 막대들의 **모집단이 달라져** 나란히 못 놓인다(A반은 8회, F반은 3회) |

> **재개 조건:** ① **트랙 축이 확정**되거나 ② **롤링 입학**으로 반마다 진도가 갈리면.
> 둘 다 지금 문서에 없다. 그때는 `참여 반`이 아니라 **트랙을 별도 축으로** 두는 쪽을
> 먼저 검토한다 — 반은 관리 단위로 남겨야 매니저 담당 범위와 어긋나지 않는다.

### 화면이 그 사실을 밝힌다

헤더에 스코프를 쓴다 — **`7기 전체 · 10반 250명이 같은 회차를 한다`**. 표 아래에는
**배정이 어디서 되는지**를 적는다.

| 무엇 → 무엇 | 어디 | 언제 |
|---|---|---|
| 학생 → 반 | **OP-06 `반·명단`** → `[배정]` 모드 | 기수 세팅 시 1회 |
| 학생 → 팀 | **MG-08 `팀`** 탭 | **프로젝트마다** 재편성 |
| ~~프로젝트 → 반~~ | **없다** | |

**이 표기가 없으면 *"반이 왜 없지"* 라는 질문이 남는다.**

## 3-2. MG-07(매니저 목록)과 무엇이 다른가

같은 표처럼 보이지만 **역할이 반대라 통일하면 안 되는 부분이 있다.**

### 시간 방향이 반대다

| | 매니저 MG-07 | 오퍼레이터 OP-03 |
|---|---|---|
| 보는 곳 | **지금 ~ 과거** | **미래** |
| 진행 중 회차 | 독촉해야 함 | 관측만 — 이미 굴러간다 |
| **예정 회차** | **빈 행** — 제출이 안 들어왔으니 할 일이 없다 | **가장 급한 행** — 개념·일정을 정해야 한다 |
| 종료 회차 | 면담이 남았음 | 개념 공백 확인 |
| **기본 정렬** | **최신순** | **준비 필요 순** |

**매니저는 뒤처리를, 오퍼레이터는 준비를 한다.** 정렬 기본값이 반대인 이유가 이것이다.

### 조치의 단위가 다르다

| | 매니저 | 오퍼레이터 |
|---|---|---|
| 질문 | **누구를** 손대나 | **무엇을** 고치나 |
| 예 | `A반 미제출 2팀` · `C반 면담 2명` | `개념 3건 확정` · `개념 공백 State 관리 6/8팀` |
| 해결 | **그 회차 안에서** — 독촉하면 제출된다 | **그 회차 안에서 안 된다** — 개념 공백은 이번에 못 고친다 |

### 진행이 실수 vs 비율

```
매니저      응시 58/71                ← 13명이 독촉 대상이라 실수가 필요하다
오퍼레이터  응시 86% · F반 48%        ← 개인을 못 보니 이상 여부가 필요하다
```

**`198/231`에서 오퍼레이터는 할 수 있는 게 없다** — 33명이 누군지 모르고 개인 독촉은
매니저 일이다. 봐야 하는 것은 **평균에서 벗어난 반**이고, 10반이라 이름을 다 못 쓰니
**가장 낮은 반 하나**만 쓴다.

### 통일한 것

| | |
|---|---|
| 어휘 | **`검증 개념`** — 18번은 `질문에 쓸 항목`이라 썼지만 **14번(상위)이 `검증 개념`** 이고 히트맵·명부·대시보드가 다 그 말을 쓴다. 오퍼레이터가 확정한 것과 매니저가 보는 것이 **다른 물건처럼 보이면 안 된다** |
| 교안·개념 | **한 열 2줄** — 개념이 어느 교안에서 왔는지가 같이 읽히는 정보이고(4-3), **교안은 여러 개 붙는다** |
| 빅프 | `교안 해당 없음` · **`총 3회`** — 시작 전에는 회차 번호가 없다(첫 회차 시점이 *"첫 동작하는 코드가 나온 시점"* 이라 학생마다 다르다 · 10-2) |

### 집단 미달을 `재투입`으로 잇지 않는다

9-6의 후속 예시(*"반 공지 · 다음 프로젝트 검증 개념에 재투입 · 기수 리포트에 기록"*)를
목록의 열로 만들려다 접었다.

**검증 개념은 그 회차 교안의 `teaches`에서만 나온다**(4-3). 미프 3차가 AI_LLMOps고
미프 5차가 Kubernetes면 **Graph 구성은 후보 목록에 아예 없다** — 재투입은 **다음 회차가
같은 교안을 쓸 때만** 가능한 조건부 일이다.

> **조건부인 일을 확정 링크로 만들면 화면이 거짓말을 한다.** 9-6도 *"**가능한** 후속"*
> 이라 적었고 공지는 채널조차 정의된 적 없다.

**그 이력이 쓰일 자리는 OP-04 구성 탭**이다 — 개념을 고를 때 **같은 교안이 붙어 있으면**
후보에 `⚠ 미프 3차에서 집단 미달`이 뜬다. **같은 교안일 때만 후보에 나타나므로 조건이
자연히 충족된다.**

**`검증 개념 미확정` 경고가 이 목록의 핵심 신호다.** 3건이 없으면 문항을 만들 수 없다.

### 생성 모달

```
프로젝트명   미프 4차
유형         미프 / 빅프
교안 연결    ☑ AI_LLMOps v2  ☑ Streamlit 실습 v1  ☐ …   필수 · 1개 이상
질문 항목    교안이 가르친 항목에서 3건 선택              필수 · 3건 고정
요구사항     (붙여넣기, 한 줄에 하나)                    선택 · 교안과 별개
```

**교안은 여러 개 붙일 수 있다.** 한 회차가 교안 하나에만 걸치지 않는다 — LangGraph로 만들고 Streamlit으로 붙이는 미프면 두 교안이 다 재료다. 하나만 걸게 하면 나머지 교안에서 가르친 것은 **물어볼 방법이 없어진다.**

### 후보는 교안 분석이 내놓은 `가르친 항목`이다

교안 분석 단계의 출력이 `질문에 사용할 teaches`이고, 여기서는 그 목록에서 3건을 고르기만 한다.

**정의문을 같이 보여준다.** 이름만으로는 무엇을 묻게 될지 판단할 수 없는데, 고르는 순간
그것이 그 회차 **모든 학생의 문항**이 된다.

**후보는 교안별로 묶어 보여준다.** 합쳐서 늘어놓으면 `p.55`가 어느 교안의 55쪽인지 알 수
없다. 확정된 3건은 **출처 교안을 달고 다닌다** — 리포트의 교안 위치와 면담 브리프가 그 값을 읽는다.

**교안을 고르기 전에는 항목 목록이 비활성이다.** 항목은 교안에서 나온다.

## 4. 데이터

회차 · 유형 · **교안 n개** · 검증 개념 3(각각 출처 교안·섹션) · 요구사항 · 일정 ·
**진행 비율 + 가장 낮은 반** · **조치**(개념 미확정 · 일정 미설정 · 개념 공백 · 분석 실패).

## 5. 액션

생성 · 행 클릭 · 필터(유형·상태·검색) · **정렬 기본 `준비 필요 순`**.
**3건 미만/초과면 저장 차단. 교안 0개도 차단.**

## 6. 상태 — 왜 그렇게 정했나

> **케이스 표는 목업에 있다** — [`operator/projects.html#cases-op03`](../wireframe/operator/projects.html#cases-op03).

### 교안이 검증 개념의 출발점이다

교안을 연결해야 **가르친 항목**이 나오고, 그중 3건을 고른다. 그래서 교안이 없으면 **프로젝트를 만들 수 없다.**

### 못 만드는 이유를 구분한다

| | 무엇 | 가야 할 곳 |
|---|---|---|
| **교안 미등록** | 등록된 교안 자체가 없다 | 운영 관리 › 교안 **등록** |
| **교안에 항목 0** | 교안은 있는데 항목이 안 나왔다 | 교안 **분석 상태 확인**(미완·실패) |

둘을 같은 문구로 쓰면 오퍼레이터가 **등록을 다시 하러 간다** — 이미 있는 교안을 또 올린다.

### 빈 상태에 생성을 권한다

매니저 화면과 **반대**다. 오퍼레이터는 프로젝트를 만들 권한이 있으므로 `생성 유도`가 맞다.
## 7. 안 하는 것

| | 어디에 |
|---|---|
| 팀 편성 · 독촉 | **MG-08**(실행은 매니저) |
| 리포트 | **OP-05 · MG-08** |
| 재투입 이력 | **만들지 않는다**(위 절) — 이력은 **OP-04 구성 탭 개념 후보**에서 쓴다 |
| 개인 독촉 | **MG-08**(오퍼레이터는 개인을 볼 수 없다) |
