Skip to content

๐Ÿ”€ develop -> main ๋ณ‘ํ•ฉ#52

Merged
zzuhannn merged 87 commits into
mainfrom
develop
May 14, 2026
Merged

๐Ÿ”€ develop -> main ๋ณ‘ํ•ฉ#52
zzuhannn merged 87 commits into
mainfrom
develop

Conversation

@zzuhannn
Copy link
Copy Markdown
Member

๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ main์— ๋ณ‘ํ•ฉ

zzuhannn and others added 30 commits April 30, 2026 22:48
BaseEntity์˜ @CreatedDate/@LastModifiedDate๊ฐ€ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋„๋ก
@EnableJpaAuditing ํ™œ์„ฑํ™”
vocab ๋„๋ฉ”์ธ service ํŒจํ‚ค์ง€๊ฐ€ web/message/kafka์— ์˜์กดํ•˜์ง€ ์•Š๋Š”์ง€
ArchUnit์œผ๋กœ ์ž๋™ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ testImplementation ์ถ”๊ฐ€
๋™ํ™” ํŽ˜์ด์ง€์˜ ์–ด๋ ค์šด ๋‹จ์–ด + ํ’€์ด ์ €์žฅ.
UNIQUE(fairytale_id, word) ์ œ์•ฝ์œผ๋กœ first-occurrence-wins ๋ณด์žฅ.
- existsByFairytaleIdAndWord: ์ค‘๋ณต ๋‹จ์–ด pre-check
- findByFairytaleIdOrderByPageNoAsc: ๋ˆ„์  ๋‹จ์–ด์žฅ ํŽ˜์ด์ง€ ์ˆœ ์กฐํšŒ
- VocabErrorCode enum (PARAGRAPH_NOT_FOUND_FOR_VOCAB, VOCAB_FORBIDDEN, VOCAB_EXTRACT_FAILED)
- ParagraphNotFoundForVocabException
- VocabForbiddenException
5-state Status enum (SAVED/DUPLICATE/NO_DIFFICULT_WORD/EXTRACTION_FAILED/RACE_SKIPPED)
service ํŒจํ‚ค์ง€๊ฐ€ web/message์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์ž์ฒด DTO ์‚ฌ์šฉ.
๋‹จ์–ด์žฅ ์ถ”์ถœ ์‹œ ํŠน์ • ํŽ˜์ด์ง€์˜ ๋ฌธ์žฅ๋งŒ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ.
๊ธฐ์กด findByFairytaleIdOrderByPageAsc๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€.
๋‹จ์–ด์žฅ ์ถ”์ถœ์šฉ ๋ณ„๋„ RestTemplate ๋ถ„๋ฆฌ (connect 1s / read 4s).
๊ธฐ์กด restTemplate์€ ๊ทธ๋ž˜ํ”„ ์ถ”์ถœ์šฉ์œผ๋กœ ๊ทธ๋Œ€๋กœ ์œ ์ง€.
- VocabExtractRequest/Response DTO
- timeout/5xx ์‹œ 1ํšŒ retry, 4xx๋Š” ์ฆ‰์‹œ ์‹คํŒจ
- @PostConstruct warmup์œผ๋กœ cold-start ๋น„์šฉ ์‚ฌ์ „ ํก์ˆ˜
- ํ˜ธ์ถœ์ž์— ์˜ˆ์™ธ ์ „ํŒŒํ•˜์ง€ ์•Š๊ณ  Optional.empty()๋กœ fail-open
- processSentences: 3๋ฌธ์žฅ โ†’ LLM ๋‹จ์–ด/ํ’€์ด ์ถ”์ถœ โ†’ DB ์ €์žฅ (5-state ๊ฒฐ๊ณผ)
- getVocab: ๋ณธ์ธ ๋™ํ™” ๋ˆ„์  ๋‹จ์–ด์žฅ ํŽ˜์ด์ง€ ์ˆœ ์กฐํšŒ
- DataIntegrityViolationException catch๋กœ race condition ์ฒ˜๋ฆฌ
- carrier-agnostic: web/dto, kafka/message์— ์˜์กดํ•˜์ง€ ์•Š์Œ
- WordEntryRes DTO (record + from/listOf ์ •์  ํŒฉํ† ๋ฆฌ)
- GET /api/fairytales/{fairytaleId}/vocab โ€” ์ธ์ฆ๋œ ๋ณธ์ธ ๋™ํ™”๋งŒ ์กฐํšŒ ๊ฐ€๋Šฅ
/internal/** ๊ฒฝ๋กœ๋ฅผ ์ธ์ฆ ์—†์ด ํ†ต๊ณผ์‹œํ‚ค๋Š” ๋ณ„๋„ SecurityFilterChain.
@Profile("dev") + @order(HIGHEST_PRECEDENCE)๋กœ ์šด์˜ ํ™˜๊ฒฝ์—” ์˜ํ–ฅ ์—†์Œ.
POST /internal/vocab/process
- ์นดํ”„์นด ์—†์ด ๋‹จ์–ด์žฅ ์ถ”์ถœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋‹จ๋… ํ˜ธ์ถœ ๊ฐ€๋Šฅ
- @Profile("dev")๋กœ ์šด์˜ ํ™˜๊ฒฝ์—” ๋ฏธ๋“ฑ๋ก
- @PostConstruct์—์„œ ๋“ฑ๋ก ์‚ฌ์‹ค INFO ๋กœ๊ทธ๋กœ ๋…ธ์ถœ
vocab.service ํŒจํ‚ค์ง€๊ฐ€ web/message/kafka/servlet์— ์˜์กดํ•˜์ง€ ์•Š์Œ์„
ArchUnit์œผ๋กœ ๋นŒ๋“œ ์‹œ์ ์— ์ž๋™ ๊ฒ€์ฆ.
Phase 2 ์นดํ”„์นด ์–ด๋Œ‘ํ„ฐ ์ถ”๊ฐ€ ์‹œ์—๋„ service ๋ณ€๊ฒฝ ์—†์Œ์„ ๊ฐ•์ œ ๋ณด์žฅ.
dev ํ”„๋กœํ•„ ํ™œ์„ฑํ™” ์‹œ ๋™์ž‘๊ณผ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ํ™œ์„ฑํ™” ๊ธˆ์ง€ ์•ˆ๋‚ด.
โ€ฆfkaTemplate๋กœ ๋ฉ”์„ธ์ง€ ๋ถ€๋ถ„์„ MessageInterface๋กœ ๋Ÿฐํƒ€์ž„์— ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๊ฒŒ ํ•˜์—ฌ ๋™์  ๋‹คํ˜•์„ฑ ์„ค๊ณ„
feat: JpaAuditingConfig ์ถ”๊ฐ€
LgE02 and others added 28 commits May 10, 2026 16:19
Feat: image&done kafka Consumer ์ถ”๊ฐ€
- KafkaConsumerConfig: develop์˜ String ์ปจ์Šˆ๋จธ + ์šฐ๋ฆฌ vocab JSON ์ปจ์Šˆ๋จธ ๋‘ ๊ฐœ ๋ชจ๋‘ ๋“ฑ๋ก (@EnableKafka ์ถ”๊ฐ€)
- EventService: develop์˜ Fairytale ๋ฏธ๋ฆฌ INSERT + fairytaleId ํฌํ•จ ๋ฉ”์‹œ์ง€ ๊ทธ๋Œ€๋กœ ์ˆ˜์šฉ (์šฐ๋ฆฌ @Profile("!dev")๋งŒ ์ถ”๊ฐ€)
- FairytaleCheckServiceImpl: develop์˜ markTotalPages/SENT_KEY/TOTAL_KEY ์ง„ํ–‰๋ฅ  ์ถ”์  + ์šฐ๋ฆฌ forceVocabIfStale image-side fallback ๋‘˜ ๋‹ค ๋ณด์กด
feat : vocab ๋„๋ฉ”์ธ Kafka Consumer ์—ฐ๋™ (#40)
feat : ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ฒŒ์ž„ ํ†ต์‹  ์ˆ˜๋‹จ ๋ณ€๊ฒฝ
@zzuhannn zzuhannn changed the title develop -> main ๋ณ‘ํ•ฉ ๐Ÿ”€ develop -> main ๋ณ‘ํ•ฉ May 14, 2026
@zzuhannn zzuhannn merged commit c9f44e1 into main May 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants