report.crowny.org 토론 게시판 기능 + 윤연정 4과목 토론 과제
개요
report.crowny.org(:9781)에 리포트 후 찬반 토론 + 다른 작성자 글 댓글 + 회원별 누적 기능을 추가하고, 사회복지 4과목 토론 과제(복학생 모드)를 병렬 생성해 게시판에 시드했다.무엇을 했는지
1. 토론 게시판 기능 (신규)
engine/forum.js — 토론 엔진: 토픽/게시글/댓글(임베드) + 회원별 누적 집계(memberActivity) + 찬반 입장 분포 + 토론 과제 충족 판정(게시글1+댓글2).engine/토론게시판.한선 — 한선씨 동반(핵심 로직 미러). hanseonc_high 컴파일+실행 검증 GREEN, 학습DB 등록(토론게시판_회원별집계).server-report.js API 추가:GET /api/forum/topics — 토픽 목록(입장 분포 포함)POST /api/forum/topics — 토픽 생성GET /api/forum/topic/:id — 토픽 상세 + 게시글POST /api/forum/post — 게시글 작성(회원 식별 필수)POST /api/forum/comment — 댓글 작성GET /api/forum/member/:memberId — 내 활동(누적+과제현황)public/토론.html — 토론 SPA(닉네임 등록→회원별 누적, 토픽 목록/상세/내 활동, 찬반 배지, 댓글 작성). tiomta 표준 토큰 적용./토론 /forum /debate. index·사회복지 nav에 토론 링크 추가.2. 회원별 누적 (현재 "다 오픈" → 회원별 분리)
- 기존 SSO 와이어링이 사실상 미작동(
getUserId가 항상default)이라 모든 글이 한 곳에 섞임 = "다 오픈" 상태였음. - 해결: 클라이언트 닉네임 기반
memberId(localStorage) + 로그인 시 userId 우선. 게시글·댓글이 memberId별로 누적되고 "내 활동"에서 본인 글/댓글/과제현황만 집계.
3. 4과목 토론 콘텐츠 병렬 생성 (Workflow, sonnet ×4)
복학생(B+) 페르소나로 주제별 학우 글 2 + 윤연정 게시글 1 + 윤연정 댓글 2(학우 글 대상) 생성 → 게시판 시드(주제4/게시글12/댓글8). 윤연정 4주제 모두 과제 충족(글1+댓2).- 노인복지론(노인연령 70세) — 윤연정 반대
- 사회복지행정론(지방정부 역할 강화) — 윤연정 찬성(중앙 재정보전 조건)
- 의료사회복지론(조현병 진단명 고지) — 윤연정 알려야 한다(방식이 핵심)
- 학교사회복지론(혼자 다니는 학생) — 윤연정 도와준다(아이 속도에 맞춰)
관련 파일
/Users/ef/crowny-report/engine/forum.js,engine/토론게시판.한선/Users/ef/crowny-report/server-report.js(forum 라우트),public/토론.html/Users/ef/crowny-report/data/forum/{topics.json, posts/*.json}(시드 데이터)/Users/ef/crowny-report/data/{seed-debate.json, seed-forum.js}(시드 원본/스크립트)- 제출용 텍스트:
/Users/ef/CrownyDoc/projects/2026-06-15-윤연정-토론과제-4과목/*.txt
검증
- 한선씨 동반 컴파일/실행 GREEN(과제충족 로직).
- API 6종 GREEN, 페이지 200, 쓰기 경로(게시글+댓글+회원누적) 임시 토픽으로 검증 후 정리(라이브 4주제 무오염).
- launchd kickstart 재기동(pid 2499→66249).
잔여 이슈
- SSO 정식 연동(로그인 사용자 = memberId 자동) 시 닉네임 폴백 위로 승격 가능.
- 게시글 분량 371~410자(토론 게시판 기준 적정, 리포트 2200자 기준 아님).
- 모사율 측정/필체 주입을 토론 글에도 연동하면 일관성↑.
추가: 연계(사고 누적) 엔진 — "앞으로 단절되지 않게" 설계 (2026-06-15 오후)
문제 인식 (사용자 지적)
토론 1차 콘텐츠가 주제+페르소나만으로 생성돼, 윤연정의 기존 노인복지론 리포트(노노간병·시부모 간병 경험·"노인문제=내 미래"·권중돈/통계청)와 완전히 단절됐다. "같은 노인복지론인데 연계성이 없다 / 기회를 놓쳤어 / 앞으로 그러지 않게 설계하라." → 1차 콘텐츠는 재생성하지 않고(놓친 기회 인정), 연계성을 시스템에 내장.설계 (report = Thinking Digital Twin = 사고 누적)
engine/continuity.js— 회원·과목별 사고 원장.recordWork(글 적재) /buildPromptBlock(기존 글의 입장·본인 일화·핵심 관점(결론)·인용 출처를 생성 프롬프트용 블록으로) /getLedger/memberLedgers.- 휴리스틱 추출(LLM 없이): 일화=강신호(시부모/간병/그때/편찮…) 우선, 출처=참고문헌 파싱, 요지=결론 우선.
- 자동 배선:
forum.addPost·welfare.generateReport가 생성 후continuity.recordWork호출 → 각 글이 다음 글의 연계 자료가 된다.welfare.personaPrompt는 연계 블록을 본문 앞에 주입. - 백필:
data/backfill-continuity.js→ 윤연정(memberIdm_yyj) 2026-05-25 4과목 리포트(복학생)를 원장에 적재. 이제 윤연정의 새 글은 기존 리포트를 물려받는다. - API:
GET /api/forum/continuity?member=&topicId=,GET /api/continuity?member=&subject=. - UI: 토론 작성칸 위 "🧵 이미 쓴 글이 있어요 — 이어서 쓰세요" 힌트(본인 일화 표출).
- 한선씨 동반:
engine/연계.한선(원장 적재/조회 미러, 컴파일 GREEN), 학습연계_사고누적_원장조회. - 세션 규칙: 메모리
feedback_report_continuity_required— 기존 인물의 새 산출물은 과거 작업을 먼저 조회·주입. Workflow 서브에이전트엔 연계 블록 직접 주입.
검증
- 백필 4과목 적재, 연계 블록에 노노간병·결론 관점·권중돈/통계청 표출 확인.
- API GREEN(forum/continuity 연계있음:true, continuity subject별 원장).
- 연계.한선 컴파일·실행 GREEN(연계 판정).
한계/향후
- 앵커 추출이 휴리스틱(향후 LLM 추출 고도화). 1차 토론 콘텐츠는 단절된 채 보존(재생성 안 함).
추가: 게임형 낭만 리디자인 — "사고의 천문대" 월드 (2026-06-16)
padella.crowny.org의 천상 월드 패턴(포털 입장→씬 이동·HUD·DOCK·낭만 카피·금/심야 팔레트·글로우)을 글쓰기/사고 누적 테마로 이식.
public/월드.html (별칭 /월드 /world /천문대 /star): 자급 단일 페이지./api/brain/insight(Lv·xp·글수), /api/forum/topics(광장 글 수), /api/continuity?member=m_yyj(이어진 사고 원장)을 별자리 방에 SVG 별자리+스탯으로 표출.추가: 운영 이슈 3종 수정 (2026-06-16) — 느림·회원구분·삭제
사용자 보고: ①반응 어마어마하게 느림 ②개인정보(회원) 구분 없음 ③작성 파일 삭제/수정 불가.
진단
- 로컬 백엔드는 1~3ms로 빠름. 느림 정체 = Gemini 이해 경로 재시도(타임아웃 15s×3회+백오프 = 최악 47초). 키 레이트리밋/네트워크 행 시 직격.
- 회원구분:
getUserId가 항상default(SSO 미작동) → 모든 문서가 한 폴더 공유. - 삭제:
/api/docs/:id에 DELETE 라우트 자체가 없었음(GET·PUT만). UI에도 삭제 버튼 없음.
수정
- 빠른 폴백 —
engine/llm-router.jsGemini 6s×2+짧은 백오프(최악 ~12.3초)로 축소, 실패 즉시 mock.public/월드.html외부 Google Fonts 제거(블로킹 요인·외부의존 제거). - 회원별 분리(opt-in) —
getUserId가x-member-id헤더(닉네임 기반 localStorage) 우선 인식(sanitizeId로 traversal 차단). 프론트 API 래퍼가 헤더 주입. 닉네임 미설정=공용(default) 유지(기존 6문서 보존), 설정 시 개인 서재로 분리. 사이드바 회원 바 + 닉네임 전환 UI. - 삭제+수정 —
DELETE /api/docs/:id(deleteDocument, 회원 소유분만) 추가, 문서목록 🗑 버튼(deleteDoc, 확인 후 삭제). 수정(PUT autosave)은 정상 작동 확인.
검증
- 회원 분리: alice 글이 bob에게 안 보임 / bob의 alice 글 삭제 차단(소유 격리) / alice 본인 삭제·수정 GREEN.
- default 라이브 6문서 보존. LLM 이해 ~1.2s(정상). 헤드리스 렌더(회원 바·천문대 링크·문서목록) 확인.