Skip to content

s0ooo0k/AIBE1-FinalProject-Team01-BE

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1,219 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฏ Amateurs

Amateurs Logo

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ์ˆ˜๊ฐ•์ƒ๋“ค์„ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ

GitHub last commit GitHub issues GitHub pull requests Coverage Java Spring Boot


๐ŸŒŸ ์„œ๋น„์Šค ์†Œ๊ฐœ

Amateurs๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ์ˆ˜๊ฐ•์ƒ๋“ค์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ๋‹จ์ˆœํ•œ ์ •๋ณด ๊ณต์œ ๋ฅผ ๋„˜์–ด, AI ๊ธฐ์ˆ ๋กœ ๊ฐœ์ธํ™”๋œ ์ถ”์ฒœ๊ธ€์„ ์ œ๊ณตํ•˜๊ณ ,
์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ƒํƒœ๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

โœจ Why Amateurs?

  • ๐Ÿค– AI ๋งž์ถค ์ถ”์ฒœ: ๊ฐœ์ธ ๊ด€์‹ฌ์‚ฌ ๊ธฐ๋ฐ˜ ๊ฒŒ์‹œ๊ธ€ ์ž๋™ ํ๋ ˆ์ด์…˜
  • โšก ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…: WebSocket ์ฑ„ํŒ… & SSE ์•Œ๋ฆผ์œผ๋กœ ์ฆ‰๊ฐ์ ์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜
  • ๐Ÿ” ์Šค๋งˆํŠธ ์ธ์ฆ: OCR + AI ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ†ตํ•œ ์ž๋™ ์ˆ˜๊ฐ•์ƒ ์ธ์ฆ
  • ๐Ÿ“Š ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜: ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ถ„์„์„ ํ†ตํ•œ ์ง€์†์ ์ธ UX ๊ฐœ์„ 

๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜


๐Ÿš€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

๐Ÿค– AI ๊ธฐ๋ฐ˜ ๊ฒŒ์‹œ๊ธ€ ๋งž์ถค ์ถ”์ฒœ

  • ๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ๋ถ„์„์œผ๋กœ ๊ฐœ์ธํ™”๋œ ์ฝ˜ํ…์ธ  ์ถ”์ฒœ
  • LangChain4j + Gemini ๋ชจ๋ธ ํ™œ์šฉ
  • ์‹ค์‹œ๊ฐ„ ์ž„๋ฒ ๋”ฉ ์—…๋ฐ์ดํŠธ๋กœ ์ตœ์‹  ํŠธ๋ Œ๋“œ ๋ฐ˜์˜
@Service
public class PostRecommendService {
    
    @Autowired
    private EmbeddingStore<TextSegment> embeddingStore;
    
    public List<PostResponseDTO> recommendPosts(Long userId) {
        UserProfile profile = aiProfileService.getProfile(userId);
        List<EmbeddingMatch<TextSegment>> matches = 
            embeddingStore.findRelevant(profile.getEmbedding(), 10);
        return matches.stream()
            .map(this::convertToPostDTO)
            .collect(toList());
    }
}

โšก ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

  • WebSocket + STOMP ๊ธฐ๋ฐ˜ 1:1 ์ฑ„ํŒ…
  • SSE ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ
  • MongoDB ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ์˜๊ตฌ ์ €์žฅ
@MessageMapping("/chat/{roomId}")
public void sendMessage(@DestinationVariable String roomId, 
                       @Payload DirectMessageRequest request) {
    DirectMessageResponse response = 
        directMessageService.saveMessage(request);
    
    messagingTemplate.convertAndSend(
        "/topic/room/" + roomId, response);
    
    // ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์ „์†ก
    sseService.sendAlarm(response.getReceiverId(), 
                        createAlarm(response));
}

๐Ÿ” ์Šค๋งˆํŠธ ์ˆ˜๊ฐ•์ƒ ์ธ์ฆ ์‹œ์Šคํ…œ

OCR + AI ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ†ตํ•œ ์™„์ „ ์ž๋™ํ™”๋œ ์ธ์ฆ ํ”„๋กœ์„ธ์Šค

sequenceDiagram
    participant User
    participant API
    participant OCR
    participant AI
    participant DB
    
    User->>API: ์ˆ˜๋ฃŒ์ฆ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
    API->>OCR: ํ…์ŠคํŠธ ์ถ”์ถœ ์š”์ฒญ
    OCR-->>API: ์ถ”์ถœ๋œ ํ…์ŠคํŠธ
    API->>AI: ์ด๋ฏธ์ง€ ์œ ์‚ฌ๋„ ๋ถ„์„
    AI-->>API: ์œ ์‚ฌ๋„ ์ ์ˆ˜ (0-100)
    alt ์ ์ˆ˜ >= 80
        API->>DB: ์ธ์ฆ ์Šน์ธ
        API-->>User: ์ธ์ฆ ์™„๋ฃŒ
    else ์ ์ˆ˜ < 80
        API-->>User: ์ธ์ฆ ์‹คํŒจ
    end
Loading

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ


๐Ÿงช ํ…Œ์ŠคํŠธ & ํ’ˆ์งˆ๊ด€๋ฆฌ

ํ…Œ์ŠคํŠธ ์‹คํ–‰

# ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰
./gradlew test

# ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฆฌํฌํŠธ ์ƒ์„ฑ
./gradlew jacocoTestReport

# ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฒ€์ฆ (์ตœ์†Œ 50% ์š”๊ตฌ)
./gradlew jacocoTestCoverageVerification

๋ชจ๋“  PR์— ๋Œ€ํ•ด ์ตœ์†Œ 2๋ช… ์ด์ƒ ์Šน์ธ ํ•„์š”


๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

src/main/java/kr/co/amateurs/server/
โ”œโ”€โ”€ ๐Ÿ“ annotation/                          # ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜
โ”œโ”€โ”€ โš™๏ธ config/                              # ์„ค์ • ํด๋ž˜์Šค
โ”œโ”€โ”€ ๐ŸŽฎ controller/                          # REST API ์ปจํŠธ๋กค๋Ÿฌ
โ”œโ”€โ”€ ๐Ÿ“Š domain/                              # ๋„๋ฉ”์ธ ๋ชจ๋ธ
โ”œโ”€โ”€ ๐Ÿ—„๏ธ repository/                          # ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต
โ”œโ”€โ”€ ๐Ÿ’ผ service/                             # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณ„์ธต
โ”œโ”€โ”€ โŒ exception/                           # ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ”œโ”€โ”€ ๐Ÿ› ๏ธ handler/                             # ํ•ธ๋“ค๋Ÿฌ ํด๋ž˜์Šค
โ”œโ”€โ”€ ๐Ÿ”ง utils/                               # ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค
โ””โ”€โ”€ ๐Ÿš€ ServerApplication.java               # Spring Boot ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

๐Ÿ“š ๋ฌธ์„œ


๐Ÿ‘ฅ ํŒ€ ์†Œ๊ฐœ


๐ŸŽฏ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ์ƒ์„ฑํ˜• AI ๋ฐฑ์—”๋“œ 1๊ธฐ ์ตœ์ข… ํ”„๋กœ์ ํŠธ

Made with โค๏ธ by Team ์œผ์“ฑ์ด๋“ค

โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด Star๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”! โญ

About

[๐ŸŽ–๏ธ์šฐ์ˆ˜ ํ”„๋กœ์ ํŠธ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ์ˆ˜๊ฐ•์ƒ๋“ค์„ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 99.4%
  • Other 0.6%