이 프로젝트는 화학 물질을 검색하고 학습할 수 있는 교육용 서비스를 위한 백엔드 API입니다. 사용자는 화학 원소 조합을 입력하여 화학 물질을 검색하고, 발견한 화학 물질에 따라 칭호를 획득하며, 개인 및 조직 랭킹에 참여할 수 있습니다.
- 화학 원소 조합 입력 (예: "h + h + o")으로 화학 물질 검색
- 표준 화학식 변환 및 다양한 표기법 지원 (예: H2O, OH2)
- 익명 또는 사용자 인증 기반 검색 지원
- 사용자 등록 및 프로필 관리
- 사용자별 포인트 시스템
- 조직(학교) 소속 관리
- 화학 물질 발견에 따른 자동 칭호 부여
- AI 기반 맞춤형 칭호 생성
- 칭호 관리 및 활성화
- 개인별 화학 물질 발견 랭킹
- 조직별 화학 물질 발견 랭킹
- 사용자 화학 활동 분석 보고서
- AI 기반 보고서 생성
화학 물질 API
POST /chemical/formula/search
: 사용자 ID 제공하여 화학식 검색 (랭킹에 포함)POST /chemical/formula/search/anonymous
: 익명으로 화학식 검색GET /chemical/user/formulas/{userId}
: 사용자가 발견한 모든 화학식 조회
사용자 API
POST /user/register
: 사용자 등록GET /user/getUsernameById/{userId}
: 사용자 ID로 닉네임 조회GET /user/getIdByUsername/{userName}
: 사용자 닉네임으로 ID 조회
포인트 API
POST /point
: 포인트 추가/차감GET /point/search/{userName}
: 사용자 포인트 조회
칭호 API
GET /title/{userId}
: 사용자의 모든 칭호 목록 조회POST /title/{userId}/activate/{titleId}
: 특정 칭호 활성화GET /title/ai/{userId}
: AI 생성 맞춤형 칭호 목록POST /title/ai/{userId}/save
: AI 생성 칭호 저장
랭킹 API
GET /ranking
: 상위 10명의 개인 랭킹과 상위 10개 조직 랭킹 조회
보고서 API
GET /report/{userId}
: 사용자의 화학 활동 분석 보고서 생성
도감 API
GET /collection/find/all
: 모든 물질 정보 조회GET /collection/find/{molecularFormula}
: 화학식으로 특정 물질 정보 조회
classDiagram
class ChemicalEntity {
+Long chemicalId
+String chemicalNameKo
+String chemicalNameEn
+String molecularFormula
+String chemicalDescriptionKo
+String educationLevel
+Integer attackPower
}
class UserEntity {
+Long userId
+String userName
+String groupName
+Long userPoint
}
class FormulaSearchHistory {
+Long id
+String matchedFormula
+Boolean successful
}
class TitleEntity {
+Long titleId
+String titleName
+String description
+String unlockCondition
}
class UserTitleEntity {
+Long id
+LocalDateTime acquiredAt
+Boolean isActive
}
class GroupEntity {
+Long groupId
+String groupName
}
UserEntity "1" -- "n" FormulaSearchHistory : has
UserEntity "1" -- "n" UserTitleEntity : has
TitleEntity "1" -- "n" UserTitleEntity : awarded to
- 사용자 입력 파싱 (예: "h + h + o" → {"H": 2, "O": 1})
- 가능한 화학식 조합 생성 (예: H2O, OH2)
- 데이터베이스에서 일치하는 화학 물질 검색
- 결과 반환 및 검색 이력 저장
- 성공 시 칭호 체크 및 부여
- Java 17
- Maven 또는 Gradle
- 데이터베이스 (MySQL/PostgreSQL)
- OpenAI API 키 (AI 기능용)
# 저장소 클론
git clone https://github.com/yourusername/your-repo-name.git
# 디렉토리 이동
cd your-repo-name
# 의존성 설치
./mvnw install
# 애플리케이션 실행
./mvnw spring-boot:run
- 이 저장소를 포크합니다.
- 새 기능 브랜치를 만듭니다 (
git checkout -b feature/amazing-feature
). - 변경 사항을 커밋합니다 (
git commit -m 'Add some amazing feature'
). - 브랜치를 푸시합니다 (
git push origin feature/amazing-feature
). - Pull Request를 열어주세요.
이 프로젝트는 MIT 라이센스를 따릅니다.
대전 해커톤 2024에서 개발
개발사진