App Backend¶
App Backend는 SOHRI의 REST API 전용 Java 25·Spring Boot 4 서비스입니다. 회원 인증, 워크스페이스 관리, 시나리오 저작, 대화·분석 결과 조회를 제공하며 PostgreSQL 16을 JPA/Hibernate로 사용합니다.
이 문서는 sohri-app-backend의 main 00fd523을 기준으로 작성했습니다. 물리 스키마의
정본은 이 저장소의 schema.sql 사본이 아니라 sohri-db입니다.
실시간 처리 서비스가 아닙니다
App Backend에는 WebSocket 엔드포인트와 음성 처리 파이프라인이 없습니다. Socket Backend가 실시간 대화와 분석 결과를 PostgreSQL에 기록하고, App Backend가 같은 DB에서 이를 REST로 조회합니다. 두 서비스 사이에 직접 HTTP 호출은 없습니다.
책임¶
- 이메일·비밀번호 회원가입, 로그인, access/refresh JWT 발급과 refresh 회전
- 워크스페이스 생성, 소속 조회, API key와 단기 client-secret 발급
- 워크스페이스별 일반 시나리오와 이력 관리
- 전역 시나리오 템플릿 등록 전 Graph Builder 검증
- 대화 목록·상세·통계·분석 결과와 보관 음성 조회
- 회원 프로필, 개인 TTS 음색 설정, 사용자 그룹 관리
중요한 경계¶
- 로그인 JWT는 App Backend REST 인증용 HMAC 토큰입니다. Socket Backend가 이 토큰을 소비한다고 가정하지 마세요.
- 실시간 접속용 client-secret은 별도 Ed25519 키로 서명합니다. 무상태이며 만료 전까지 재사용 가능한 토큰이지 일회용 토큰이 아닙니다.
- App Backend가 Graph Builder를 호출하는 저장 경로는
POST /v1/scenario-templates의 사전 검증입니다. 배포·게시 호출은 없습니다. - 일반
POST /v1/scenarios는 Graph Builder 검증 없이 시나리오와 이력을 저장합니다. voicePreset계약은 프리셋 코드 하나입니다. provider, model, vendor parameter를 클라이언트 계약으로 복제하지 않습니다.
문서 안내¶
- REST API 상세 문서
- 아키텍처
- 로그인과 토큰 인증
- 워크스페이스와 테넌시
- API key와 client-secret
- 시나리오와 Graph Builder
- 대화·분석 조회
- 공유 데이터 계약
- 보안과 현재 격차
- 운영과 관측
- REST API 참조
- 설정 참조
구현 상태 표기¶
이 문서에서 구현됨은 기준 커밋의 코드 경로가 존재한다는 뜻입니다. 미구현/현재 격차는 설정·인가·운영 통제가 아직 코드나 배포 템플릿에 완결되지 않았다는 뜻입니다. 특히 운영 투입 전에는 보안과 현재 격차를 먼저 확인하세요.