Part A (연대기 ↔ 내러티브 태그 개념 분리) — 문서 6개 반영

시스템 기획서: 내러티브 태그 항목에서 연대기 서술 제거, 연대기를 독립 항목으로 신설
스토리 바이블: "연대기의 편찬" 테마를 '결정 장부' 관점으로 재서술
텍스트 와이어프레임: 팝업을 '세계의 상흔'(태그) / '연대기'(결재 이력) 2종으로 분리, 엔딩 화면에 연대기 요약 블록 추가
비전 문서 / PRD / 유저플로우 / 개발순서: 각각 정의 분리 및 분리 저장 명시
Part B (스니펫 시스템) — B-4 결정사항(은근한 헌신 농도, 고정 마침 도장 리스트) 반영

narrative_tags.json 10종 전체에 snippet(1문장, 숫자 1개, 거리감 있는 관료체) + snippet_type 필드 추가 — 시스템형 7 : 사람형 3 비율. update_csv_tags.js는 이 파일을 생성/가공하지 않아 스크립트 변경 불필요했습니다.
빌드(vite build) 정상 확인.
This commit is contained in:
kyoung5seo
2026-07-13 21:22:42 +09:00
parent cdee98ffc2
commit 31558edcb2
10 changed files with 202 additions and 22 deletions

View File

@@ -78,6 +78,15 @@ Phase 5 [ ] 비주얼 폴리싱 & UX ← 그레이박스 테스트 완
선별된 카드의 좌/우 선택지에서만 얻는다. 페이즈 전환 문턱은 "고유 태그 3종/6종 획득". 자세한 선별된 카드의 좌/우 선택지에서만 얻는다. 페이즈 전환 문턱은 "고유 태그 3종/6종 획득". 자세한
내용은 `ROADMAP.md` Phase 4 참고. 내용은 `ROADMAP.md` Phase 4 참고.
**2026-07-13 내러티브 태그 재설계 (작업지시서 반영):** `docs/내러티브태그_시스템_작업지시서.md` 기준으로
① 연대기(Chronicle, 결재 결정 이력)와 내러티브 태그(세계의 상흔, 결과)를 개념적으로 분리 —
기획서/스토리 바이블/와이어프레임/비전/PRD/유저플로우/개발순서 문서 반영 완료. ② `narrative_tags.json`
10종에 `snippet`(1~2문장 결과 보고서, 거리감 있는 관료체) · `snippet_type`("system" 7종 / "human" 3종)
필드 추가 — 초안이므로 디자이너 검토 필요.
**남은 작업:** 현재 코드(`ChroniclePopup.jsx`, `GameScreen.jsx`)는 아직 태그 히스토리와 연대기(카드·선택 이력)를
하나의 팝업에서 함께 보여준다. 문서가 요구하는 "세계의 상흔 팝업 vs 연대기 팝업" 2종 분리 UI 구현은
아직 미착수 — 별도 작업으로 진행 필요.
**⚠️ 2026-07-09 병렬 브랜치 병합:** 이 폴더가 유일한 작업 사본이 아니라면, 작업 시작 전 **⚠️ 2026-07-09 병렬 브랜치 병합:** 이 폴더가 유일한 작업 사본이 아니라면, 작업 시작 전
`git fetch``git log origin/main..HEAD``git log HEAD..origin/main`으로 분기 여부를 `git fetch``git log origin/main..HEAD``git log HEAD..origin/main`으로 분기 여부를
반드시 확인할 것. 과거에 다른 세션이 origin에 푸시한 커밋을 이 로컬이 받지 못한 채 Phase 2~4를 반드시 확인할 것. 과거에 다른 세션이 origin에 푸시한 커밋을 이 로컬이 받지 못한 채 Phase 2~4를

View File

@@ -3,60 +3,80 @@
"id": "tag_ruthless", "id": "tag_ruthless",
"name": "피도 눈물도 없는 진압", "name": "피도 눈물도 없는 진압",
"icon": "🩸", "icon": "🩸",
"description": "반발을 무력으로 짓밟았습니다. 공포는 훌륭한 통제 수단입니다." "description": "반발을 무력으로 짓밟았습니다. 공포는 훌륭한 통제 수단입니다.",
"snippet": "진압 대응 인력 214명 투입. 민간인 부상 신고는 '작전 지연 방지' 사유로 접수 목록에서 삭제 처리됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_coverup", "id": "tag_coverup",
"name": "진실의 장막", "name": "진실의 장막",
"icon": "🤫", "icon": "🤫",
"description": "대중이 알지 못하도록 변칙 사건을 완벽하게 은폐했습니다." "description": "대중이 알지 못하도록 변칙 사건을 완벽하게 은폐했습니다.",
"snippet": "변칙 목격 신고 63건, 언론 자문위 검토 후 '기상 이상 현상'으로 통합 발표 승인됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_alien_contact", "id": "tag_alien_contact",
"name": "금지된 지식", "name": "금지된 지식",
"icon": "👁️", "icon": "👁️",
"description": "이계의 존재와 거래하거나 그들의 유물을 받아들였습니다. 장막 너머의 눈이 당신을 주시합니다." "description": "이계의 존재와 거래하거나 그들의 유물을 받아들였습니다. 장막 너머의 눈이 당신을 주시합니다.",
"snippet": "압수된 이계 유물 1점, 등급 미분류 상태로 특수연구소 이관됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_corruption", "id": "tag_corruption",
"name": "검은 뒷돈", "name": "검은 뒷돈",
"icon": "💼", "icon": "💼",
"description": "공적인 자산을 사적으로 유용하거나 부당한 거래를 승인했습니다." "description": "공적인 자산을 사적으로 유용하거나 부당한 거래를 승인했습니다.",
"snippet": "결산 불일치 340만 원, 담당 경리 개인 계좌 이체로 충당된 정황 확인. 사유 불문 처리됨.",
"snippet_type": "human"
}, },
{ {
"id": "tag_madness", "id": "tag_madness",
"name": "이성의 붕괴", "name": "이성의 붕괴",
"icon": "🌀", "icon": "🌀",
"description": "요원들을 비인도적인 실험과 광기에 노출시켰습니다. 인간성은 점점 희미해집니다." "description": "요원들을 비인도적인 실험과 광기에 노출시켰습니다. 인간성은 점점 희미해집니다.",
"snippet": "실험 참여 요원, 심리 평가 미제출 24개월째로 현장 배치 유지 확인. 재평가 요청 반려됨.",
"snippet_type": "human"
}, },
{ {
"id": "tag_cult", "id": "tag_cult",
"name": "사이비의 그림자", "name": "사이비의 그림자",
"icon": "🌑", "icon": "🌑",
"description": "고대 신을 숭배하는 종교와 엮이기 시작했습니다. 그들의 교리가 스며듭니다." "description": "고대 신을 숭배하는 종교와 엮이기 시작했습니다. 그들의 교리가 스며듭니다.",
"snippet": "신흥 종교단체 신도 수 3,400명 규모로 집계. 포교 활동 규제 안건은 종교자유 조항 검토 사유로 반려됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_coup", "id": "tag_coup",
"name": "쿠데타의 그림자", "name": "쿠데타의 그림자",
"icon": "🗡️", "icon": "🗡️",
"description": "권력자들이 등을 돌리기 시작했습니다. 칼끝이 서서히 당신을 향하고 있습니다." "description": "권력자들이 등을 돌리기 시작했습니다. 칼끝이 서서히 당신을 향하고 있습니다.",
"snippet": "국장 신임 재투표 요구 서명 9명분 접수. 인사위원회 소집 안건은 '정족수 미달'로 미반영됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_panic_mob", "id": "tag_panic_mob",
"name": "군중의 광기", "name": "군중의 광기",
"icon": "😱", "icon": "😱",
"description": "이성을 잃은 대중이 거리를 뒤덮었습니다. 더 이상 통제할 수 없습니다." "description": "이성을 잃은 대중이 거리를 뒤덮었습니다. 더 이상 통제할 수 없습니다.",
"snippet": "자경단 관련 신고 118건, 담당 부서 인력 부족을 사유로 전건 내부 종결됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_political_pressure", "id": "tag_political_pressure",
"name": "정치적 압박", "name": "정치적 압박",
"icon": "⚖️", "icon": "⚖️",
"description": "이사회가 당신의 자리를 노리고 있습니다. 숫자 하나하나가 무기가 됩니다." "description": "이사회가 당신의 자리를 노리고 있습니다. 숫자 하나하나가 무기가 됩니다.",
"snippet": "이사회 특별 감사 요청 안건 5건 상정. 국장 관련 항목은 '자료 미비'로 반려됨.",
"snippet_type": "system"
}, },
{ {
"id": "tag_sacrifice", "id": "tag_sacrifice",
"name": "희생의 대가", "name": "희생의 대가",
"icon": "⚰️", "icon": "⚰️",
"description": "누군가의 목숨과 맞바꾼 결정이었습니다. 그 무게는 사라지지 않습니다." "description": "누군가의 목숨과 맞바꾼 결정이었습니다. 그 무게는 사라지지 않습니다.",
"snippet": "현장 요원 1명, 격리 프로토콜을 위반해 통로를 개방한 뒤 실종 처리됨.",
"snippet_type": "human"
} }
] ]

View File

@@ -84,8 +84,6 @@
- 우: 위험 단계 (엔트로피, 내부 저항, 위험 수용 계수) 상승 - 우: 위험 단계 (엔트로피, 내부 저항, 위험 수용 계수) 상승
- 공통 획득 - 공통 획득
- 내러티브 태그: 스토리 전달 + 엔딩 조건 중 하나 - 내러티브 태그: 스토리 전달 + 엔딩 조건 중 하나
- 연대기 시스템 (Chronicle)
- 누적된 내러티브 태그를 터치하면, 플레이어가 지금까지 세상을 어떻게 망치고 구해왔는지 연대기 형태의 히스토리/텍스트로 확인 가능. (플레이어의 목적의식과 내러티브 몰입도 강화)
- 성향 태그: 파벌과의 우호도 변화 - 성향 태그: 파벌과의 우호도 변화
- 덱 오염 (토큰을 마이너스) - 덱 오염 (토큰을 마이너스)
- 그림자 의회가 끝날때 마다 엔트로피 단계(1~5단계)에 따라 '신화 카드' 추가 - 그림자 의회가 끝날때 마다 엔트로피 단계(1~5단계)에 따라 '신화 카드' 추가
@@ -174,6 +172,9 @@
- 태그 0~3개: 페이즈1 (사태 파악 및 은폐의 시작) - 태그 0~3개: 페이즈1 (사태 파악 및 은폐의 시작)
- 태그 4~7개: 페이즈2 (프로젝트 가동 및 이사회의 개입 본격화) - 태그 4~7개: 페이즈2 (프로젝트 가동 및 이사회의 개입 본격화)
- 태그 8개 이상: 페이즈3 (통제 불능의 사태 및 종말의 카운트다운) - 태그 8개 이상: 페이즈3 (통제 불능의 사태 및 종말의 카운트다운)
- 연대기 (Chronicle)
- 국장이 결재한 카드와 그에 대한 선택(좌/우/위)을 시간순으로 기록하는 결정 장부. 내러티브 태그가 '세계의 결과'라면, 연대기는 '국장의 원인 이력'이다.
- 내러티브 태그(세계의 상흔)와는 별도의 데이터·별도의 진입점(로그 버튼)으로 관리한다.
## 라운드 플로우차트 (Round Flowchart) ## 라운드 플로우차트 (Round Flowchart)

View File

@@ -19,7 +19,7 @@ UN 상임이사국과 글로벌 메가코프들이 비밀리에 설립한 초법
**모래성 무너뜨리기 (The Sandcastle)** **모래성 무너뜨리기 (The Sandcastle)**
국장은 재력, 무력, 감시라는 영구 자원 태그를 모아 거대한 통제 엔진을 구축합니다. 하지만 세계의 엔트로피가 차오를수록, 이사회의 표적 규약과 쏟아지는 뉴스 속보가 당신이 공들여 쌓은 방어벽을 잔인하게 허물어뜨립니다. 국장은 재력, 무력, 감시라는 영구 자원 태그를 모아 거대한 통제 엔진을 구축합니다. 하지만 세계의 엔트로피가 차오를수록, 이사회의 표적 규약과 쏟아지는 뉴스 속보가 당신이 공들여 쌓은 방어벽을 잔인하게 허물어뜨립니다.
**연대기의 편찬 (The Chronicle)** **연대기의 편찬 (The Chronicle)**
국장은 끝없이 반복되는 루프 속에서 단편적인 무작위 내러티브 태그들을 마주합니다. 국장은 이 혼란스러운 단서들을 수집(Collect)하고, 얽혀있는 파벌 간의 인과를 조직화(Organize)하며, 멸망의 진정한 원인을 추출(Distill)하여 최종 결재라는 형태로 세계에 표현(Express)해 나갑니다. 이 지독한 과정은 플레이어의 목적의식을 강화하는 한 편의 텍스트 연대기(Chronicle)로 기록됩니다. 국장의 모든 결재는 되돌릴 수 없는 기록으로 남습니다. 세계의 상흔(내러티브 태그)이 '무엇이 벌어졌는가'를 말한다면, 연대기는 '누가 그렇게 결정했는가'를 말합니다. 플레이어는 회차가 끝난 뒤 이 장부를 되짚으며, 멸망이 사고가 아니라 자신의 서명들이 쌓인 결과였음을 마주합니다.
## 3. 메인 시나리오: 종말의 3단계 페이징 (Story Paging) ## 3. 메인 시나리오: 종말의 3단계 페이징 (Story Paging)
시나리오는 획득한 [내러티브 태그]의 누적 개수에 따라 기구의 토큰 경제가 파탄 나는 3가지 페이즈로 진행됩니다. 시나리오는 획득한 [내러티브 태그]의 누적 개수에 따라 기구의 토큰 경제가 파탄 나는 3가지 페이즈로 진행됩니다.
### 페이즈 1: 사태 파악 및 은폐의 시작 (태그 0~3개) ### 페이즈 1: 사태 파악 및 은폐의 시작 (태그 0~3개)

View File

@@ -65,7 +65,9 @@
- **페이즈 3 (태그 8개 이상)**: 종말 카운트다운. 극한의 오염 카드와 뉴스 속보가 쏟아지는 자원 고갈의 생존 구간. - **페이즈 3 (태그 8개 이상)**: 종말 카운트다운. 극한의 오염 카드와 뉴스 속보가 쏟아지는 자원 고갈의 생존 구간.
## 5. 최종 목표: 멀티 엔딩 매트릭스 도감 ## 5. 최종 목표: 멀티 엔딩 매트릭스 도감
다양한 엔딩을 수집하여 [연대기 시스템]을 통해 플레이어의 히스토리를 시각화합니다. 다양한 엔딩을 수집하여 도감에 기록합니다. 회차의 여정은 두 축으로 분리되어 기록됩니다.
- **연대기(Chronicle)**: 국장이 결재한 카드와 좌/우/위 선택을 시간순으로 기록한 결정 이력.
- **내러티브 태그**: 그 결재의 결과로 세계에 남은 상흔이자 엔딩 조건. 연대기와는 별개로 관리·저장됩니다.
- **수집해야 할 엔딩 카테고리**: - **수집해야 할 엔딩 카테고리**:
- 기본 4대 붕괴 엔딩 (사임, 멸망, 문명 붕괴, 탄핵) - 기본 4대 붕괴 엔딩 (사임, 멸망, 문명 붕괴, 탄핵)

View File

@@ -46,7 +46,7 @@
- **작업 항목**: - **작업 항목**:
- **엔딩 분기 시스템**: 파라미터 5단계 도달 시, 현재 보유한 토큰/자원 태그를 검사하여 기본 붕괴 엔딩 또는 변주된 엔딩으로 분기시키는 판별기 구현. - **엔딩 분기 시스템**: 파라미터 5단계 도달 시, 현재 보유한 토큰/자원 태그를 검사하여 기본 붕괴 엔딩 또는 변주된 엔딩으로 분기시키는 판별기 구현.
- **특수 엔딩 트리거**: 극단적 파라미터, 내러티브 연쇄, 의회 정치 조건 달성 시 발동하는 조기 엔딩 이벤트 구현. - **특수 엔딩 트리거**: 극단적 파라미터, 내러티브 연쇄, 의회 정치 조건 달성 시 발동하는 조기 엔딩 이벤트 구현.
- **도감 및 연대기(Chronicle)**: 해금된 엔딩을 저장하는 도감 UI 구현 및 이번 회차에서 획득한 내러티브 태그를 히스토리 텍스트로 나열해 주는 연대기 기능 구현. - **도감 및 연대기(Chronicle)**: 해금된 엔딩을 저장하는 도감 UI 구현. 연대기 기능(결재 카드·선택 이력 로그)과 내러티브 태그 뷰('세계의 상흔', 태그 키워드+스니펫 히스토리)를 별도의 UI/팝업으로 분리 구현.
## Phase 5: 비주얼 폴리싱 및 다이제틱 UX ## Phase 5: 비주얼 폴리싱 및 다이제틱 UX
핵심 로직이 모두 검증된 후, 기획 단계에서 논의된 추상적이고 몰입감 있는 피드백을 적용합니다. 핵심 로직이 모두 검증된 후, 기획 단계에서 논의된 추상적이고 몰입감 있는 피드백을 적용합니다.

View File

@@ -34,7 +34,7 @@
- **영구 자원 태그 (1코스트 할인 효과)**: 재력/자본 태그(건물), 무력/조직 태그(방패), 감시/언론 태그(눈동자). - **영구 자원 태그 (1코스트 할인 효과)**: 재력/자본 태그(건물), 무력/조직 태그(방패), 감시/언론 태그(눈동자).
### C. 엔딩 도감 및 연대기 (Chronicle) ### C. 엔딩 도감 및 연대기 (Chronicle)
- **연대기 시스템**: 누적된 내러티브 태그를 통해 플레이어가 세상을 어떻게 망치고 구해왔는지 히스토리를 확인하여 몰입도를 강화합니다. - **연대기 시스템**: 국장이 결재한 카드와 좌/우/위 선택을 시간순으로 기록한 결정 장부입니다. 세계가 어떻게 되었는가(세계의 상흔)는 내러티브 태그가 별도로 담당하며, 연대기는 '누가 그렇게 결정했는가'라는 원인 축을 기록해 몰입도를 강화합니다.
- **멀티 엔딩 매트릭스**: 기본 붕괴 엔딩 외에도 특정 자원/토큰과 결합된 변주 엔딩, 극단적 파라미터 조기 엔딩, 내러티브 연쇄 엔딩, 의회 정치 엔딩 등 수십 가지의 결과를 수집해야 합니다. - **멀티 엔딩 매트릭스**: 기본 붕괴 엔딩 외에도 특정 자원/토큰과 결합된 변주 엔딩, 극단적 파라미터 조기 엔딩, 내러티브 연쇄 엔딩, 의회 정치 엔딩 등 수십 가지의 결과를 수집해야 합니다.

View File

@@ -82,5 +82,5 @@
- 조건에 부합하는 가장 높은 우선순위의 텍스트와 연출 출력. - 조건에 부합하는 가장 높은 우선순위의 텍스트와 연출 출력.
4. **도감 동기화** 4. **도감 동기화**
- 출력된 엔딩을 계정 도감 데이터에 '해금(Unlocked)' 처리. - 출력된 엔딩을 계정 도감 데이터에 '해금(Unlocked)' 처리.
- 이번 회차의 연대기 히스토리 보관. - 이번 회차의 [연대기](결재 결정 이력)와 [내러티브 태그](세계 상흔) 목록을 각각 분리 저장.

View File

@@ -47,16 +47,26 @@
- `[🩸 내부 감사] (인력 소모 / 기권 유도)` - `[🩸 내부 감사] (인력 소모 / 기권 유도)`
## 3. 오버레이 및 팝업 (Overlays & Popups) ## 3. 오버레이 및 팝업 (Overlays & Popups)
### 3.1. 연대기 시스템 (Chronicle Popup) ### 3.1. 세계의 상흔 팝업 (World's Scars Popup)
메인 화면 좌상단의 내러티브 태그 터치 시 노출. 메인 화면 좌상단의 `[📖 4/8]` 카운터 터치 시 노출.
- **타이틀**: 국장의 연대기 - **타이틀**: 세계의 상흔
- **본문**: 획득한 [내러티브 태그]의 스토리가 시간순으로 나열된 텍스트 목록 (세상을 망치고 구한 히스토리). - **본문**: 획득한 [내러티브 태그]의 키워드와 스니펫이 시간순으로 나열된 텍스트 목록 (세상이 어떻게 망가졌는가).
### 3.2. 엔딩 결산 화면 (Ending Result Screen) ### 3.2. 연대기 팝업 (Chronicle Popup, 신규)
메인 화면의 별도 로그 버튼 터치 시 노출. '세계의 상흔' 팝업과는 별개의 진입점·별개의 데이터.
- **타이틀**: 국장의 연대기
- **본문**: 국장이 결재한 카드와 좌/우/위 선택 이력이 시간순으로 나열된 결정 장부.
```
[일상] 오염된 장부 승인
└ 좌(예산+): 유가족 위로금은 예비비 충당
```
### 3.3. 엔딩 결산 화면 (Ending Result Screen)
붕괴 조건 도달 시 출력되는 화면. 붕괴 조건 도달 시 출력되는 화면.
- **타이틀**: `[수집한 엔딩 이름]` (예: 사임, 세계 멸망, 문명 붕괴, 정치적 탄핵 등). - **타이틀**: `[수집한 엔딩 이름]` (예: 사임, 세계 멸망, 문명 붕괴, 정치적 탄핵 등).
- **결과 텍스트**: 해당 엔딩에 대한 상세 서사. - **결과 텍스트**: 해당 엔딩에 대한 상세 서사.
- **원인 요약**: 현재 붕괴 게이지, 특정 자원 태그, 토큰 보유 상황 등 엔딩 발동 조건 표기. - **원인 요약**: 현재 붕괴 게이지, 특정 자원 태그, 토큰 보유 상황 등 엔딩 발동 조건 표기.
- **이번 회차 연대기**: 회차 중 결재한 카드와 선택 이력을 요약한 '결정 요약' 블록.
- **액션**: `[도감에 기록하기 & 다음 회차 시작]` 버튼. - **액션**: `[도감에 기록하기 & 다음 회차 시작]` 버튼.

View File

@@ -0,0 +1,138 @@
# 내러티브 태그 시스템 작업 지시서
> **범위:** (A) 연대기 ↔ 내러티브 태그 개념 분리 + (B) 내러티브 태그 스니펫 시스템 도입.
>
> **작업 환경:** Claude Code 세션에서 각 파일을 열어 해당 섹션을 대조 후 반영. 아래 문구는 리포 실제 텍스트와 100% 일치하지 않을 수 있으므로 의미 기준으로 수정할 것.
>
> **주의:** `narrative_tags.json` 콘텐츠(스니펫 등)는 자유롭게 초안·반영 가능. 단 `update_csv_tags.js` 등 **보호된 스크립트** 수정이 필요해지면 임의 실행 금지 — 근거 설명 → diff 확인 → 승인 절차를 따를 것.
---
# PART A. 연대기 ↔ 내러티브 태그 분리
## A-0. 개념 정의 (기준선)
| 구분 | 내러티브 태그 (Narrative Tag) | 연대기 (Chronicle) |
|---|---|---|
| 본질 | **결과** — 세계가 어떻게 되었는가 | **원인** — 내가 무엇을 어떻게 결재했는가 |
| 성격 | 명사 · 세계의 상흔 | 동사 · 국장의 결정 로그 |
| 구성 | 키워드 + 스니펫 + 엔딩 조건 + 페이즈 축 | 등장한 결재 카드 + 플레이어 선택(좌/우/위) 이력 (시간순) |
| 진입점 | 좌상단 `[📖 4/8]` 카운터 → '세계의 상흔' 팝업 | 별도 로그 버튼 + 엔딩 화면 '이번 회차 결정 요약' |
**한 줄 기억표:** 태그는 스토리의 '무엇', 연대기는 '어떻게'.
**스니펫은 태그 쪽에 귀속된다** (태그의 살). 연대기와는 무관.
## A-1. 시스템 기획서 — `Project SS 서사형 덱빌딩 게임 시스템 기획서.md`
1. 내러티브 태그 항목에서 연대기 서술을 **제거**. 태그 항목엔 스토리 전달(스니펫) + 엔딩 조건 + 페이즈 축만 남김.
2. 시스템 목록에 **독립 항목** 신설:
> **연대기 (Chronicle):** 국장이 결재한 카드와 그에 대한 선택(좌/우/위)을 시간순으로 기록한 결정 장부. 내러티브 태그가 '세계의 결과'라면, 연대기는 '국장의 원인 이력'이다.
## A-2. 스토리 바이블 — `Project SS 스토리 바이블 v3.0.md`
2장 "연대기의 편찬(The Chronicle)" 테마를 '결정 장부' 관점으로 재서술:
> 국장의 모든 결재는 되돌릴 수 없는 기록으로 남는다. 세계의 상흔(내러티브 태그)이 '무엇이 벌어졌는가'를 말한다면, 연대기는 '누가 그렇게 결정했는가'를 말한다. 플레이어는 회차가 끝난 뒤 이 장부를 되짚으며, 멸망이 사고가 아니라 자신의 서명들이 쌓인 결과였음을 마주한다.
## A-3. 텍스트 와이어프레임 — `ProjectSS 텍스트 와이어프레임.md`
1. **3.1 팝업 2종 분리:**
- '세계의 상흔' 팝업: `[📖 4/8]` 터치. 본문 = 태그 키워드 + 스니펫 시간순.
- '연대기' 팝업(신규): 별도 로그 버튼. 본문 = 결재 카드 + 선택 이력 시간순.
```
[일상] 오염된 장부 승인
└ 좌(예산+): 유가족 위로금은 예비비 충당
```
2. **3.2 엔딩 화면:** '이번 회차 연대기(결정 요약)' 블록 추가.
## A-4~A-7. 나머지 문서 (한두 줄 수정)
- **비전 문서 4-C:** 연대기 = 결재 카드·선택의 시간순 결정 장부. 세계 상태는 태그가 담당(분리).
- **PRD 5장:** 연대기(결재 결정 이력) / 내러티브 태그(엔딩·세계 상태) 각주 분리.
- **유저플로우 4.4:** 연대기와 태그 목록을 **분리 저장**으로 명시.
- **개발순서 Phase 4:** 연대기 기능과 태그 뷰('세계의 상흔')를 별도 UI로 분리 구현 명시.
---
# PART B. 내러티브 태그 스니펫 시스템
> 태그 키워드만으로는 서사 체감이 약함. 각 태그에 1~2문장 결과 보고서 스니펫을 붙여 살을 부여한다. 그레이박스 원칙 안에서 순수 텍스트로 검증 가능.
## B-1. 스타일 가이드 (확정)
**톤 3원칙**
1. **거리 유지** — 감정 형용사·판단·괴수 외형 묘사 금지. 오직 기록·숫자·행정 용어.
2. **숫자 하나** — 스니펫마다 구체 숫자 정확히 1개(예: 14명, 47건, 15%). 냉혹한 비용편익의 앵커.
3. **인정 유예** — 스니펫은 위로·의미 부여를 하지 않는다. 인정(감동)은 엔딩/연대기 회고의 몫으로 미룬다.
**포맷 골격**
`사실 진술 → 행정적 뒤틀림 → [처리 상태]로 종결`
- **마침 도장(각인층):** 모든 스니펫은 결재 상태어로 끝난다(처리됨 / 승인됨 / 종결됨 / 이관됨 / 반려됨 / 미반영됨 등). 이 게임만의 문장 지문.
**유형 2종 — 비율 약 7:3**
- **시스템형(70%):** 시스템의 부조리가 주인공.
- **사람형(30%):** 익명의 개인이 데이터 이상치로만 존재('숨겨진 헌신'). 엔딩/변주 콜백용.
> **설계 근거(참고 문서에서 이식):** 감동 공식(거리+숨겨진 헌신+인정+의미의 역류) — 거리는 문체로 확보, 헌신은 사람형 스니펫에 매설, 인정은 엔딩에서 역류. 로그라이크 루프가 이 역류를 회차마다 반복시킨다.
## B-2. 스키마 변경 (승인 필요 항목)
각 태그 객체에 두 필드 추가:
```json
{
"id": "quarantine_breach",
"keyword": "격리 붕괴",
"snippet": "격리동 전력 계통에 원인 불명의 수동 복구 기록 1건. 해당 시간대 출입 승인자 없음. 요원 K-771, 실종자 명단으로 이관됨.",
"snippet_type": "human",
"phase": 2
}
```
- `snippet` (string): 태그 스니펫 본문.
- `snippet_type` ("system" | "human"): 콜백 로직용. 엔딩/연대기 회고에서 해당 회차의 human 태그를 골라 "그때 K-771이…" 식 콜백 훅으로 사용.
> `narrative_tags.json` 직접 수정은 가능. 단 이 파일이 `update_csv_tags.js`로 **생성/가공**되는 구조라면 스크립트에 신규 컬럼 반영이 필요하므로, 그 경우 diff 확인 → 승인 후 진행.
## B-3. 샘플 배치 8종 (검토용 기준선)
**시스템형 (5)**
| 태그 | 스니펫 |
|---|---|
| `[실종]` | 7구역 정수장 근무자 14명 미귀가. 근태 시스템상 전원 '정상 퇴근'으로 **처리됨**. |
| `[가스 폭발]` | 언론 브리핑상 '노후 배관 폭발'로 발표. 유가족 위로금 항목은 예비비로 충당, 회계 **승인됨**. |
| `[매수]` | 3분기 감사 중 국장 명의 차명 계좌 3건 인지. 담당 조사관 해외 연수 발령으로 조사 **중단됨**. |
| `[차원 균열]` | 12구역 상공 '접힘 현상', 위성 미검출. 목격 진술 47건 전원 상이. 관측 장비 오류로 **종결됨**. |
| `[마녀사냥]` | '이웃이 변이체' 신고 폭증. 실제 변이 확인 0건, 자경단 폭행 사망 3건. 통계 비공개 **결정됨**. |
**사람형 (3) — 숨겨진 헌신**
| 태그 | 스니펫 |
|---|---|
| `[격리 붕괴]` | 격리동 전력 계통에 원인 불명의 수동 복구 기록 1건. 해당 시간대 출입 승인자 없음. 요원 K-771, 실종자 명단으로 **이관됨**. |
| `[결손 보전]` | 은폐 자금 결손분 340만, 익명 입금으로 충당. 입금자 추적 '불필요' 판정. 계정 **종결됨**. |
| `[초과 근무]` | 작전부 잔업 신청 반려 건수 218건. 반려된 요원 전원 무급으로 현장 잔류 확인. 근태 기록 **미반영됨**. |
## B-4. 확정 대기 (스타일 가이드 완성 전 결정 필요)
- [ ] **사람형 헌신 농도:** ⑥~⑧을 더 은근하게 vs 더 드러나게.
- [ ] **마침 도장 어휘:** 자유 어휘 허용 vs 고정 리스트로 관리(처리됨/승인됨/종결됨/이관됨/반려됨/미반영됨…).
이 둘이 정해지면 스타일 가이드 확정 → 나머지 태그를 다음 배치들로 진행.
---
# 통합 체크리스트
**Part A (개념 분리)**
- [ ] 시스템 기획서: 연대기 독립 항목 승격, 태그 항목 정리
- [ ] 스토리 바이블: "연대기의 편찬" 결정 장부 관점 재서술
- [ ] 와이어프레임: 팝업 2종 분리 + 엔딩 결정 요약 블록
- [ ] 비전/PRD/유저플로우/개발순서: 정의 분리 및 분리 저장/분리 구현 반영
**Part B (스니펫)**
- [ ] 스타일 가이드 확정(B-4 두 항목 결정)
- [ ] `narrative_tags.json` 스키마에 `snippet`, `snippet_type` 추가
- [ ] (해당 시) `update_csv_tags.js` 신규 컬럼 반영 — diff 승인 후
- [ ] 샘플 8종 반영 → 검토 → 나머지 태그 배치 확장
- [ ] 스토리 바이블 톤 앤 매너에 스니펫 3원칙·포맷 규칙 문서화(선택)