🧩 실벗 전체 구조 (기술 총정리)
실벗이 어떤 부품으로 만들어졌고, 어떻게 안전하게 동작하는지 한곳에 정리했습니다. 개발자·가족·관리자가 전체 그림을 이해하기 위한 페이지입니다.
🧠
이 페이지는 실벗의 모든 기능과 알고리즘을 한눈에 보는 지도입니다.
각 기능의 자세한 사용법은 왼쪽 차례의 해당 페이지를 참고하세요.
한눈에 보는 실벗
실벗은 설치 없이 인터넷 주소로 쓰는 앱(PWA)입니다. 화면(프런트엔드)과 두뇌 역할을 하는 서버(백엔드), 정보를 담는 데이터베이스, 그리고 외부 AI·결제·메시지 서비스가 연결되어 있습니다.
사용자 화면(PWA)→
API 서버(PHP)→
데이터베이스(MariaDB)
DeepSeek AI·
TossPayments 결제·
OneChat 메시지·
이메일(SMTP)
사용한 기술
| 구분 | 내용 |
|---|---|
| 화면(프런트) | HTML·CSS·JavaScript, PWA(홈 화면 설치, 오프라인), 브랜드색 주황 #F47B3A, 글꼴 Noto Sans KR·Jua |
| 서버(백엔드) | PHP, PDO 기반 DB 계층, REST API(/api/v1/*) |
| 데이터베이스 | MariaDB/MySQL, UTF8MB4, InnoDB, 18개 표 |
| AI | DeepSeek(deepseek-v4-flash) — 대화, 스트리밍, 도구 호출(Function Calling) |
| 결제 | TossPayments(주문→승인 검증→구독 활성화) |
| 메시지 | OneChat 중계 + 이메일(SMTP) |
로그인·보안은 어떻게 지키나요?
- 비밀번호: 원문을 저장하지 않고 bcrypt로 암호화해 저장합니다.
- 로그인 유지: 세션(쿠키)과 JWT 토큰(HS256)을 함께 사용합니다. 세션이 먼저, 없으면 Bearer 토큰의 사용자(uid)를 확인합니다.
- 이메일 인증: 가입 시 인증 메일을 보내고, 링크를 눌러야 활성(active) 됩니다.
- CSRF 보호: 위조 요청을 막기 위한 토큰을 검사합니다.
- 요청 제한(rate limit): 로그인·AI 호출 등에 횟수 제한을 둡니다(파일 기반).
- 감사 로그(audit): 로그인, 결제, SOS, 관리자 행위 등 중요한 일은 모두 기록합니다.
- 세션 유지 기간: 30일.
AI는 어떻게 쓰이나요?
실벗은 DeepSeek AI를 세 가지 방식으로 사용합니다.
- 일반 대화(
chat()): AI 말벗, 동네 질문, 생활 도움 등 — 한 번에 답을 받아옵니다. - 실시간 스트리밍(
stream(), SSE): 말벗 대화가 글자 하나하나 흐르듯 나타나게 합니다. - 도구 호출(Function Calling): AI 비서가 사람 말을 이해해 일정 등록·약 등록·건강 기록 같은 7가지 도구를 스스로 실행합니다.
AI 말벗에는 6가지 대화 원칙이 적용됩니다: ① 항상 존댓말, ② 1~3문장으로 짧게, ③ 쉬운 말, ④ 의료 진단은 하지 않음, ⑤ 외로움에 공감, ⑥ 위급하면 119 안내.
데이터베이스 18개 표
| 표 이름 | 담는 정보 |
|---|---|
users | 회원 계정(역할·상태·이메일 인증) |
user_profiles | 이름·나이·지역·관심사·글자크기·음성속도 |
family_relations | 가족 연결(초대코드·상태·비상여부) |
mood_logs | 오늘의 마음(1~5점·AI 위로) |
medications | 약 정보(이름·시간 목록·요일) |
med_logs | 약 복용 기록(먹음·늦음·건너뜀) |
health_records | 건강 숫자(혈압·혈당·체중 등 10지표) |
emergency_contacts | 비상연락처(우선순위·종류) |
sos_events | 긴급 SOS 발생·종료 기록 |
chat_sessions | AI 대화방(말벗·비서·자서전·도움·건강) |
chat_messages | 대화 한 줄 한 줄 |
calendar_events | 일정·약속 |
help_requests | 생활 도움 요청 |
village_events | 우리 동네 복지·행사 |
subscriptions | 구독(플랜·상태·만료일) |
payments | 결제 내역 |
notifications | 알림(SOS·가족·시스템) |
audit_logs | 중요 행위 감사 기록 |
API 한눈에 보기 (16개 그룹)
| API 그룹 | 하는 일 | 매뉴얼 |
|---|---|---|
auth | 가입·인증·로그인·비밀번호 재설정 | 회원가입 |
chat | AI 말벗 대화·스트리밍 | AI 말벗 |
secretary | AI 비서 도구 호출(7종) | AI 비서 |
mood | 오늘의 마음 기록·AI 위로 | 오늘의 마음 |
calendar | 일정 추가·완료·삭제 | 일정 관리 |
health | 건강 기록·혈압 위험 판정 | 건강 지킴이 |
med | 약 등록·오늘의 약·복용 기록 | 약 알림 |
sos | 긴급 SOS 발생·종료 | 긴급 SOS |
family | 가족 초대·수락·비상연락처 | 가족 연결 |
onechat | 가족 메시지 중계·SSO | 가족 메시지 |
village | 동네 정보·AI 질문 | 우리 동네 |
help | 생활 도움 AI·요청 | 생활 도움 |
payment | 플랜·결제·구독 | 구독·결제 |
notify | 알림 목록·읽음 | — |
admin | 통계·회원·SOS·결제·감사 | 관리자 |
| (라우터) | api/index.php 가 경로를 분석해 알맞은 처리기로 연결 | — |