Amateurs๋ ํ๋ก๊ทธ๋๋จธ์ค ๋ฐ๋ธ์ฝ์ค ์๊ฐ์๋ค์ ์ํด ๋ง๋ค์ด์ง ์ปค๋ฎค๋ํฐ ํ๋ซํผ์ ๋๋ค.
๐ก ๋จ์ํ ์ ๋ณด ๊ณต์ ๋ฅผ ๋์ด, AI ๊ธฐ์ ๋ก ๊ฐ์ธํ๋ ์ถ์ฒ๊ธ์ ์ ๊ณตํ๊ณ ,
์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ์ ์ ๊ณตํด ํจ๊ป ์ฑ์ฅํ๋ ๊ฐ๋ฐ์ ์ํ๊ณ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- ๐ค AI ๋ง์ถค ์ถ์ฒ: ๊ฐ์ธ ๊ด์ฌ์ฌ ๊ธฐ๋ฐ ๊ฒ์๊ธ ์๋ ํ๋ ์ด์
- โก ์ค์๊ฐ ์ฑํ : WebSocket ์ฑํ & SSE ์๋ฆผ์ผ๋ก ์ฆ๊ฐ์ ์ธ ์ปค๋ฎค๋์ผ์ด์
- ๐ ์ค๋งํธ ์ธ์ฆ: OCR + AI ์ด๋ฏธ์ง ๋ถ์์ ํตํ ์๋ ์๊ฐ์ ์ธ์ฆ
- ๐ ๋ฐ์ดํฐ ๊ธฐ๋ฐ: ์ฌ์ฉ์ ํ๋ ๋ถ์์ ํตํ ์ง์์ ์ธ UX ๊ฐ์
@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());
}
} |
@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
|
|
# ์ ์ฒด ํ
์คํธ ์คํ
./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 ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์
- ๐ API ๋ฌธ์ - Swagger UI
- ๐ฏ ์ฝ๋ฉ ์ปจ๋ฒค์ - ๊ฐ๋ฐ ํ์ค ๊ฐ์ด๋
- ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ด๋ - DB ์ค๊ณ ์์น
- โก JOOQ ๊ฐ์ด๋ - ํ์ ์์ SQL ์์ฑ๋ฒ







