아키텍처 · 기술 스택 · 폴더 구조 · 공통 규약 — 모든 기능설계의 전제
| 레이어 | 기술 | 비고 |
|---|---|---|
| 프론트엔드 | PWA (HTML/CSS/Vanilla JS or 경량 프레임워크), Service Worker | 설치형·오프라인·푸시 |
| 백엔드 | PHP 8.x (Apache) | 현 sb.kiam.kr 서버 환경 |
| DB | MariaDB sbdb · UTF8MB4 · InnoDB | 기존 p25 18테이블 기반 |
| 인증 | JWT (Bearer) + 이메일 인증코드 | 원챗과 SSO 토큰 연계 |
| 실시간 | WebSocket(WSS) · SSE(스트리밍) | 대화/알림 |
| AI 대화 코어 | 원챗 OneChat 아바타 API | onechat.kiam.kr |
| LLM | DeepSeek API | 의도·감정·응답 |
| 음성 | STT/TTS (브라우저 Web Speech 또는 외부 API) | 큰소리·느린속도 |
| 푸시/알림 | FCM(Web Push) + SMS 게이트웨이 + 원챗 발송 | 이중화 |
| 결제 | 토스페이먼츠 (빌링키 정기결제) | 가족 구독 |
모든 엔드포인트는 /api/v1/* · JSON · Authorization: Bearer <JWT> (인증 제외).
| HTTP | code | 의미 |
|---|---|---|
| 400 | VALIDATION_FAILED | 입력값 오류 |
| 401 | AUTH_REQUIRED / AUTH_EXPIRED | 미인증/만료 |
| 403 | FORBIDDEN | 권한 없음(공유범위 위반 등) |
| 404 | NOT_FOUND | 리소스 없음 |
| 429 | RATE_LIMITED | 요청 과다 |
| 502 | UPSTREAM_ONECHAT / UPSTREAM_LLM | 원챗/LLM 장애 → 폴백 동작 |
| 500 | INTERNAL | 서버 오류 |
share_scope를 서버에서 강제 필터링한다.audit_logs에 기록(기획서 존엄 원칙 구현).d01 아리 아바타 대화와 d02 SOS를 6계층(UI→Flow→DB→API→Seq→Comp)으로 끝까지 설계합니다.