iamserver의 onechat.kiam.kr 와 실벗을 잇는 다리
┌─────────────────────────────────────────────────────────────┐
│ [시니어 단말] sb.kiam.kr (PWA, 카메라/마이크/GPS 권한) │
└──────────┬──────────────────────────┬───────────────────────┘
│ HTTPS / WSS │ WebRTC
▼ ▼
┌─────────────────────┐ ┌─────────────────────────────────┐
│ 실벗 서버 │ │ 원챗 OneChat 서버 │
│ sb.kiam.kr │←→│ onechat.kiam.kr │
│ - 사용자/회원 │ │ - 채팅 세션 관리 │
│ - 건강/약/SOS │ │ - WebSocket 라우팅 │
│ - 가족/일정 │ │ - 메시지 영속성 (장기 메모리) │
│ - 결제/구독 │ │ - 1:1, 그룹, AI 봇 대화 │
│ Apache+PHP+MariaDB │ │ │
└─────────┬───────────┘ └──────┬──────────────────────────┘
│ │
▼ ▼
┌───────────────────────────────┐
│ DeepSeek LLM API │
│ (AI 말벗 / AI 비서 / 자서전) │
└───────────────────────────────┘
| 기능 | 실벗 sb.kiam.kr | 원챗 onechat.kiam.kr |
|---|---|---|
| UI | ✅ 시니어 친화 UI | - |
| 회원/인증 | ✅ JWT 발급/관리 | SSO 검증 |
| AI 말벗 (음성 대화) | UI + STT/TTS | ✅ 채팅 세션 저장 |
| 가족 1:1 채팅 | UI | ✅ 메시지 라우팅 |
| 가족 그룹 채팅 | UI | ✅ 그룹 룸 관리 |
| WebRTC 영상 | UI | ✅ Signaling 서버 |
| 장기 메모리 | ✅ 사용자 프로필 | ✅ 대화 로그 |
| 건강·약·SOS | ✅ 전담 | - |
// 실벗에서 원챗 인증 흐름 async function connectOneChat(){ // 1) 실벗에서 short-lived 토큰 발급 const r = await fetch('/api/v1/auth/onechat-token', { headers: {'Authorization':'Bearer '+silbeotToken} }); const { onechat_token } = await r.json(); // 2) WebSocket 연결 ws = new WebSocket(`wss://onechat.kiam.kr/aimessage/onechat/ws?token=${onechat_token}`); ws.onmessage = e => renderMessage(JSON.parse(e.data)); // 3) 메시지 송신 function sendMessage(text){ ws.send(JSON.stringify({ type:'chat', room:'silbeot_user_'+userId, content:text })); } }
POST /api/v1/onechat/sync-user { "silbeot_user_id": 12345, "name": "김순자", "role": "senior", "family_ids": [67890, 67891] } // → 원챗이 자동으로 가족 그룹채팅방 생성 POST /api/v1/onechat/relay-message { "from": "silbeot_ai_companion", "to_room": "family_67890_67891", "text": "어머니가 오늘 약을 모두 드셨어요 😊", "type": "auto_report" }