-
Notifications
You must be signed in to change notification settings - Fork 34
Round2 #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: JVHE
Are you sure you want to change the base?
Round2 #69
Conversation
WalkthroughBE L2 Round 2 λλ©μΈ μ€κ³ λ° κΈ°μ λ¬Έμ μμ±μ μν μ’ ν© λ¬Έμλ₯Ό μΆκ°ν©λλ€. e-commerce νλ«νΌμ μꡬμ¬ν, μνμ€ λ€μ΄μ΄κ·Έλ¨, ν΄λμ€ λ€μ΄μ΄κ·Έλ¨, ERD μ€κ³ λ° νμ€νΈ κ°μ΄λλ₯Ό ν¬ν¨ν©λλ€. Changes
Estimated code review effortπ― 1 (Trivial) | β±οΈ ~3 minutes
Poem
Pre-merge checks and finishing touchesβ Failed checks (1 inconclusive)
β Passed checks (2 passed)
β¨ Finishing touches
π§ͺ Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
π§Ή Nitpick comments (12)
docs/week2/01-requirements.md (4)
124-150: μ’μμ κΈ°λ₯μ λ©±λ±μ±(Idempotency) λͺ μ νμ.νμ¬ κΈ°λ³Έ μꡬμ¬ν(137-139ν)μμ "λ±λ‘νκ³ , μ·¨μλ©΄ μ’μμλ₯Ό μμ νλ€"λ ννλ§ μμ΄ ν κΈ λμμ λ©±λ±μ±μ΄ λͺ ννμ§ μμ΅λλ€.
"λ©±λ±μ± λμ μ§μ"μ΄λΌλ ννμ μμ§λ§, μ€μ μ€κ³ μ μ€μν μ μ½ μ¬νμ΄ μμ΅λλ€. νμ΅μλ€μ΄ λ€μμ μ΄ν΄νλλ‘ λͺ μνλ©΄ μ’κ² μ΅λλ€:
- κ°μ μ¬μ©μκ° λμΌ μνμ λν΄ λμΌν μ’μμ μμ²μ μ¬λ¬ λ² λ³΄λ΄λ μ΅μ’ μνλ λμΌν΄μΌ ν¨
- μ΄λ₯Ό μν΄ μ’μμ μ‘΄μ¬ μ¬λΆλ₯Ό λ¨Όμ νμΈν ν create/delete λ‘μ§μ΄ νμν¨
- μ΄λ λ¨μ toggleμ΄ μλλΌ μν κΈ°λ° λ©±λ± μ°μ°μ
λ€μκ³Ό κ°μ΄ μ μ½μ¬ν μΉμ μ κ°ννλ©΄ νμ΅μμ μ€κ³ λ°©ν₯μ΄ λ λͺ νν΄μ§ κ² κ°μ΅λλ€:
#### μ μ½μ¬ν μ’μμλ μνλ³λ‘λ§, λΈλλ μ’μμλ μ μΈ. μ΅λ μ’μμ μ μ ν μμ. **λ©±λ±μ± μꡬμ¬ν (μ€μ)**: - κ°μ μ¬μ©μκ° λμΌ μνμ λν΄ μ¬λ¬ λ² μ’μμ μμ²μ 보λ΄λ μ΅μ’ μνλ λμΌν΄μΌ ν¨ - μμ² 1: `POST /products/{id}/like` β μ’μμ λ±λ‘ (μν λ³κ²½) - μμ² 1 μ¬μ μ‘: `POST /products/{id}/like` β μ΄λ―Έ μ’μμλ¨, μν λ³κ²½ μμ (λμΌ κ²°κ³Ό)μ΄λ κ² νλ©΄ RabbitMQ, λ€νΈμν¬ μ¬μλ λ± μ€λ¬΄μμμ λ©±λ±μ± νμμ±κ³Όλ μμ°μ€λ½κ² μ°κ²°λ©λλ€.
[/suggest_recommended_refactor]
151-176: μ£Όλ¬Έ μμ± μ λμμ± λ¬Έμ (Race Condition) μ€κ³ κ°μ΄λ λΆμ¬.νμ¬ κΈ°λ³Έ μꡬμ¬ν(167-169ν)μμ "μ¬κ³ μ°¨κ°", "ν¬μΈνΈ μ°¨κ°"λ§ λͺ μλμ΄ μμ§λ§, μ€λ¬΄ e-commerceμ ν΅μ¬ λ¬Έμ μΈ λμμ± μ μ΄κ° μΆ©λΆν λ€λ£¨μ΄μ§μ§ μμ΅λλ€.
λ μ¬μ©μκ° λ§μ§λ§ μ¬κ³ μνμ λμμ ꡬ맀νλ € ν λ, μ¬κ³ νμΈκ³Ό μ°¨κ° μ¬μ΄μ race conditionμΌλ‘ μΈν΄ μ΅μ’ μ¬κ³ κ° μμκ° λ μ μμΌλ©°, λΆμ° μ κΈμ ν΅ν΄ μ¬κ³ μ λ°μ΄νΈκ° μμμ μ΄κ³ μΌκ΄μ± μκ² λ³΄μ₯λμ΄μΌ ν©λλ€.
λ€μ λ΄μ©μ TBD λλ μ μ½μ¬ν μΉμ μ μΆκ°νλ©΄ μ’κ² μ΅λλ€:
#### TBD: νμ¬ κ³ λ € μ€μΈ μΆκ° μꡬμ¬ν - **λμμ± μ μ΄ (Concurrency Control)** - λ μ¬μ©μκ° λμμ λ§μ§λ§ μ¬κ³ λ₯Ό ꡬ맀 μλν λ μ²λ¦¬ λ°©μ - μ¬κ³ νμΈ(`SELECT`)κ³Ό μ°¨κ°(`UPDATE`)μ΄ μμμ μΌλ‘ μνλμ΄μΌ ν¨ - μ: `UPDATE products SET stock = stock - 1 WHERE id = ? AND stock > 0` - μ€ν¨ μ λͺ νν "νμ " μλ¬ λ°ν #### μ μ½μ¬ν - μ¬κ³ κ° 0 μ΄νλ‘ λ¨μ΄μ§μ§ μμμΌ ν¨ (μμ μ¬κ³ λ°©μ§) - μ¬κ³ νμΈκ³Ό μ°¨κ° μ¬μ΄μ race condition λ°©μ§μ΄λ₯Ό ν΅ν΄ νμ΅μλ€μ΄ μ€κ³ μ λμμ±μ κ³ λ €νκ³ , νμ ꡬν λ¨κ³μμ Lock μ λ΅(
pessimistic locking,optimistic locking)μ΄λ νΈλμμ 격리 μμ€μ μ ννλλ‘ μ λν μ μμ΅λλ€.[/suggest_recommended_refactor]
48-49: μ λ ¬ κΈ°λ₯μ μΈκΈ°μ μ μ λΆμ‘±.48νμ "μΈκΈ°μ: μ’μμ μ κΈ°μ€"μ μ’μ§λ§, λ€μμ΄ λΆλͺ νν©λλ€:
- μκ° λ²μ: μ 체 κΈ°κ°? μ΅κ·Ό 30μΌ?
- λμ μ²λ¦¬: μ’μμ μκ° κ°μ κ²½μ° μ΄λ»κ² μ λ ¬?
- μ λ ¬ κΈ°λ₯μ μ 곡ν΄μΌ νλ€. - κΈ°λ³Έ, μΈκΈ°μ: μ’μμ μ κΈ°μ€ (λμ μ λ±λ‘ μκ° μμ) - μ΅μ μ: λ±λ‘μκ° κΈ°μ€, κ°κ²©μ(μ€λ¦,λ΄λ¦Ό)μ΄λ κ² λͺ μνλ©΄ ꡬν μ μ λ ¬ μΏΌλ¦¬κ° λ λͺ νν΄μ§λλ€.
[/suggest_optional_refactor]
77-82: ν μΈ κ°κ²© κ³μ° μꡬμ¬νμ κ΅¬μ²΄μ± λΆμ‘±.77-82νμμ "μ‘°ν μ ν μΈ μ μ© κ°κ²©μ κ³μ°νμ¬ νμ"λΌκ³ λͺ μλμ΄ μμ§λ§:
- ν μΈ λ°μ΄ν°μ μΆμ²: DBμ μ μ₯? μΈλΆ μμ€ν ?
- ν μΈ μ°μ μμ: μ¬λ¬ ν μΈμ΄ μμ λ μ€λ³΅ μ μ© μ¬λΆ?
- νμ λ°©μ: μκ°/ν μΈκ° λͺ¨λ? ν μΈμ¨?
- μ‘°ν μ ν μΈ μ μ© κ°κ²©μ κ³μ°νμ¬ νμ. - ν μΈμ μνλ³ λλ μΉ΄ν κ³ λ¦¬λ³λ‘ κ΄λ¦¬λ¨μ κ°μ - API μλ΅μ ν¬ν¨ νλͺ©: μκ°(price), ν μΈκ°(discountedPrice), ν μΈμ¨(discountRate) - κ° μν μ΅λ 1κ° ν μΈλ§ μ μ© (μ°μ μμ: μν > μΉ΄ν κ³ λ¦¬)μ΄λ κ² κ΅¬μ²΄ννλ©΄ ERD/API μ€κ³ μ ν μΈ μν°ν° κ΅¬μ‘°κ° λ λͺ νν΄μ§λλ€.
[/suggest_optional_refactor]docs/week02.md (3)
113-160: μνμ€ λ€μ΄μ΄κ·Έλ¨ μμ μμ νΈλμμ /λμμ± μ²λ¦¬ λλ½.νμ¬ μ 곡λ μμ (131-153ν)λ μ’μμ ν κΈμ "ν볡ν κ²½λ‘(happy path)"λ§ λ³΄μ¬μ€λλ€. νμ΅μκ° μ€λ¬΄μ κ³ λ―Όμ νλλ‘ λ€μμ μΆκ°νλ©΄ μ’κ² μ΅λλ€:
μμ λ€μμ λ€μκ³Ό κ°μ μ£Όμμ μΆκ°νλ κ²μ κΆμ₯ν©λλ€:
### π¬ Mermaid μμ (κ³μ) **μ£Όμ: μ μμ λ λ¨μ νλ¦λ§ 보μ¬μ€λλ€** μ€μ ꡬν μ κ³ λ €μ¬ν: - **λ©±λ±μ±**: λ€νΈμν¬ μ¬μλλ‘ μΈν΄ toggleLike()κ° μ¬λ¬ λ² νΈμΆλ μ μμ β exists() μ²΄ν¬ νμ - **νΈλμμ **: μ’μμ μ μ λ°μ΄νΈμ μ’μμ λ μ½λ μμ±/μμ κ° μμμ μ΄μ΄μΌ ν¨ - **λμμ±**: κ°μ μ¬μ©μκ° rapid-fireλ‘ μμ² μ κ²½ν© μ‘°κ±΄(race condition) κ°λ₯μ±μ΄λ κ² νλ©΄ νμ΅μλ€μ΄ μ€κ³ β ꡬνμΌλ‘ λμ΄κ° λ "μ νΈλμμ μ΄ νμνκ°?", "μ select for updateκ° νμνκ°?"λΌλ μ§λ¬Έμ΄ μμ°μ€λ½κ² μκΉλλ€.
[/suggest_recommended_refactor]
163-213: ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ μμ μ λλ©μΈ μ± μ λΆμμ΄ νΌμμ .νμ¬ μμ (183-206ν)λ κ΅¬μ‘°λ§ λ³΄μ¬μ£Όκ³ , κ° λλ©μΈ κ°μ²΄μ μ± μμ΄ λͺ ννμ§ μμ΅λλ€.
μμ λ€μμ μ€λͺ μ μΆκ°νλ©΄ μ’κ² μ΅λλ€:
### π¬ μμ λΆμ **κ° ν΄λμ€μ μ± μ (λλ©μΈ μ£Όλ μ€κ³)**: - `Product`: μνμ κΈ°λ³Έ μ 보, κ°κ²© κ³μ° (μκ° vs ν μΈκ°) - `Brand`: λΈλλ μ 보 κ΄λ¦¬ - `Like`: μ¬μ©μ-μν κ΄κ³μ ꡬ체ν (aggregate λλ value object?) - `Member`: μ¬μ©μ μ 보 (μ’μμ κ΄λ¦¬λ μ¬κΈ°? Like μν°ν°?μ μμ?) **μ€κ³ κ³ λ―Όκ±°λ¦¬**: 1. Likeλ μν°ν°μΈκ° VOμΈκ°? - μν°ν°: ID νλ νμ, μλͺ μ£ΌκΈ° λ 립μ β CompositeKey(memberId, productId) - VO: Memberμ Productμ μμν κ΄κ³λ§ νν 2. μ’μμ μλ Productμ λΉμ κ·νν κ²μΈκ°? Like ν μ΄λΈμμ COUNTν κ²μΈκ°? - μ₯μ /λ¨μ νΈλ μ΄λμ€ν μ€λͺ νμμ΄λ κ² νλ©΄ "μ μ΄λ κ² μ€κ³νλκ°?"λΌλ μ§λ¬Έμ΄ μμ°μ€λ½μ΅λλ€.
[/suggest_recommended_refactor]
216-267: ERD μμ μμ λμμ± μ μ΄λ₯Ό μν μ»¬λΌ λλ½.μ£Όλ¬Έ/μ¬κ³ κ΄λ ¨ ERDμ΄ μλλ°, νμ΅μλ€μ΄ race conditionμ κ³ λ €ν μ€κ³λ₯Ό νλλ‘ λκΈ° μν΄ λ€μμ μ μν©λλ€.
"### β μμ£Ό κ²ͺλ μ€μ" μΉμ (262-267ν)μ λ€μμ μΆκ°νλ©΄ μ’κ² μ΅λλ€:
### β μμ£Ό κ²ͺλ μ€μ - λΉμ¦λμ€ νλ¦μ΄ λ°μλμ§ μμ μ κ·νλ§ μΆκ΅¬ - μ€λ³΅ λ°μ΄ν° μ κ±°λ§ μ§μ€ν΄ μ‘°ν JOINμ΄ κ³Όλν΄μ§ - μν μ»¬λΌ μμ β μ½λμμ νλμ½λ©μΌλ‘ ν΄κ²°ν¨ **+μΆκ°: λμμ±μ κ³ λ €νμ§ μμ ERD** - β Stock ν μ΄λΈλ§ μκ³ pessimistic lockμ΄λ version μ»¬λΌ κ³ λ € μ ν¨ - β Order μν μ μ΄(PENDING β CONFIRMED)μ μμμ± λ³΄μ₯ λ°©λ² μμ - β νΈλμμ 격리μ pessimistic lock (FOR UPDATE) λλ λ²μ κ΄λ¦¬ νμ **μμ: μμ ν μ¬κ³ μ°¨κ° μΏΌλ¦¬** ```sql -- Race condition λ°©μ§: select for update + atomic decrement SELECT * FROM products WHERE id = 1 FOR UPDATE; UPDATE products SET stock = stock - 1 WHERE id = 1 AND stock > 0; -- κ²°κ³Ό: 0 rows affectedλ©΄ νμ μ²λ¦¬μ΄λ₯Ό ν΅ν΄ ERD μ€κ³ ν ꡬν μ `@Lock(LockModeType.PESSIMISTIC_WRITE)` κ°μ JPA μ΄λ Έν μ΄μ μ΄ μ νμνμ§ μμ°μ€λ½κ² μ΄ν΄νκ² λ©λλ€. [/suggest_recommended_refactor] </blockquote></details> <details> <summary>docs/week02_quests.md (5)</summary><blockquote> `19-32`: **μ€κ³ λ²μμμ λ©±λ± λμκ³Ό μΈλΆ μμ€ν μ°λμ κ΅¬μ²΄μ± λΆμ‘±.** 19-26νμμ "λ©±λ± λμ μ§μ"κ³Ό "μΈλΆ μμ€ν μ°λ"μ΄ λͺ μλμ΄ μμ§λ§, νμ΅μκ° "μ΄κ² λ μλ―Ένλ κ±°μ§?"λΌκ³ λ¬Όμ κ°λ₯μ±μ΄ λμ΅λλ€. ```markdown ### π κ³Όμ μ 보 - **μ€κ³ λ²μ** - μν λͺ©λ‘ / μν μμΈ / λΈλλ μ‘°ν - μν μ’μμ λ±λ‘/μ·¨μ (λ©±λ± λμ): * κ°μ μ¬μ©μκ° λμΌν μ’μμ μμ²μ μ¬λ¬ λ² λ³΄λ΄λ μ΅μ’ μνλ λμΌ * μ: 첫 μμ² β μ’μμ λ±λ‘, μ¬μ μ‘ β μν λ³ν μμ - μ£Όλ¬Έ μμ± λ° κ²°μ νλ¦: * μ¬κ³ μ°¨κ° (λμ μμ² μ μ΄κ³Ό νλ§€ λ°©μ§) * ν¬μΈνΈ μ°¨κ° * μΈλΆ μμ€ν μ°λ (μ: κ²°μ κ²μ΄νΈμ¨μ΄, μ¬κ³ κ΄λ¦¬ μμ€ν ) * νΈλμμ λ‘€λ°± (μ¬κ³ /ν¬μΈνΈ 볡ꡬ)[/suggest_recommended_refactor]
μ΄λ κ² νλ©΄ νμ΅μλ€μ΄ μ€κ³ μ λ©±λ±μ±κ³Ό λΆμ° νΈλμμ μ μμ°μ€λ½κ² κ³ λ €νκ² λ©λλ€.
96-101: Feature Suggestionsμ λμμ±(Race Condition) νλͺ© μΆκ° μ μ.νμ¬ μ μ(96-101ν)μμ λ©±λ±μ±, λλ©μΈ λΆλ¦¬, ERD κ³ λ―Όμ μμ§λ§, μ€λ¬΄ e-commerceμ κ°μ₯ νν λ²κ·ΈμΈ λμμ± μ μ΄ κ³ λ―Όμ΄ λΉ μ Έ μμ΅λλ€.
### π― Feature Suggestions - μ’μμ κΈ°λ₯μ λ©±λ±μ±μ 보μ₯νκΈ° μν΄ μ΄λ»κ² μ€κ³ν μ μμκΉ? - μ£Όλ¬Έ μμ± μ μ¬κ³ /ν¬μΈνΈ μ°¨κ°μ μ΄λ»κ² μ°κ²°νλκ°? * **μΆκ°: λ μ¬μ©μκ° λμμ λ§μ§λ§ μ¬κ³ μνμ ꡬ맀 μλν λ μ΄λ»κ² μ²λ¦¬ν κΉ?** - μ¬κ³ νμΈκ³Ό μ°¨κ°μ΄ μμμ μΌλ‘ μ²λ¦¬λμ΄μΌ νλ μ΄μ λ? - Pessimistic vs Optimistic lockingμ μ₯λ¨μ ? - λλ©μΈ κ°μ²΄λ₯Ό μ΄λ»κ² λλκ³ μ± μμ μμνλκ°? - ERD μ€κ³ μ μ΄λ€ λΆλΆμμ κ³ λ―Όμ΄ μμλκ°? * **μΆκ°: νΈλμμ 격리 μμ€(Isolation Level)κ³Ό ERDμ κ΄κ³λ?**[/suggest_recommended_refactor]
μ΄λ κ² νλ©΄ νμ΅μλ€μ΄ λ¨μ "μꡬμ¬ν ꡬν"μ λμ΄ "μ μ΄λ° λ¬Έμ κ° λ°μνλκ°?", "μ΄λ»κ² ν΄κ²°νλκ°?"λ₯Ό κΉμ΄ μκ² κ³ λ―Όνκ² λ©λλ€.
42-48: 체ν¬λ¦¬μ€νΈ νλͺ© 46λ²μ μνμ€ λ€μ΄μ΄κ·Έλ¨ μ§νκ° λͺ¨νΈ."μ± μ κ°μ²΄κ° λλ¬λλκ°?"λΌλ ννμ΄ κ΅¬μ²΄μ μ΄μ§ μμ, νμ΅μκ° μ΄λ€ μμ€μ μ± μ λΆλ°°λ₯Ό κΈ°λνλμ§ λΆλͺ νν©λλ€.
## β Checklist - [ ] μν/λΈλλ/μ’μμ/μ£Όλ¬Έ λλ©μΈμ΄ λͺ¨λ ν¬ν¨λμ΄ μλκ°? - [ ] κΈ°λ₯ μꡬμ¬νμ΄ μ μ μ€μ¬μΌλ‘ μ 리λμ΄ μλκ°? - [ ] μνμ€ λ€μ΄μ΄κ·Έλ¨μμ μ± μ κ°μ²΄κ° λλ¬λλκ°? * (μ§ν) Controller β Service β Repository / Domainμ΄ λͺ νν μν λΆλ΄μ νκ³ μλκ°? * (μ§ν) κ° κ°μ²΄ κ° λ©μμ§ νλ¦μ΄ λ¨λ°©ν₯μΈκ°, μλλ©΄ 볡μ‘νκ² μ½ν μλκ°? - [ ] ν΄λμ€ κ΅¬μ‘°κ° λλ©μΈ μ€κ³λ₯Ό μ νννκ³ μλκ°? - [ ] ERD μ€κ³ μ λ°μ΄ν° μ ν©μ±μ κ³ λ €νμ¬ κ΅¬μ±νμλκ°? * (μ§ν) Foreign key, μ μ½(constraints), νΈλμμ 격리 μμ€μ΄ λͺ μλμ΄ μλκ°?[/suggest_recommended_refactor]
63-95: κΈ°μ λΌμ΄ν κ°μ΄λμ μ±κ³΅ μ¬λ‘ λΆμ¬."μ’μ ν€" μΉμ (77-87ν)μ μμλ§ μκ³ , μ€μ κ³Όμ λ²μμμ μ΄λ€ λ΄μ©μ μ¨μΌ νλμ§ κ΅¬μ²΄μ μΈ μκ° μμ΅λλ€.
λ€μ μμλ₯Ό μΆκ°νλ©΄ νμ΅μκ° λ ꡬ체μ μΌλ‘ λ°λΌν μ μμ΅λλ€:
### β¨ μ’μ ν€μ μ΄λ° λλμ΄μμ (Round 2 μμ) | νΉμ§ | Round 2 μ€κ³ μμ | | --- | --- | | π€ λ΄ μΈμ΄λ‘ μ€λͺ ν κ°λ | "Like κΈ°λ₯μ μ²μμ κ°λ¨ν toggleλ‘ κ΅¬ννλλ°, λ©±λ±μ±μ΄ 보μ₯λμ§ μμ μ¬μ€κ³νλ€" | | π νλ¨ νλ¦μ΄ λλ¬λλ κΈ | "μ£Όλ¬Έ μ μ¬κ³ νμΈκ³Ό μ°¨κ°μ λΆλ¦¬νλ€κ°, λμ ꡬ맀 μ μμ μ¬κ³ κ° λνλλ λ¬Έμ λ₯Ό λ°κ²¬ν΄ νΈλμμ μΌλ‘ κ°μΈκ² λμλ€" | | π μ 보 λμ΄λ³΄λ€ μΈμ¬μ΄νΈ μ€μ¬ | "μ²μμ Likeμ Productλ₯Ό 1:NμΌλ‘ μ°κ²°νλλ°, μ’μμ μλ₯Ό λΉ λ₯΄κ² μ‘°νν΄μΌ ν΄μ Productμ λΉμ κ·ννλ trade-offλ₯Ό κ³ λ―Όνλ€" |μ΄λ κ² νλ©΄ νμ΅μλ€μ΄ "μ, λ΄ μ€κ³ κ³ λ―Όλ μ΄λ κ² μ¨μΌ νλꡬλ"λΌκ³ μ΄ν΄ν©λλ€.
[/suggest_optional_refactor]
1-10: PR λ³Έλ¬Έμ λΉ ν νλ¦Ώ μ 보 μ 곡.νμ¬ PR λ³Έλ¬Έμ΄ λΉ λ§ν¬λ€μ΄ ν νλ¦Ώμ΄λΌλ PR λͺ©ν μ€λͺ μ΄ μλλ°, νμ΅μ κ°μ΄λμμ PR μ μΆ μ μ΄λ€ μ 보λ₯Ό ν¬ν¨ν κ²μ κΆμ₯νλμ§ λͺ μλμ§ μμμ΅λλ€.
λ€μ κ°μ΄λλ₯Ό μΆκ°νλ©΄ μ’κ² μ΅λλ€:
## π Round 2 Quests --- ### π PR μμ± κ°μ΄λ > PR μ λͺ©: `[2μ£Όμ°¨] μ€κ³ λ¬Έμ μ μΆ - νκΈΈλ` > **PR λ³Έλ¬Έμ ν¬ν¨ν μ¬ν**: > 1. **μ€κ³ μμ¬κ²°μ ** (κ° 1-2μ€) > - Like κΈ°λ₯μ λ©±λ±μ±μ μν΄ μν κΈ°λ° ν κΈ μ νν μ΄μ > - μ£Όλ¬Έ μ μ¬κ³ 보νΈλ₯Ό μν΄ μ νν λ½ μ λ΅ (Pessimistic/Optimistic) > 2. **κ³ λ―Όν μ§μ ** > - "μ΄ λΆλΆμ΄ μ΄λ €μ μ΅λλ€" λλ "μ¬λ¬ μ νμ§κ° μμμ΅λλ€" > 3. **νΌλλ°± ν¬μΈνΈ** > - 리뷰μ΄μκ² νΉν λ΄λ¬λΌκ³ νλ λΆλΆ μ΄λ κ² νλ©΄ 리뷰μ΄(κ°μ¬)κ° νμ΅μμ μ¬κ³ κ³Όμ μ μ΄ν΄νκ³ νΌλλ°±νκΈ° μ¬μμ§λλ€. [/suggest_optional_refactor] </blockquote></details> </blockquote></details> <details> <summary>π Review details</summary> **Configuration used**: CodeRabbit UI **Review profile**: CHILL **Plan**: Pro <details> <summary>π₯ Commits</summary> Reviewing files that changed from the base of the PR and between d5ec39748d141edbb4c1b43001d1f4ce2f6b0b4c and 52f798bfffd56cc5547efedbe95282e911023df1. </details> <details> <summary>π Files selected for processing (3)</summary> * `docs/week02.md` (1 hunks) * `docs/week02_quests.md` (1 hunks) * `docs/week2/01-requirements.md` (1 hunks) </details> <details> <summary>π§° Additional context used</summary> <details> <summary>π§ Learnings (1)</summary> <details> <summary>π Common learnings</summary>Learnt from: minor7295
Repo: Loopers-dev-lab/loopers-spring-java-template PR: 22
File: apps/commerce-api/src/main/java/com/loopers/interfaces/api/point/PointsV1Controller.java:24-34
Timestamp: 2025-10-31T14:57:09.157Z
Learning: In the loopers-spring-java-template repository, the X-USER-ID header-based user identification is temporarily used for learning purposes and will be replaced with proper authentication (Spring Security) in a future PR. Do not flag this as a security issue until proper authentication is implemented.</details> </details> </details> <details> <summary>π Additional comments (1)</summary><blockquote> <details> <summary>docs/week02.md (1)</summary><blockquote> `268-287`: **μ°Έκ³ μλ£ λ§ν¬κ° λͺ¨λ μ΅μ μΈμ§ νμΈ νμ.** μ°Έκ³ μλ£ μΉμ (275-280ν)μ λ§ν¬λ€μ΄ μ¬μ ν μ ν¨νμ§ νμΈνκ³ , νΉν λλ©μΈ μ£Όλ μ€κ³(DDD) κ΄λ ¨ νκ΅μ΄ μλ£κ° μΆ©λΆνμ§ κ²ν λ₯Ό μ μν©λλ€. λ€μ λ§ν¬λ€μ μ ν¨μ±μ νμΈν΄ μ£ΌμΈμ: - https://www.msaschool.io/operation/design/design-two/ (λλ©μΈ μ£Όλ μ€κ³) - https://mermaid.js.org/ (Mermaid 곡μ λ¬Έμ) λν λ€μμ μΆκ°νλ©΄ νμ΅μμκ² λμμ΄ λ κ² κ°μ΅λλ€: - νκ΅μ΄ DDD μμ /μν°ν΄ μΆμ² (λ²μλ³Έ λλ μλ¬Έ) - Mermaid νκ΅μ΄ νν λ¦¬μΌ [/request_verification] </blockquote></details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
π Summary
"μ°λ¦¬κ° ν¨κ» λ§λ€μ΄κ° λ¨ νλμ κ°μ± μ΄μ»€λ¨Έμ€"μ κ°λ¨ν κΈ°λ₯ μ€κ³λ₯Ό μ§ννμ΅λλ€.
μ€κ³ λ²μλ λ€μκ³Ό κ°μ΅λλ€.
μ§ν λ΄μ©μ reuquirementsμ sequence diagramμ λλ€.
π¬ Review Points
β Checklist
π References
Summary by CodeRabbit
λ¬Έμν