2026-08-20 · 코드 기준
답글 책상 구조 보고서
답글 책상 · 라미사랑2 (cafe.naver.com/tlswkd)
TanStack Start · React · PGLite/Neon · Better Auth
한 줄
네이버 카페를 긁지 않는다. 근거가 있는 검색어 세 칸을 열고, 붙여 넣은 글만 가려, 자료와 진료 질문 초안을 남긴다. 공감과 경험은 본인이 쓴다. 하루 답은 두 개가 상한이다.
왜 이 모양인가
목적은 자동 댓글이 아니다. 신장 운동·이식 일상·기록에서 지식과 경험을 나눌 글을 찾는 일이다. 카페는 로그인 벽 뒤에 있고, 이용약관상 외부 수집을 하지 않는다. 그래서 감시가 아니라 책상이다. 검색은 사람이 열고, 가림과 초안만 기계가 돕는다.
- 카페 글 목록을 가져오지 않는다
- 아이디·비밀번호를 받지 않는다
- 처방을 쓰지 않는다
- 답을 늘리려고 검색어를 늘리지 않는다
하루의 다섯 칸
1세 칸을 연다
날짜로 고른 검색어 세 개. 카페 로그인된 창에서 찾기 링크를 연다. 미리보기는 팝업을 막으므로 보이는 링크만 쓴다.
2후보만 붙인다
/capture. 제목·본문 붙여넣기, 북마클릿, 또는 공개 URL(허용 호스트만). 글 목록을 수집하지 않는다.
3답할지 본다
triagePost. 답한다 · 거른다 · 경계. 약·식단·병원 추천은 먼저 거른다. 수치 판정은 근거가 있으면 원리만 남기고 값은 닫는다.
4네 조각으로 쓴다
1 공감·2 경험은 직접. 3 자료·4 진료 질문은 초안(그룹 문장, 없으면 Grok). 합쳐서 복사한다.
5수첩에 남긴다
하루 상한 2. 같은 칸을 다시 훑지 않는다. 반복 질문은 repeat_questions에 쌓인다.
화면
책상/
오늘 세 칸, 붙여 넣은 글, 답한다/거른다/경계 필터
붙이기/capture
제목·본문 입력, 즉시 가림, 저장
글/post/:id
네 조각 책상. 1·2 직접, 3·4 초안, 복사, 수첩
수첩/log
남긴 답, 반복 질문
선/guide
네 조각, 금지, 선정 기준, 검색어 목록 77말
한 바퀴/watch
단계 안내, 세 칸 열기, 알림 설정
복막투석 운동/pd
ISPD·GREX 2022 요약. 채택됨. 처방 아님
GREX 교육/grex
2025 코스 8모듈. 환우 프로그램이 아님
들어가기/login
이메일 우선. Google·X는 팝업이 막힐 수 있음
검색어
REPLY_RULES 16칸, 말 77개. 목록에 없는 말은 찾지 않는다. 반려동물 칸은 닫혔다.
- 선정: 자료 있는 말 · 나눌 칸 · 선 밖 제외 · 하루 세 칸
- 회전: day % 규칙수 에서 시작해 간격 5로 세 개. 매일 다른 세 칸
- 주제 순위: 복막(5) > 크레아티닌(4) > 운동(3) > 기록(2) > 일상(1)
- 카페 URL만 만든다. cafe.naver.com/f-e/cafes/10097006/articles?q=
운동
저항, 유산소, 재개, 강도, 이식 부위, 접촉, 거부반응, 단백뇨
복막투석
복막투석, 복막, 복투, 복강, 출구부위
근육량과 수치
크레아티닌, eGFR — 값은 판정하지 않음
이식 후 일상
복직, 여행, 목욕·사우나, 회식
기록
진료 질문, 수첩 칸
가림 순서
- 제목+본문을 한 덩어리로 보고, 규칙 말을 소문자 includes로 찾는다. 형태소 분석 없음
- 답하는 규칙 히트를 모은 뒤 주제 순위가 높은 칸을 고른다
- 거름이 먼저다. 약·식단·병원은 skip. 수치 판정은 soft: 근거 히트가 있으면 reply + ‘값은 판정하지 않는다’
- 약 이름이 스치기만 하고 용량을 묻지 않으면 약을 이유로 거르지 않는다
- 거부반응·단백뇨만 있고 운동 맥락이 없으면 경계
- 히트 없으면 환우 글로 보이면 경계, 아니면 unknown
초안
fallbackDraft가 주제 그룹 문장을 꺼낸다. 운동·크레아티닌·일상·기록·복막 다섯 벌. skip이면 비운다. XAI_API_KEY가 있으면 Grok이 3·4번을 다시 쓸 수 있으나, 1·2번은 절대 쓰지 않는다. composeReply는 네 칸을 빈 칸 없이 이어 붙인다.
근거 레이어
B1ACSM 12판
저항 FITT, 재개 순서, RPE, 거부반응·단백뇨와 운동
B6UKKA Exercise 2021
유산소 150분의 출처, 접촉 운동 2C
B7이식 건강수첩
부위 보호, 일상, 기록지 칸
vault근육량·크레아티닌 정리
계산 원리. 값 판정 금지
ISPDISPD+GREX PDI 2022
복막 찬/빈 배, 수영, 코어, 출구. 2026-08-20 채택
GREX교육망 2025 코스
페이지로만. 검색어·초안 코드가 아님. 환우 처방서 아님
데이터
로그인하면 본인 행만 본다. 미리보기는 PGLite, 배포는 Neon. 게스트는 샘플 12편만 본다.
cafe_posts
글, 가림, 3·4초안, 1·2 사용자 문장, 상태 inbox/drafting/replied/skipped/archived
reply_log
남긴 답 한 줄, 근거, 반복 여부
repeat_questions
같은 질문 횟수
user_settings
하루 상한 2, 알림, last_scan_at
Better Auth 표
user / session / account. 이메일 또는 Google·X
들어가기
미리보기 iframe은 Google·X 팝업을 막는다. 그래서 이메일이 정문이다. 세션은 미리보기에서 bearer, 배포에서 쿠키. 서버 함수는 authMiddleware로 user_id를 강제한다. 카페 계정과는 무관하다.
하지 않는 일
- 네이버 카페 로그인·크롤·알림 자동화
- 답글 자동 게시
- 약 용량, 수치 판정, 식단 권장량, 병원 추천
- GREX를 환우 프로그램으로 권함
- 반려동물 글을 찾아 답함
- 주 150분을 PD·이식에 그대로 옮김
한계
- 검색은 부분 문자열이다. ‘산책’이 들어 있으면 유산소로 잡힐 수 있다
- 카페 본문은 사람이 붙이지 않으면 책상에 없다
- 미리보기 팝업 차단 — 세 칸·OAuth 모두 <a> 또는 이메일이 정답
- PGLite는 미리보기 재시작 시 초기화될 수 있다
- Grok 초안은 키가 있을 때만. 없어도 그룹 문장으로 동작한다
파일
- 규칙 · 검색 · 선 — src/lib/guide.ts
- 가림 — src/lib/triage.ts
- 초안 — src/lib/drafts.ts, src/lib/server/ai.ts
- 저장 — src/lib/server/posts.ts, migrations/0002_radar.sql
- 카페 링크 — src/lib/cafe.ts (수집 없음)
- 복막 — src/lib/ispd-pd.ts · GREX — src/lib/grex.ts