iykyka/backend
Claude ebf333d287
제품명 변경(분신→와카뷰) + 소프트 그라디언트/글래스모피즘 UI + 브랜드 로딩 화면
명칭 변경:
- decision-log.md Q6 확정: "분신"(가칭) → "와카뷰 (Ykavu)" — 焚身(분신자살)
  동음이의 리스크도 있었고 메신저 브랜드로 부르기 무거웠음. Master가 최종
  선택한 이름으로 변경(2026-07-31), 파생 문서(AGENTS.md/CLAUDE.md/PRD 등)·
  Flutter 앱 텍스트·web manifest/index.html·AndroidManifest 라벨까지 전부 반영
- ai-service: 본인확인 고정 문구(identity.py)·시스템 프롬프트(generation.py)도
  갱신 — 새 이름 기준으로 "본인이야 와카뷰야?" 류 질문을 감지하도록 정규식도
  같이 손봄(단순 문자열 치환만으론 어미 형태가 안 맞아서 테스트 추가/조정)
- poc/tone-corpus/의 실험용 프롬프트는 의도적으로 그대로 둠(ai-service README에
  이미 명시된 대로 프로덕션과 분리된 실험 도구)

UI/UX:
- mobile/lib/theme/app_theme.dart: 시드 컬러를 인디고/라벤더로 변경, 화면 전체에
  깔리는 소프트 그라디언트(라이트: 라벤더→스카이→핑크 파스텔, 다크: 딥 인디고→
  네이비→플럼) + 카드/인풋/칩을 반투명 "글래스" 서피스로 전환
- mobile/lib/widgets/gradient_backdrop.dart(신규): MaterialApp.builder에 연결해
  모든 화면에 자동으로 그라디언트 배경 적용
- mobile/lib/screens/splash_screen.dart(신규) + main.dart 재구성: 기존엔
  session.restore()를 기다리는 동안 아무 것도 안 그려서 흰 화면/텍스트만 뜨는
  구간이 있었음 — runApp을 먼저 하고 restore 동안 브랜드 스플래시가 뜨도록 변경
- chat_screen·autonomy_settings_screen·data_flow_screen의 커스텀 패널들도
  글래스 스타일로 맞춤

BunsinApp -> YkavuApp (mobile/lib/main.dart, test/widget_test.dart 동기화)

Flutter SDK가 없는 환경이라 flutter analyze/run으로 직접 컴파일 검증은 못했음 —
중괄호/괄호 균형과 기존에 검증된 API 패턴 위주로 신중하게 작성함. go test·
pytest는 전부 통과.
2026-07-31 01:15:42 +00:00
..
app 제품명 변경(분신→와카뷰) + 소프트 그라디언트/글래스모피즘 UI + 브랜드 로딩 화면 2026-07-31 01:15:42 +00:00
README.md 제품명 변경(분신→와카뷰) + 소프트 그라디언트/글래스모피즘 UI + 브랜드 로딩 화면 2026-07-31 01:15:42 +00:00
requirements.txt Start Phase 1 backend skeleton (item 2 of the build order) 2026-07-30 00:57:57 +00:00

README.md

와카뷰 backend (Python 프로토타입 — 참고용, Go로 포팅 예정)

스택이 바뀌었다: docs/tech-design.md §8에서 코어 백엔드를 Go로 재확정했다 (성능/동시성, 향후 스케일 대비). 이 디렉토리는 그 결정 전에 만든 Python/FastAPI 프로토타입으로, 인증·메시지 릴레이·DB 스키마가 실제로 동작하는 걸 검증하는 용도로는 여전히 유효하다 — API 설계·DB 스키마 참고용으로 남겨두고, Go 코어 백엔드를 새로 만들 때 이 동작을 그대로 재현한다. AI 서비스(2.2)는 그대로 Python으로 간다 — 그건 이 디렉토리가 아니라 별도 서비스로 만들 것.

실행

pip install -r requirements.txt
uvicorn app.main:app --reload

기본은 sqlite:///./dev.db로 뜬다. 프로덕션 DB를 쓰려면:

export DATABASE_URL=postgresql+psycopg2://user:pass@host/dbname

지금 있는 것 (2.1 백엔드 인프라 뼈대)

  • GET /health — 헬스체크
  • POST /auth/signup — 초대 코드 기반 가입 (중복 코드는 409)
  • POST /conversations/{id}/messages — 메시지 저장 + 같은 대화방 WebSocket 커넥션에 브로드캐스트
  • WS /ws/conversations/{id} — 대화방별 실시간 릴레이 (인메모리 커넥션 매니저)
  • DB 모델 (app/models.py): users, contacts, conversations, conversation_participants, messages, twin_settings, whitelist_rules, escalation_logsroadmap.md Phase 1 §2.1 스키마 그대로

signup/message-send/404/WebSocket 브로드캐스트까지 TestClient로 실제 실행해서 확인함 (테스트 스크립트는 커밋 안 함 — 필요하면 정식 tests/로 다시 만들 것).

아직 없는 것 (다음 워크스트림)

  • 2.2 AI 파이프라인 연동 — poc/tone-corpus/generate_draft.py 등을 여기 API로 이식
  • 푸시 알림 연동
  • 인증 토큰/세션 (지금은 invite_code로 가입만 되고 로그인 세션 개념이 없음)
  • 프로덕션 마이그레이션 도구 (지금은 Base.metadata.create_all로 스타트업 시 테이블 생성 — Alembic 같은 마이그레이션은 스키마가 안정되면 도입)