| 항목 | 내용 |
| 기능 ID | FEAT-PLAY |
| 연결 시스템 | 마스터 시스템④ 놀이(여가·인지) · ⑥ 정서존엄 |
| 한 줄 정의 | 두뇌 게임·콘텐츠·모임으로 인지건강과 사회관계를 유지하고 일상에 재미를 더한다 |
| 관련 액터 | PWA실벗서버 |
설계 철학 — 게임은 "점수 경쟁"이 아니라 "오늘도 머리를 썼다"는 성취감과 "누구와 함께했다"는 관계를 줍니다. 난이도는 자동 적응.
▍설계 7계층 체크리스트
| 계층 | 이 문서의 섹션 |
| ① UI | 놀이 홈 / 게임 플레이 SCR-PLAY-01·02 |
| ② Flow | 게임 선택 → 플레이 → 점수·적응 난이도 |
| ③ Data | games / play_sessions / course_progress |
| ④ API | 게임 목록·세션 시작·결과 제출 |
| ⑤ Seq | 플레이 결과 → 인지점수 추이 시퀀스 |
| ⑥ Comp | 게임 엔진·진척 서비스 구조 |
| ⑦ Test | 검수 체크리스트 |
② Flow · 게임 플레이 흐름
게임 선택→
세션 시작→
플레이→
결과 제출→
난이도 적응·점수 기록
▍적응 난이도(Adaptive)
| 최근 성적 | 다음 난이도 |
| 연속 고득점 | 한 단계 ↑ (지루함 방지) |
| 연속 저득점·중도포기 | 한 단계 ↓ (좌절 방지) |
| 안정적 | 유지 |
③ Data · DB 스키마
MariaDB · UTF8MB4 · InnoDB
CREATE TABLE games (
id INT PRIMARY KEY AUTO_INCREMENT,
game_key VARCHAR(40) UNIQUE, -- 'number','memory','word'
title VARCHAR(60),
category ENUM('brain','arcade','board','content'),
is_active TINYINT DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE play_sessions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
game_id INT NOT NULL,
level TINYINT,
score INT,
completed TINYINT DEFAULT 0,
played_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (game_id) REFERENCES games(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
설계 포인트 — 인지건강 추이는 play_sessions 집계로 산출. 별도 점수 테이블 없이 세션 로그 하나로 충분.
④ API · 엔드포인트 명세
| M | 경로 | 설명 |
| GET | /play/games | 게임 목록 + 오늘의 추천 |
| POST | /play/sessions | 세션 시작(적응 난이도 산정) |
| POST | /play/sessions/{id}/result | 결과 제출(점수·완료) |
| GET | /play/trend | 인지건강 추이 |
POST /api/v1/play/sessions · 200
{ "success":true, "data":{ "session_id":9001, "level":2,
"message":"오늘도 머리 운동 시작해요! 🧠" } }
⑥ Comp · 컴포넌트 / 모듈 구조
프론트엔드 (PWA)
features/play/
├─ PlayHome.js
├─ GameRunner.js # 게임 공통 런너(오프라인)
├─ games/ # 게임별 플레이 모듈
└─ TrendView.js
백엔드 (PHP)
app/
├─ Controllers/PlayController.php
└─ Services/
├─ PlayService.php # 세션·결과
└─ AdaptiveLevel.php # 적응 난이도 산정
| 모듈 | 책임 |
AdaptiveLevel | 최근 성적으로 난이도 자동 조절. 좌절·지루함 방지가 목표(점수 극대화 아님). |
GameRunner | 오프라인 플레이 지원. 결과는 온라인 복귀 시 동기화. |
⑦ Test · 검수 체크리스트
| ID | 시나리오 | 기대 결과 |
| T-01 | 게임 선택 후 플레이 | 세션 시작·결과 기록, 격려 피드백 |
| T-02 | 연속 고득점 | 다음 난이도 한 단계 상승 |
| T-03 | 중도 포기 | 좌절 방지 — 난이도 하향, 부정 피드백 없음 |
| T-04 | 오프라인 플레이 | 로컬 진행, 복귀 시 결과 동기화 |
| T-05 | 주간 추이 조회 | play_sessions 집계로 추이 표시 |
완료 판정 — T-01~T-05 통과 시 FEAT-PLAY 완료. T-03(좌절 방지)·T-04(오프라인)가 어르신 경험의 핵심.
기능설계 ⑦ 완성 — 놀이를 7계층으로 설계했습니다. 즐거움과 인지건강을 함께 챙깁니다.