bibimbap/docs/work-log/2026-06-17-jam-platform-roa...

11 KiB

kind title description status source_session restructured_by created_at owner
work-log bibimbap 플랫폼 고도화 — 목적별 워크스트림 로드맵 150635 단일 게임잼 프레임을 4개 목적 워크스트림(거버넌스/게임잼/사이트플랫폼/유저배지)+운영으로 재구조. 게임잼은 그 중 하나. 의존성(빌드순서) 유지 + 잼일정 분리가능 여부 명시. active 20260617-150635 20260617-162536 2026-06-17 art

bibimbap 플랫폼 고도화 — 목적별 워크스트림 로드맵

기존 bibimbap(게임 공유 + 팀원 모집, Spring Boot + MyBatis + JSP) 위에 신규 기능군을 얹는다.

핵심 재구조 이유: 이전 로드맵(20260617-150635)은 의존성/공유자원 축으로는 잘 쪼갰으나, 모든 항목을 단일 "게임잼 플랫폼 고도화" 목적 프레임 아래 배치했다. 재검토 결과, 제공한 메모가 전부 게임잼용이 아니었다. 항목별 "왜 존재하나(목적)"를 1:1로 재확정한 결과, 4개 목적 워크스트림 + 운영으로 분해됐다.

  • 게임잼은 4개 워크스트림 중 하나(W2)다.
  • 사이트 전반 기능(태그검색·댓글리뷰·포스팅·메인·Unity업로드)과 유저 배지/평판은 게임잼 회차 일정과 무관하게 독립 진행 가능.
  • 의존성 그래프(빌드 순서)는 그대로 유효하다 — 워크스트림 라벨로 재서술했을 뿐.

W1 — 거버넌스 / RBAC ★토대

목적: 사이트 거버넌스(운영진 관리). 게임잼이 없어도 필요한 토대.

  • 포함:
    • 관리자(전체) / 부관리자(허용된 권한만 = 권한부여형) 모델
    • 관리자 콘솔 — 부관리자 임명 + 권한 토글
    • 권한 체크 인터셉터
    • 권한 토글 항목 예시: 게임잼관리, 포스팅작성(= 포스터 권한)
  • 게임잼 관계: 소비자 — 게임잼관리 권한·심사위원 역할이 이 위에 얹힘.
  • 잼 일정 분리: 가능(토대, 독립).
  • 의존: 없음.
  • 공유 자원: users, security/, 세션/인증.

W2 — 게임잼 ★본체

목적: 게임잼 운영·평가·시상 그 자체. 잼이 없으면 존재 이유 없음.

  • 잼 일정 분리: 불가(잼 그 자체).
  • 의존: W1.

W2-1 — 게임잼 엔티티 + 라이프사이클

  • jams 테이블, 상태전이(모집→개발→평가→종료), 개발기간/평가기간 필드
  • 관리자 게임잼 CRUD, 게임잼 목록/상세 페이지
  • 회차 독립(다중 인스턴스)
  • 출품작 = 기존 games 재사용 + 잼 연결(jam_id/조인). 개인·팀 모두.
  • 출품작 이중 노출 — 잼 전용 뷰 + 일반 게임 허브
  • 운영 표시 필드: Discord 링크 / 상금 / 후원사 (표시만)

W2-2 — 심사위원 역할 권한

  • W1 위에 얹히는 잼 전용 역할
  • 권한 체크: 심사위원만 심사 점수 입력 가능

W2-3 — 잼 평가 통합설계 (스키마 동결) ⚠️결합 클러스터

범위 = 잼 평가만. 댓글/리뷰 스키마 자체는 W3에서 설계(동결 묶음 아님).

  • 심사 점수 / 잼 투표 / 시상 집계 스키마 확정·동결
  • "W3 댓글/리뷰의 리뷰 평점 → 시상 유저평점 트랙" 단방향 집계 계약
  • 평가기간 게이트 계약
  • 권장 진입: design-advisor
  • 산출: design.md + DB 스키마(동결) + contracts

W2-4 — 심사위원 평가

  • 권한자(심사위원) 점수 입력 → 심사위원 대상 집계
  • 의존: W2-3 동결 완료, W2-2(심사위원 권한)

W2-5 — 인기투표

  • 잼 전용 1인 1표, 평가기간 한정, game_likes와 별개
  • 의존: W2-3 동결 완료

W2-6 — 시상 집계 / 결과

  • 3트랙 산정: 심사 / 유저평점(W3 리뷰 평점 집계) / 인기 → 수상 표시
  • 의존: W2-4, W2-5, W3 댓글리뷰 평점

W3 — 사이트 플랫폼 (전부 잼 일정 독립)

목적: 일반 게임/콘텐츠 사이트 기능. 게임잼은 소비자 중 하나.

  • 잼 일정 분리: 전부 가능(독립 출시 가능).

W3-1 — 태그 + 검색

  • 목적: 일반 게임 발견성 중심. 잼 용도(이전 회차 검색 / 진행 회차 강조)는 부수.
  • 공유 tags + 조인테이블(game/jam), 게임잼 태그 검색 UI/쿼리
  • 의존: W2 게임잼 엔티티 (잼 태그 연결 시에만). 단독 게임 태그는 독립.

W3-2 — 댓글 / 리뷰 분리

  • 목적: 모든 게임 페이지 일반 기능. 잼 평가기간 게이트 없음.
  • game_comments 200자 + 리뷰(게시물당 1회, 완성도+종합 평점)
  • 리뷰 작성 주체 = 아무나(게임당 1회)
  • 잼 연결 = 시상(W2-6)이 리뷰 평점을 단방향 집계할 뿐. 이 기능 자체는 잼과 무관.
  • 의존: 없음(독립).

W3-3 — 포스팅 보드

  • 목적: 사이트 공지·블로그 + 외부링크 큐레이션. 별도 메뉴로 운영.
  • 포스터 권한자(W1)만 작성. 유저 작성 차단.
  • 카테고리: 유니티블로그 / 세션 / 게임잼대상 후기인터뷰 / 뒤끝 개발팀
  • 게임잼은 포스팅 주제 중 하나로 포함될 뿐 — 포스팅 보드가 게임잼에 의존하지 않음.
  • 의존: W1(포스터 권한).

W3-4 — 메인페이지 (게임 허브)

  • 목적: index.jsp 에 게임 + 잼 출품작이 모이는 공간.
  • 포스팅은 별도 메뉴 — 메인 통합 아님.
  • 의존: W2 게임잼 엔티티(잼 출품작 노출 시).

W3-5 — Unity WebGL 빌드 업로드 자동화 ⏸deferred

  • 목적: 일반 게임 호스팅 자동화(모든 제출). 현 수동 호스팅 대체.
  • 업로드 → 검증 → /game/{uuid}/ 배치
  • 선행: 별도 조사(빌드 포맷/검증/보안 — zip-slip 등)
  • 게임잼과 무관한 일반 인프라.

W4 — 유저 배지 / 평판 ★신규 (150635 누락)

목적: 커뮤니티 기여 인정. 권한 아님, 평판/배지. 게임잼·RBAC와 별개 도메인.

  • 포함:
    • 리뷰어 배지: 업로드 게임 인증 리뷰어. W3 리뷰 활동/품질 기반 부여.
    • 기술자 배지: 개발 정보 공유·적극 업로더 인정. ("기술자"는 임시명칭)
  • 배경: 150635가 리뷰어/기술자를 RBAC "인증유저 플래그"로 오분류 → 본 재검에서 별도 워크스트림으로 발굴.
  • 잼 일정 분리: 가능(독립).
  • 의존: 활동 소스(W3 리뷰 등) 존재 후. 독립 출시 가능.

운영 (코드 외)

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

의존성 그래프 / 빌드 순서

W1 거버넌스/RBAC ─────────────────────────────────────────────── ★최우선 토대
   │
   ├──> W2-1 게임잼 엔티티 + 라이프사이클
   │       │
   │       ├──> W2-2 심사위원 역할 권한
   │       │
   │       ├──> W2-3 잼 평가 통합설계(스키마 동결)
   │       │         │
   │       │         ├──> W2-4 심사위원 평가 ──────────────────┐
   │       │         │                                          │
   │       │         └──> W2-5 인기투표 ─────────────────────┐  │
   │       │                                                  │  │
   │       │    W3-2 댓글/리뷰(독립) ──[리뷰평점 단방향집계]──┤  │
   │       │                                                  ↓  ↓
   │       │                                           W2-6 시상 집계
   │       │
   │       ├──> W3-1 태그+검색 (잼 태그 연결 시)
   │       └──> W3-4 메인 허브 (잼 출품작 노출 시)
   │
   ├──> W3-3 포스팅 보드 (W1 후 병렬 가능, 잼 독립)
   │
   └──> W4 유저 배지/평판 (W3 활동 소스 후, 독립)

W3-2 댓글/리뷰 ── 독립(잼 무관, 단 W2-6이 평점 집계)
W3-5 Unity 업로드 ── deferred (조사 선행 필요)

크리티컬 패스: W1 → W2-1 게임잼 엔티티 → W2-3 잼 평가 통합설계 → W2-6 시상 집계

병렬 가능:

  • W1 완료 후: W3-3 포스팅(잼 독립)
  • W2-1 완료 후: W3-1 태그검색, W3-4 메인 허브
  • W3-2 댓글/리뷰: 언제든 독립 진행 가능
  • W4 배지: W3 활동 소스 존재 후 독립 진행

S → W 매핑 (추적성)

이전 세션 및 handoff가 S1~S7 레이블을 참조하므로 매핑을 유지한다.

구 레이블 새 워크스트림 교정 사항
S1 RBAC W1(관리자/부관리자/권한토글) + W2-2(심사위원 역할) + W4(리뷰어/기술자 배지, 오분류 교정) 리뷰어·기술자는 RBAC 아닌 배지/평판으로 재분류
S2 게임잼 엔티티 W2-1 변동 없음
S3 태그+검색 W3-1 목적 재확인: 일반 발견성 중심, 잼은 소비자
S4D 평가 통합설계 W2-3 범위 축소: 잼 평가(심사/투표/시상) 스키마만 동결. 댓글/리뷰 스키마는 W3-2에서 별도 설계
S4a 댓글/리뷰 분리 W3-2 일반기능으로 재분류: 잼 평가 동결묶음에서 분리. 시상은 단방향 집계만
S4b 심사위원 평가 W2-4 변동 없음
S4c 인기투표 W2-5 변동 없음
S4d 시상 집계 W2-6 변동 없음
S5 포스팅 보드 W3-3 별도 메뉴 명확화: 메인 통합 아님
S6 메인페이지 W3-4 교정: 포스팅 통합 아님. 게임+잼 출품작 허브만
S7 Unity 업로드 W3-5 목적 재확인: 일반 인프라, 잼 의존 아님. deferred 유지
(누락) W4 유저 배지/평판 신규 발굴 워크스트림

150635 대비 핵심 교정 5건

  1. 댓글/리뷰(구 S4a) = 일반기능 → 잼 평가 동결묶음에서 분리. 시상(W2-6)은 리뷰 평점을 단방향으로 집계할 뿐이며, 댓글/리뷰 자체는 잼과 무관하게 독립 진행 가능.

  2. 포스팅(구 S5) = 별도 메뉴 → 메인(구 S6) 통합 아님. 메인은 게임+잼 출품작 허브이고, 포스팅은 별도 메뉴로 운영.

  3. 태그검색(구 S3)·Unity업로드(구 S7) = 사이트 일반 인프라 → 잼은 소비자 중 하나일 뿐, 이 기능들이 게임잼을 위해 존재하는 것이 아님.

  4. 유저 배지/평판(W4) = 누락됐던 신규 워크스트림 → 리뷰어·기술자가 S1 RBAC "인증유저 플래그"로 오분류됐던 것을 별도 도메인(평판/배지)으로 발굴·분리.

  5. 잼 평가 통합설계(구 S4D) 동결 범위 축소 → 잼 평가(심사/투표/시상) 스키마만 동결 대상. 댓글/리뷰 스키마는 W3-2에서 별도 설계하며 동결 묶음 아님.