2026-10-01 ERD 문서 추가 (docs/erd.md, 코드 수정 없음)

DB 스키마를 Mermaid ERD로 옮겨 docs/erd.md에 저장했다. 근거는 ORM 4개 파일(backend/apps/engine/adapter/outbound/orms/)과 마이그레이션 8개, 그리고 개발 DB의 실제 제약 조건이다.

  • 구성 — 그림 두 장. 게임 상태·계정·로그 9개 테이블(users·attempts·loops·npc_states·nights·notes·rules·survey_votes·events)과 시나리오 시드 6개 테이블. 실선은 DB 외래 키, 점선은 코드로만 지키는 관계.
  • 대조 결과 — 테이블 15개(+alembic_version), alembic head 216f290d03b3. 외래 키는 5개뿐(loops·notes·rules → attempts, npc_states·nights → loops)이고 attempts.user_id·prior_attempt_id, survey_votes.attempt_id·user_id, events.session_id에는 외래 키가 없다.
  • 적어 둔 주의점 — events.session_id는 보통 attempts.id지만 정원·한도 가드에 막힌 요청은 일회용 UUID로 남는다(session_interactor.py:43). truth_claim_embeddings는 스키마만 있고 런타임에서 쓰지 않는다.
  • 검증 — Mermaid 11.17.2 파서로 두 블록 문법 통과. 실제 렌더 화면은 확인하지 않았다.

밤 — 일지 시점 재확인 (23:45)

오늘 개발은 오전의 ERD 문서 한 건이 전부다. 그 뒤로 저장소에 남은 변경은 없다.

  • 커밋 — 오늘 0건. 마지막 커밋은 여전히 a154752(09-19 10:35), 브랜치 feat/coherence-chain. 스테이징된 변경도 없다(git diff --cached 빈 출력).
  • 오늘 수정된 파일 3개 — docs/erd.md(11:04, 218줄·6,812바이트, 미추적), docs/jekyll.md(11:05, 이 일지), backend/uvicorn-8500.log(22:39). 코드 파일은 0개.
  • docs/erd.md 구성 재확인 — 절 3개(1. 게임 상태·계정·로그 / 2. 시나리오 시드 / 3. 읽을 때 주의할 점), Mermaid 블록 2개.
  • 평가 문서 — docs/model_evaluation.md(09-18 20:57)·docs/metrics.yml(09-18 20:55) 변경 없음.
  • 포트폴리오 검토 세션(11:26께) — 공개 전 포트폴리오의 수치 근거를 프로젝트 문서와 대조하는 세션이 있었다는 기록만 남아 있다. 이 저장소에 생긴 산출물은 없고, 세부 내용은 확인하지 못해 적지 않는다.

인프라 상태 (코드·설정 변경 없음)

항목 확인 결과
DB docker compose ps: 게임 DB 컨테이너 Up 7 days (healthy), 127.0.0.1:5435->5432
백엔드 127.0.0.1:8500 LISTEN. 로그에 기동 기록이 Started server process [25287] 한 번뿐이라 09-24에 띄운 프로세스가 그대로 돌고 있다
프론트 개발 서버 3500 리스너 없음(떠 있지 않음)
서버 부팅 uptime -s = 2026-09-24 21:45:33. 그 뒤 재부팅 없음
backend/.env 마지막 수정 09-24 21:52(키 교체 시점) 그대로

/health 직접 호출과 프로세스 목록 조회는 실행 승인이 나지 않아 하지 못했다. 위 백엔드 항목은 포트 리스너와 로그로만 판단한 것이다.

백엔드 로그 누적 (backend/uvicorn-8500.log, 09-24 기동 이후 전체)

09-24 일지 때 23줄이던 로그가 196줄이 됐다. uvicorn 접근 로그에는 시각이 없어 어느 줄부터가 오늘인지는 가릴 수 없다. 확실한 것은 마지막 줄이 오늘 22:39:04에 적혔다는 것뿐이다. DB에서 오늘 만들어진 판 수를 세어 보려 했으나 조회 승인이 나지 않아 못 했다.

응답 건수
200 81
307 33
401 18
404 57
503 3
  • 마지막 기록(22:39) — 구글 로그인 한 건. POST /sessions 401 → auth/google/start 307 → google/callback 307 → POST /sessions 200 → POST /sessions/{id}/loops 200 → observations 200 → npcs 200. 판 시작까지 정상이다.
  • 누적 판 시작 — POST /sessions 200이 7건.
  • NPC 대화 — POST /loops/{id}/utterances 200이 11건, 503이 3건. 503은 71~73줄에 한 회차에서 연속으로 났고 그 뒤 다른 회차의 대화는 200이다. 로그에 traceback·error 줄이 0이라 원인은 로그만으로 알 수 없다. 09-27 점검 때의 세션 기록(claude-mem 관찰 목록)에 이미 잡혀 있던 것으로, 오늘 생긴 것은 아니다. 원인 조사는 하지 않았다.
  • 밤 흐름 — 바로 앞 판에서는 beats/next·paw/respond·night/draft·nights/{id}/submit·nights/{id}/questions 3건·options가 전부 200이다. 낮 대화부터 밤 답안·신의 질문·선택지 조회까지 간 기록이고, 그 뒤 요청은 로그에 없다.

이월

  • 해소: Haiku 미확인(09-24) — 당시 기준이 “NPC에게 말을 걸어 200이 나오면 끝”이었다. 같은 프로세스·같은 .env에서 utterances 200이 11건 쌓였으므로 새 키로 Haiku 호출이 되는 것으로 본다. 언제 처음 성공했는지는 로그에 시각이 없어 모른다.
  • 미완: 그림 WebP 전환·선로딩 미커밋(09-19 저녁~) — 작업 트리 그대로다. 프론트 코드·테스트 21개 파일 +151/−52, PNG 75장 삭제, WebP 75장과 frontend/lib/preloadImages.ts 미추적. 오늘 손대지 않았다.
  • 미완: docs/erd.md 미커밋 — 미추적 상태. 저장소 루트의 09-18 스크린샷 PNG 1장도 미추적으로 남아 있다.
  • 미완: utterances 503 3건 원인 — 위 참고. 조사하지 않았다.
  • 미완: 재부팅 시 자동 기동 — DB·백엔드가 재부팅 뒤 자동으로 안 뜨는 문제는 그대로다. 09-24 이후 재부팅이 없어 드러나지 않았을 뿐이다.