Ladder Pick 개발 계획서

Ladder Pick — ChatGPT App 개발 계획#

  • 프로젝트명: ted-mcp-servers
  • 앱 이름(App Directory 표시): Ladder Pick
  • 앱 언어: 영어 우선 (UI / 툴 description / 프라이버시 정책 모두 영어, 계획 문서만 한글)

공식 개발자 문서 참고 링크#

핵심 문서(필독)#

설계 / 디자인#

빌드#

배포 / 테스트 / 제출#

가이드 / 참고#

일반 참고#


목표#

  • ChatGPT App Directory에 등록 가능한 “Ladder Pick” 앱을 만듭니다.
  • 채팅 안에서 인터랙티브 위젯(iframe) 을 통해 참가자 / 항목 입력 → 사다리(랜덤 매칭) 생성 → 결과 공개까지 완료할 수 있게 합니다.
  • ChatGPT Developer Mode로 테스트 후, 최종적으로 App Directory 제출 / 승인 / Publish 를 목표로 합니다.

전제 / 범위#

  • MVP: 인터랙티브 위젯(iframe UI) + MCP 툴 기반. 위젯에서 참가자 / 항목 입력, 결과 표시, 다시 섞기 등 핵심 인터랙션을 제공합니다.
  • 비범위(초기): 로그인 / 결제, 실시간 멀티플레이, 복잡한 애니메이션, 외부 데이터 연동.
  • 인증 불필요: 외부 서비스 연동이 없으므로 OAuth / 인증 플로우 없이 시작합니다.
  • 안전 / 정책: 외부 시스템에 쓰기(write) 동작 없음. 툴의 hint annotation:
    • readOnlyHint: false — 내부 상태를 생성 / 변경하므로 true가 아님
    • destructiveHint: false — 되돌리기 어려운 외부 영향 없음
    • openWorldHint: false — 공개 인터넷 상태 변경 없음

사용자 경험(UX) 시나리오#

기본 흐름(인터랙티브 위젯)#

  1. 사용자가 @Ladder Pick 또는 “play a ladder game"처럼 입력합니다.
  2. ChatGPT가 create_game 툴을 호출하고, Ladder Pick 위젯 이 iframe에 표시됩니다.
  3. 위젯 내에서:
    • Players 리스트: 참가자 이름 추가 / 삭제 (기본 4명)
    • Items 리스트: 결과 항목(상품 / 역할) 추가 / 삭제
    • Options: Reveal mode (All at once / One by one), Seed (auto / custom)
    • “Pick!” 버튼 클릭 → 매칭 결과 생성
  4. 결과 영역:
    • All at once: 전체 매칭 표 즉시 표시
    • One by one: “Reveal Next” 버튼으로 한 명씩 공개
    • “Reshuffle” 버튼: 새 시드로 다시 섞기
    • “Export” 버튼: 결과를 텍스트로 복사

텍스트 폴백#

  • 위젯 없이도 ChatGPT가 툴 호출 결과를 텍스트(표)로 보여줄 수 있습니다.
  • 예: “Ladder Pick, match A,B,C,D with 1st,2nd,3rd,4th” → 텍스트 표 응답

에러 케이스#

  • 참가자 < 2명 → 에러 메시지: “At least 2 players are required.”
  • 항목 개수 ≠ 참가자 수 → 에러 메시지: “Number of items must match number of players. You have {n} players and {m} items.”
  • 항목 비어있음 → 에러 메시지: “Items list cannot be empty.”

기능 요구사항#

입력#

  • 참가자 목록(Players): 2~20명
  • 결과 항목(Items): 참가자 수와 정확히 동일한 개수 (불일치 시 에러 반환)
  • 옵션
    • Reveal mode: all | one-by-one
    • Seed: 자동 생성 또는 사용자 지정(재현 가능성)

출력#

  • 매칭 결과: Player ↔ Item 1:1 매핑
  • 사다리 표현: Canvas 기반 시각적 사다리(수직선 + 가로 발판 + 색깔별 경로 애니메이션) 구현

상태 / 저장#

  • 모듈 레벨 Map<gameId, GameState>으로 프로세스 내 인메모리 관리
  • 게임 생성 시 고유 ID 발급, 이후 reshuffle / reveal_next에서 해당 ID로 조회
  • 영구 저장 없음(서버 재시작 시 초기화됨, 초기에는 이 정도로 충분)

기술 설계#

아키텍처(공식 구조 기반)#

ChatGPT Apps는 아래 두 요소로 구성됩니다:

© 2026 Ted Kim. All Rights Reserved. | 이메일 문의