Skip to content

refactor: SOLID/FP 1차 구조 분리#76

Merged
github-actions[bot] merged 1 commit intomainfrom
codex/solid-fp-phase1
Feb 19, 2026
Merged

refactor: SOLID/FP 1차 구조 분리#76
github-actions[bot] merged 1 commit intomainfrom
codex/solid-fp-phase1

Conversation

@tada-js
Copy link
Owner

@tada-js tada-js commented Feb 19, 2026

변경 사항

  • src/app/create-game-app.ts에서 순수 도메인 로직/결과 상태 전이/도착 시간 추적 로직을 분리해 조립자 역할 중심으로 정리했습니다.
  • 신규 모듈을 추가해 책임을 분리했습니다.
    • src/app/game-flow-selectors.ts: 상태 파생/클램프/문자열 정규화/피니시 템포 계산(순수 함수)
    • src/app/result-presentation.ts: 결과 모달 상태 전이 및 결과 아이템 매핑(순수 함수)
    • src/app/arrival-timing-tracker.ts: 도착 시간 추적 상태 캡슐화
  • 신규 모듈 회귀 방지 테스트를 추가했습니다.
    • tests/game-flow-selectors.test.mjs
    • tests/result-presentation.test.mjs
    • tests/arrival-timing-tracker.test.mjs

검증

  • npm run typecheck
  • npm run lint
  • npm test
  • npm run build:vite
  • npm run security

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 대리석 도착 시간을 정확하게 추적하는 새로운 시스템 추가
    • 게임 상태 관리 및 UI 계산 로직 중앙화
    • 결과 화면 UI 상태와 항목 구성 개선
  • 테스트

    • 도착 시간 추적, 게임 흐름, 결과 표현에 대한 포괄적 테스트 스위트 추가

@vercel
Copy link

vercel bot commented Feb 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
degururu Ready Ready Preview, Comment Feb 19, 2026 3:43pm

@github-actions github-actions bot enabled auto-merge (squash) February 19, 2026 15:43
@coderabbitai
Copy link

coderabbitai bot commented Feb 19, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

요약

새로운 모듈 세 개(도착 시간 추적, 게임 흐름 선택기, 결과 표시)를 도입하고 이들을 활용하도록 create-game-app.ts를 대폭 리팩토링합니다. 마블의 도착 시간 추적, 완료 상태 기반 애니메이션 템포 조정, 결과 UI 상태 관리를 중앙화합니다.

변경 사항

집단 / 파일 요약
도착 시간 추적 및 게임 흐름 로직
src/app/arrival-timing-tracker.ts, src/app/game-flow-selectors.ts
마블의 도착 시간을 추적하고 정규화하는 새 추상화 계층과 상태 기반 게임 흐름 유틸리티(템포 배수, 완료 긴장도, 참가자 수, 상태 톤 파생) 추가.
결과 표시 상태 관리
src/app/result-presentation.ts
결과 UI 상태 및 아이템 구성을 위한 팩토리 함수 및 상태 전이 로직(유휴→회전→단일/요약) 제공.
애플리케이션 부트스트랩 리팩토링
src/app/create-game-app.ts
도착 시간 추적기 및 게임 흐름 선택기 통합, 결과 상태 관리를 ResultPresentationState로 대체, 수동 타이밍 계산을 추상화로 위임.
테스트 추가
tests/arrival-timing-tracker.test.mjs, tests/game-flow-selectors.test.mjs, tests/result-presentation.test.mjs
새 모듈의 공개 API 동작 검증 (타이밍 추정, 상태 전이, 아이템 구성).

시퀀스 다이어그램

sequenceDiagram
    participant Game as 게임 상태
    participant Tracker as 도착 추적기
    participant Tension as 완료 긴장도
    participant Result as 결과 표시
    participant UI as UI 업데이트

    Game->>Tracker: begin(시작시간, 초기시뮬시간)
    Game->>Tension: getFinishTensionSnapshot(마블목록, 월드높이)
    Tension->>Game: {active, remaining, progress}
    Game->>Game: getFinishTempoMultiplier(기본값, snapshot)
    Note over Game: 템포 조정 적용
    
    Game->>Tracker: capture(현재시간, 시뮬시간, 완료된마블목록)
    Tracker->>Tracker: 벽시간/시뮬시간 혼합으로 도착시간 추정
    
    Game->>Result: buildResultStateFromItems(아이템목록, 요청수)
    Result->>Result: resolveResultPhase(아이템) → "single"/"summary"
    Result->>Result: 상태전이: idle → spinning → single
    
    Game->>UI: resultState 업데이트
    UI->>UI: 결과 화면 렌더링
Loading

예상 코드 리뷰 노력

🎯 4 (복잡) | ⏱️ ~45분

관련 가능 PR

✨ Finishing Touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codex/solid-fp-phase1

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot merged commit 4e002da into main Feb 19, 2026
5 of 6 checks passed
@tada-js tada-js deleted the codex/solid-fp-phase1 branch February 21, 2026 20:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant