BeMore는 AI 기반 감정 분석 및 CBT 피드백 서비스의 백엔드 API입니다.
- Base URL:
http://localhost:3000/api - Content-Type:
application/json - 인증: JWT 토큰 (향후 구현 예정)
Gemini AI와의 대화를 처리합니다.
요청 본문:
{
"message": "사용자 메시지",
"sessionId": "세션 ID (선택사항)",
"emotionContext": {
"currentEmotion": "현재 감정 상태",
"emotionHistory": ["감정 히스토리"]
}
}응답:
{
"success": true,
"data": {
"id": "메시지 ID",
"content": "AI 응답 내용",
"role": "assistant",
"timestamp": "2024-01-01T00:00:00.000Z",
"sessionId": "세션 ID",
"emotionAnalysis": {
"primaryEmotion": "주요 감정",
"confidence": 0.95,
"suggestions": ["CBT 기법 제안"]
}
}
}텍스트, 오디오, 이미지의 감정을 분석합니다.
요청 본문:
{
"mediaType": "text",
"text": "분석할 텍스트 내용",
"sessionId": "세션 ID (선택사항)"
}미디어 타입:
text: 텍스트 분석audio: 오디오 분석 (향후 구현)image: 이미지 분석 (향후 구현)
응답:
{
"success": true,
"data": {
"primaryEmotion": "주요 감정",
"secondaryEmotions": ["보조 감정들"],
"confidence": 0.95,
"intensity": 0.8,
"analysis": "감정 분석 결과 설명",
"cbtSuggestions": ["CBT 기법 제안들"],
"timestamp": "2024-01-01T00:00:00.000Z"
}
}사용자의 세션 히스토리를 조회합니다.
응답:
{
"success": true,
"data": {
"sessions": [
{
"id": "세션 ID",
"startTime": "2024-01-01T00:00:00.000Z",
"endTime": "2024-01-01T01:00:00.000Z",
"messageCount": 10,
"emotionTrends": ["감정 변화 추이"],
"summary": "세션 요약"
}
]
}
}특정 세션의 PDF 리포트를 생성합니다.
응답:
- Content-Type:
application/pdf - 파일 다운로드
{
"success": false,
"message": "에러 메시지"
}200: 성공400: 잘못된 요청401: 인증 실패404: 리소스를 찾을 수 없음500: 서버 내부 오류
DATABASE_URL="postgresql://username:password@localhost:5432/bemore"
GEMINI_API_KEY="your-gemini-api-key"
JWT_SECRET="your-jwt-secret"
PORT=3000npm installnpx prisma generate
npx prisma db pushnpm run start:devnpm run build
npm run start:prod- Framework: NestJS
- Database: PostgreSQL + Prisma
- AI: Google Gemini API
- Language: TypeScript
- Validation: class-validator, class-transformer
- 인증 시스템: JWT 기반 사용자 인증
- 파일 업로드: 오디오/이미지 파일 처리
- PDF 생성: 실제 PDF 라이브러리 사용
- 캐싱: Redis를 통한 성능 최적화
- 로깅: 구조화된 로깅 시스템
- 테스트: 단위 테스트 및 통합 테스트