---
title: 게임잼 플랫폼 고도화 — 세션 로드맵
status: draft (사용자 확정 대기)
created_at: 2026-06-17
session: 20260617-150635
---

# 게임잼 플랫폼 고도화 — 세션별 로드맵

기존 bibimbap(게임 공유 + 팀원 모집, Spring Boot + MyBatis + JSP) 위에 **게임잼 운영/평가/리뷰/관리자/포스팅/검색** 신규 기능군을 얹는다. 메모를 "1항목=1세션"으로 쪼개면 공유 자원(게임잼 엔티티·RBAC·평가 데이터모델)에서 재작업이 폭증하므로(§2.7), **토대 → 결합 클러스터 → 표면 기능** 순으로 의존 순서를 강제한다.

## 의존 그래프

```
S1 RBAC(권한) ─┬─> S2 게임잼 엔티티 ─┬─> S3 태그+검색
               │                     ├─> S4D 평가 통합설계(스키마 동결)
               │                     │      └─> S4a 댓글/리뷰분리 ─┬─> S4b 심사위원
               │                     │                            ├─> S4c 인기투표
               │                     │                            └─(4a·4b·4c)─> S4d 시상집계
               │                     └─> S6 메인 통합(노출 대상 필요)
               └─> S5 포스팅 보드 (S4와 독립, S1 후 병렬 가능)
                                     └─> S6 메인 통합

차후: S7 Unity 빌드 업로드 파이프라인 (별도 조사)
운영: Discord/뒤끝/상금 (코드 외 — 표시 필드만 S2 흡수)
```

- **크리티컬 패스**: S1 → S2 → S4D → S4a → S4d → S6
- **S1 직후 병렬 가능**: S5(포스팅)
- **S2 직후 병렬 가능**: S3(태그)
- **S4 분할 원칙**: S4D(통합설계) 가 평가/리뷰/투표/댓글/시상 **스키마를 한 번에 동결**. 이후 S4a~S4d 는 동결된 계약을 소비만 한다 — 구현 세션이 스키마를 바꾸면 형제 세션 재작업이므로, 스키마 변경은 S4D 로 회귀해 처리.

## 세션 카드

### S1 — 권한 체계(RBAC) 기반  ★최우선 토대
- **목표**: 사이트 관리권한 모델 + 기능별 인증유저 플래그 스캐폴드.
- **포함**: 관리자(전체)/부관리자(허용 권한만 = 권한부여형) 모델, 관리자 콘솔(부관리자 임명 + 권한 토글), 인증유저 플래그 정의·부여(리뷰어/포스터/심사위원/기술자), 권한 체크 인터셉터.
- **제외**: 각 권한의 실제 사용처(후속 세션이 소비).
- **의존**: 없음.
- **공유 자원**: `users`, `security/`, 세션/인증.
- **권장 진입**: requirements-advisor(권한 모델 정밀화) → design → implementation.
- **산출**: 권한 스키마 마이그레이션, 관리자 콘솔, 권한 인터셉터.

### S2 — 게임잼 엔티티 + 라이프사이클  ★토대
- **목표**: 게임잼 이벤트 엔티티 + 상태전이 + 관리 + 출품작 연결.
- **포함**: `jams` 테이블, 상태전이(모집→개발→평가→종료), 개발기간/평가기간 필드, 관리자 게임잼 CRUD, 출품작 = `games`에 잼 연결(개인·팀 모두), 게임잼 목록/상세 페이지, (운영 표시) Discord 링크·상금·후원사 필드.
- **제외**: 평가/투표/리뷰(S4), 검색(S3).
- **의존**: S1(게임잼 생성 권한).
- **공유 자원**: `games`, `recruit_posts`(팀 연결), 상태전이.
- **산출**: `jams` 스키마, 게임잼 페이지, 라이프사이클 상태머신.

### S3 — 태그 + 검색
- **목표**: 게임잼+게임 공통 태그, 게임잼 태그 검색.
- **포함**: 공유 `tags` + 조인테이블(game/jam), 게임잼 태그 검색 UI/쿼리.
- **의존**: S2.
- **산출**: 태그 스키마, 검색 UI.

### S4 — 평가·리뷰·투표 통합  ⚠️결합 클러스터 → 분할 세션화
> §2.7 주의: 댓글/리뷰/심사/투표/시상이 같은 데이터 도메인 + 평가기간 게이트를 공유. **S4D 가 스키마를 한 번에 동결**하고, S4a~S4d 는 그 계약을 소비만 한다. 스키마 변경 필요 시 S4D 로 회귀(형제 세션 재작업 방지).

#### S4D — 평가 통합설계 (설계 전용 세션, 코드 0)
- **목표**: 리뷰/댓글/심사/투표/시상 데이터모델 + 계약 + 평가기간 게이트를 한 번에 확정·동결.
- **포함**: `reviews`(게시물당 1회, 완성도+종합 평점), `game_comments` 200자 제약, 심사 점수 스키마, 잼 투표 스키마, 3트랙 집계 규칙, 상태/기간 게이트 계약.
- **의존**: S1, S2.
- **권장 진입**: design-advisor.
- **산출**: design.md + DB 스키마(동결) + contracts.

#### S4a — 댓글/리뷰 분리 (구현)
- **목표**: `game_comments` 200자 제한 + 리뷰(신규, 게시물당 1회, 완성도+종합 평점) 분리.
- **의존**: S4D.

#### S4b — 심사위원 평가
- **목표**: 심사위원 권한자 점수 입력 → 심사위원 대상.
- **의존**: S4D, S4a, S1(심사위원 권한).

#### S4c — 인기투표
- **목표**: 잼 전용 1인 1표(평가기간 한정) → 인기 대상.
- **의존**: S4D.

#### S4d — 시상 집계/결과
- **목표**: 3트랙(심사/유저평점/인기) 산정 + 수상 표시.
- **의존**: S4a·S4b·S4c 산출.

### S5 — 정보성/홍보성 포스팅 보드  (S1 후 병렬 가능)
- **목표**: 운영진 전용 공지·블로그 + 외부링크 큐레이션. 유저 작성 차단.
- **포함**: `posts` 테이블, 포스터 권한자 작성, 카테고리(유니티블로그/세션/후기인터뷰/뒤끝 개발팀), 외부링크 타입, 유저작성 차단.
- **의존**: S1(포스터 권한). S4와 독립.
- **산출**: `posts` 스키마, 포스터 작성 UI.

### S6 — 메인페이지 통합  (거의 마지막)
- **목표**: `index.jsp` 에 게임잼+게임+포스팅 통합 노출.
- **의존**: S2, S5(노출 대상 존재).
- **산출**: index 확장.

### S7 — (차후) Unity 빌드 업로드 파이프라인  ⏸deferred
- **목표**: WebGL 빌드 업로드 → 검증 → `/game/{uuid}/` 배치 자동화.
- **선행**: 별도 조사(빌드 포맷/검증 규칙/보안 — zip-slip 등).
- **현재**: 스코프 인지만, 후속 결정.

## 운영(코드 외)
- **Discord**: 공지·진행은 수동 운영. 코드는 게임잼 상세에 초대 링크 표시 정도(S2 흡수).
- **뒤끝(Bekend)**: 파트너/콘텐츠 — 포스팅 카테고리로만 등장.
- **상금·후원**(치킨/10만원/편의점 5000원권): 게임잼 상세 표시 필드(S2) + 실제 지급은 수동.
