Skip to content

moonjun1/STDev-Hackerton-backend

 
 

Repository files navigation

ATOMIX_10팀 PDF 문서 image

🧪 화합물 검색 및 교육 서비스 API

📝 개요

이 프로젝트는 화학 물질을 검색하고 학습할 수 있는 교육용 서비스를 위한 백엔드 API입니다. 사용자는 화학 원소 조합을 입력하여 화학 물질을 검색하고, 발견한 화학 물질에 따라 칭호를 획득하며, 개인 및 조직 랭킹에 참여할 수 있습니다.

✨ 주요 기능

🔍 화학 물질 검색

  • 화학 원소 조합 입력 (예: "h + h + o")으로 화학 물질 검색
  • 표준 화학식 변환 및 다양한 표기법 지원 (예: H2O, OH2)
  • 익명 또는 사용자 인증 기반 검색 지원

👤 사용자 관리

  • 사용자 등록 및 프로필 관리
  • 사용자별 포인트 시스템
  • 조직(학교) 소속 관리

🏆 칭호 시스템

  • 화학 물질 발견에 따른 자동 칭호 부여
  • AI 기반 맞춤형 칭호 생성
  • 칭호 관리 및 활성화

🥇 랭킹 시스템

  • 개인별 화학 물질 발견 랭킹
  • 조직별 화학 물질 발견 랭킹

📊 보고서 및 분석

  • 사용자 화학 활동 분석 보고서
  • AI 기반 보고서 생성

🔌 API 엔드포인트

화학 물질 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}: 화학식으로 특정 물질 정보 조회

🛠 기술 스택

기술 스택

백엔드

  • Java
  • Spring Boot
  • JPA
  • MySQL

인프라

  • AWS

개발 도구

  • IntelliJ IDEA
  • Postman

협업 툴

  • Git
  • Figma

문서화

  • Swagger

📊 모델 구조

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
Loading

🧪 화학식 검색 알고리즘

  1. 사용자 입력 파싱 (예: "h + h + o" → {"H": 2, "O": 1})
  2. 가능한 화학식 조합 생성 (예: H2O, OH2)
  3. 데이터베이스에서 일치하는 화학 물질 검색
  4. 결과 반환 및 검색 이력 저장
  5. 성공 시 칭호 체크 및 부여

🚀 시작하기

필수 조건

  • 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

🤝 기여 방법

  1. 이 저장소를 포크합니다.
  2. 새 기능 브랜치를 만듭니다 (git checkout -b feature/amazing-feature).
  3. 변경 사항을 커밋합니다 (git commit -m 'Add some amazing feature').
  4. 브랜치를 푸시합니다 (git push origin feature/amazing-feature).
  5. Pull Request를 열어주세요.

📝 라이센스

이 프로젝트는 MIT 라이센스를 따릅니다.


대전 해커톤 2024에서 개발

개발사진

image

image

image

image

image

image

image

About

STDve 대전시 해커톤 "atomix" Backend repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%