Skip to content

Jing5s/Carrier_Server

Repository files navigation

배너

AI 기반 일정 및 업무 관리 서비스 (Carrier)

AI가 일정, 메일, 회고, 회의를 간편화해 업무를 간편하게 만드는 서비스입니다.
사회초년생의 성장을 돕고, 통합 플랫폼에서 모든 업무를 해결하도록 설계되었습니다.

프로젝트 기간 - 2025.01. ~ 2025.04.

운영중인 서비스 바로가기
API Docs 바로가기

세부 성과

2025.04 | Carrier 서비스 배포
2025.04 | 교내 AI 경진 대회 우수상
2025.05 | 국제인공지능 대전 부스 운영

기능

이메일

  • 이메일 가져오기, 본문 요약 처리, 일정 자동 추가 기능

캘린더 및 투두

  • 일정 및 할 일의 생성, 조회, 수정, 삭제 기능 제공

사용자

  • 하루 일정 요약 제공 및 프로필 사진 등록 기능 지원

녹음 요약

  • 녹음 음성을 텍스트로 변환하고 핵심 내용 요약

일기

  • 일기 작성 기능 및 키워드 기반 주제 추천 기능 지원

기술 도입

Java Spring Boot MySQL Querydsl

CQRS 패턴 사용

CQRS 패턴을 적용하여서 조회 로직과 명령 로직을 분리하여 도메인별 책임 명확화
→ 도메인 계층의 복잡도 감소, 유지보수 효율성 증가

org.example.carrier
├── global
│   ├── annotation
│   ├── config
│   ├── entity
│   ├── error
│   ├── feign
│   ├── interceptor
│   ├── security
│   └── utils
└── domain
    └── calendar
        ├── domain
        │   ├── Schedule.java
        │   └── repository
        │       └── ScheduleRepository.java
        ├── service
        │   ├── CommandScheduleService.java
        │   └── QueryScheduleService.java
        ├── presentation
        │   ├── CommandScheduleController.java
        │   └── QueryScheduleController.java
        │   └── dto
        │       ├── request
        │       └── response
        └── exception
        └── ... (category, diary, mail, meet, todo, user)

@CustomService라는 annotation을 만들어 Query/Command의 의도를 명시적으로 표현 코드 바로가기

record를 사용한 개발

불변 객체 record를 기반으로 REST API와 Feign 응답 DTO를 설계
→ 가독성과 유지보수성 확보 및 클래스 대비 코드 간결화

트러블 슈팅

Gmail API를 다루며 고민한 기술 선택 – MongoDB & Kotlin

As-Is : Gmail API의 문제들

  • null 필드가 많아 정규화된 RDB 스키마로 표현이 어려움
  • 메일마다 다른 구조임으로 필드 유무를 확인 해야함
  • 중첩되는 JSON구조로 인해 파싱 로직 복잡도 증가

To-Be : MongoDB 사용 & Kotlin 사용

  • 응답 받은 JSON그대로 변경 없이 저장 가능
  • 조건 기반 쿼리를 사용해 필드 유무 판별 유리
  • kotlin의 null-safe특성을 이용하여 로직 구성 용이

회고 : data class를 활용하여 다양한 응답 타입에 유연한 모델링

  • 처음 기술을 선택할 때 데이터의 구조 서비스의 특성을 고려하여 기술을 선택하는 것이 중요하다는 것을 깨달음
  • MSA 설계는 각 도메인 별로 기술 스택을 자유롭게 선택 가능
    → 확장성과 유지보수성 면에서 유리한 구조를 체감

ERD

erd

화면 설계

메인 페이지 메일 페이지
하루 일정 요약 녹음 요약 페이지

팀원

Backend Frontend Frontend Frontend Designer
image image image image image
안예성 이민준 추성우 이승현 최성훈

About

오늘의 작은 계획이 내일의 큰 꿈으로

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages