Helana Log
How Helena Lives · Docs

원고 규격 — mynote11605 돌봄 데몬 채널 (SPEC v1)

2026-08-15 · Step 0 산출. 이 문서가 10편 전부의 **단일 규격 원천(SSOT)**이다.

source · docs/care-daemon/_templates/SPEC.md · bridge docs↔web · _Grok

2026-08-15 · Step 0 산출. 이 문서가 10편 전부의 단일 규격 원천(SSOT)이다.
템플릿(00-*.md)은 이 규격의 빈 서식, manuscript_gate.py는 이 규격의 기계 검사다.
세 문서가 모순되면 이 문서가 우선한다.


1. 편(episode)의 정의

2. 원고 위치 & 파일명 규약

helana_log/docs/care-daemon/
├── _templates/              # SPEC.md + 템플릿 4종 (여기)
├── manifesto/01-*.md        # 01 매니페스토
├── track/02-*.md ...        # 02~04 트랙 (DW·DC·BL)
├── dialogue/05-*.md         # 05 대화록
└── solution/06-*.md ...     # 06~10 솔루션 (아키텍처·배터리·위치·원격·무전기)

3. Frontmatter (필수·기계 검사 대상)

원고 최상단, --- 로 감싼 YAML. 모든 필드는 문자열로 쓰되 category_id·interactive는 아래 형식을 따른다.

---
id: "06"                        # 편 번호 01~10 (두 자리)
type: solution                  # manifesto | track | dialogue | solution
title: "돌봄 데몬 아키텍처 — 15분마다 도는 심장"
question: "돌봄 데몬은 어떤 구조로 돌아가는가"       # 이 편의 유일한 질문
answer: "crontab 15분 주기로 수집→분석→보고 3단을 도는 무상태 루프"  # 한 문장 답
category: "솔루션 — 돌봄 데몬"     # 티스토리 카테고리 전체 이름 (트리와 일치)
category_id: 1307308             # 티스토리 카테고리 id (아래 표 참조, 정수)
track: ""                       # track·dialogue 전용: DW | DC | BL | CROSS (그 외 빈 문자열)
sources:                        # 실물 원천 (품질기준 #2). "레포:경로" 목록.
  - helena_phone:care/care-daemon.sh
  - helena_phone:care/care.conf
interactive:                    # 이 편에서 쓰는 care 블록 id 목록 (없으면 빈 목록)
  - flow-daemon-arch
date: "2026-08-15"
민감정보: "없음"                 # "없음" | "가명 처리함" | 그 외 명시
---

category_id 고정 맵 (카테고리 트리 실측값, 2026-08-15)

카테고리 id
01 매니페스토 — 기술로 돌보는 법 1307301
02 DW — 장애·정신건강 복지 1307305
03 DC — 치매·노인 돌봄 1307306
04 BL — 기초생활 보장 1307307
05 대화록 — 하루 스토리 1307303
06 아키텍처 1307308
07 배터리·온도 1307309
08 위치·GPS 1307310
09 원격 돌봄망 1307311
10 보고 무전기 1307312

4. 본문 섹션 구조 (타입별)

4-1. manifesto (01)

## 1. 선언## 2. 왜 "데몬"인가## 3. 10편 지도 (아래 지도 표) → ## 4. 읽는 법

4-2. track (02~04)

## 1. 가정 맥락## 2. 자주 비는 틈## 3. 개선 방향## 4. 확인 창구

확인 창구(필수): “어디서·언제·누구에게 확인하라”는 3줄. 법령·의료를 단정하지 않는다.

4-3. dialogue (05)

## 1. 상황 (Fact)## 2. 느낀 것 (Feel)## 3. 빈틈 (Gap)## 4. 솔루션 (Fix)## 5. 다음 (Next)

METHOD.md의 Scene/Feel/Way/Next 계승. 단, 발행본은 Gap/Fix 를 명시해 “돌봄 데몬과의 연결”을 드러낸다.

4-4. solution (06~10)

## 1. 질문## 2. 원리## 3. 실물 (코드·설정)## 4. 임계값## 5. 한계·확인 창구

## 3. 실물실제 스크립트 값을 인용(care/care-daemon.sh 등). 추상 설명 금지.

5. 케어 블록 — 인터랙티브·인포그래픽 선언 규약

인포그래픽/인터랙티브는 본문 안에 fenced code block 으로 선언한다. info-string = care, 속성 = type·id, 본문 = YAML 페이로드.

```care type="threshold-table" id="battery-thresholds"
title: 배터리·온도 임계값
rows:
  - { label: "배터리 저전압", threshold: "15%", action: "즉시 🔴 경고", level: urgent }
  - { label: "배터리 급감", threshold: "30% / 60분", action: "이상 보고", level: warning }
  - { label: "온도 과열", threshold: "45°C", action: "과열 경고", level: warning }
```

렌더 계약 (페어)

대상 렌더
GitHub Pages 블록을 풀 인터랙티브 JS/CSS/SVG 로 렌더 (외부 CDN 금지, 자체 내장)
티스토리 블록을 정적 HTML/CSS(표·타임라인·체크리스트) 로 렌더; demo는 코드+설명만

티스토리 본문도 HTML 모드를 허용하지만, JS 데모는 Pages 전용으로 간주한다.
티스토리엔 정적 인포그래픽(표/타임라인/체크리스트/콜아웃)만 실어 두 판본이 같은 정보를 담는다.

v1 블록 레지스트리 (7종)

type 페이로드 필수 키 용도
callout level, text 강조 박스 (info/warn/check/danger)
threshold-table rows[{label,threshold,action,level}] 임계값 표 (배터리·온도·GPS)
bar-chart bars[{label,value}] 수평 막대 (급감 시각화)
timeline events[{time,label,note?}] 하루/모듈 타임라인 (DC·대화록)
flow nodes[{id,label,kind?}], edges[{from,to,label?}] 아키텍처 흐름도 (06·09)
checklist items[] 체크리스트 (트랙 갱신·안전 체크)
demo desc, code JS 데모 (배터리 시뮬레이터 등, Pages 전용)

6. 품질 게이트 5규칙 → 기계 검사 매핑

# 품질 기준 게이트 검사
1 한 편 = 하나의 질문 + 하나의 답 question·answer 존재, answer 한 문장(마침표 ≤1)
2 실물 원천 인용 sources 비어있지 않음 + 각 경로 파일 존재
3 비단정 표현 “확인 창구” 섹션 존재 + 단정 마커 휴리스틱(WARN)
4 민감정보 차단 민감정보 필드 + 본문 패턴 스캔(주민번호·계좌·전화·토큰·GPS 실좌표)
5 페어 동기화 원고 1개 → 두 렌더 대상이 같은 원고에서 파생(발행 단계에서 검증)

게이트 통과 규칙: FAIL(구조·사실·민감정보) = 발행 차단. WARN(스타일 휴리스틱) = 통과 가능, 기록.

7. 품질 기준 (사람이 지킬 것)

  1. 실물 인용 — 임계값(15%·45°C·500m 등)은 스크립트 실제 값을 쓴다. 근사 금지.
  2. 비단정 — 법령·의료는 “확인 창구 / 확인일”로 돌린다.
  3. 민감정보 차단 — 실 GPS·정확한 주소·진료 원문·토큰 절대 금지 (헌법: 돌봄 데이터 공개 금지).
  4. Blame보다 Way — 사람 탓이 아니라 살아낸 방식.
  5. 밀도 — 양보다 밀도. 한 편에 쏟는 것이 아니라 한 질문을 정확히.

기계 검사 실행: python3 scripts/manuscript_gate.py <원고경로> (helena_phone 루트에서).