
νλ£¨κ° λ€λ₯΄κ² AI λ λ°μ νκ³ μμ§λ§, μ μ λ΄κ° κ²½νν AI λ μ κ·Έλ₯ λλνμ§ μλ€κ³ λκ»΄μ§κΉ?
λ°λ‘ κ·Έ μ΄μ λ AIλ λ΄ λ¨Έλ¦Ώμμ λ§₯λ½(
context) π μ 곡μ νκ³ μμ§ λͺ»νκΈ° λλ¬Έμ΄λ€.
μ°λ¦¬λ λνλ₯Ό ν λ, λ΄μ© μμ λ§₯λ½μ κΈ°λ°μΌλ‘ μ μΆνλ©΄μ μ΄μΌκΈ°λ₯Ό μ΄μ΄λκ°λ€.
νμ§λ§ μ°λ¦¬μ λννλ AI λ κ·Έλ΄ μ μκ³ , μ°λ¦¬λ κ³§μ λ΅λ΅ν¨μ λλλ€.
ex. "μ΅λν κ°λ¨νκ² μμ±ν΄μ€." - "μ΅λν κ°λ¨νκ²κ° λͺ κΈμμΈλ°μ?"
λ°λΌμ, AI λ₯Ό μ΅λν μ νμ©νκΈ° μν΄μλ μ°λ¦¬μ λ§₯λ½μ 곡μ ν΄μΌ νλ€.
μ΄κ²μ΄ λͺ
μμ μ΄κ³ ꡬ쑰νλ μ§μκ° νμν μ΄μ μ΄κ³ , prompt λ μ΄κ²μ AI μκ² μ λ¬ν μ μλ λꡬμ΄λ€.
Programming μμλ μ¬λκ³Ό AI κ° μκ°νλ νλ‘μΈμ€λ λ€μκ³Ό κ°μ μ°¨μ΄κ° μλ€.
π§βπ¨ μ¬λ
"CRUD API λ§λ€μ΄μΌμ§" β (λ¨Έλ¦Ώμ) λ μ΄μ΄ λΆλ¦¬, 보μ, ν μ€νΈ... β β μμ ν μ½λ μμ±
π€ AI
"CRUD API" β νμ΅ λ°μ΄ν°μμ κ°μ₯ μ μ¬ν ν¨ν΄ μ°ΎκΈ° β ν¨ν΄ 볡μ β β 컨ν μ€νΈ λΆμ‘±μΌλ‘ λ¨μνλ μ½λ μμ±
λ°λΌμ, AI μκ² λ΄ λ¨Έλ¦Ώμμ μκ°μ λκΈ°ν μν€λ €λ©΄ λ§₯λ½(context)μ 곡μ μμΌμΌ νλ€.
μ΄λ₯Ό μ€λͺ ν μ μλ μλ¨μ prompt μΈ κ²μ΄λ€.
κ°λ°μ λ΅κ² project μ μ μ©μν¬ prompt λ₯Ό μμλ‘ λ€μ΄λ³΄μ.
μ¬μ©μ κ΄λ¦¬ APIλ₯Ό λ§λ€μ΄μ€.
<role>
Spring Boot, JPA, RESTful API
<project_context>
- νλ‘μ νΈ: E-commerce νλ«νΌ
- κΈ°μ μ€ν: Spring Boot 3.2, Java 17, PostgreSQL, Gradle
- μν€ν
μ²: Layered Architecture (Controller β Service β Repository)
- μΈμ¦: JWT κΈ°λ°
<task>
User λλ©μΈμ μν CRUD APIλ₯Ό ꡬν
<requirements>
1. RESTful μ€κ³ μμΉ μ€μ
2. DTO ν¨ν΄ μ¬μ© (Entity μ§μ λ
ΈμΆ κΈμ§)
3. μ
λ ₯ κ²μ¦ (@Valid μ¬μ©)
4. κΈλ‘λ² μμΈ μ²λ¦¬
5. λΉλ°λ²νΈλ BCryptλ‘ μνΈν
<constraints>
- νλμ νμΌμ λͺ¨λ μ½λλ₯Ό λ£μ§ λ§ κ²
- κ° λ μ΄μ΄λ³λ‘ νμΌ λΆλ¦¬ (Controller, Service, Repository, DTO, Entity)
- ν¨ν€μ§ ꡬ쑰: com.ecommerce.user.*
<output_format>
νμΌλ³λ‘ μ½λλ₯Ό ꡬλΆνμ¬ μ 곡:
1. User.java (Entity)
2. UserDTO.java
3. UserRepository.java
4. UserService.java
5. UserController.java
6. GlobalExceptionHandler.java
π‘ .md νμΌμ νλ‘μ νΈμ μ€νμ λͺ μνλ©΄ μ’λ€.
μ΄ μ½λλ₯Ό 리ν©ν λ§ν΄μ€. λ μ’κ² λ§λ€μ΄.
public class OrderService {
public void processOrder(Order order) {
// ... 100μ€μ 볡μ‘ν μ½λ
}
}
<task>
λ€μ OrderService μ½λλ₯Ό 리ν©ν λ§
<current_problems>
1. processOrder λ©μλκ° 100μ€ μ΄μ (Single Responsibility μλ°)
2. λΉμ¦λμ€ λ‘μ§, μΈλΆ API νΈμΆ, DB μ κ·Όμ΄ λͺ¨λ μμ¬μμ
3. ν
μ€νΈκ° μ΄λ €μ (μμ‘΄μ±μ΄ νλμ½λ©λ¨)
4. νΈλμμ
κ²½κ³κ° λΆλͺ
νν¨
<refactoring_goals>
1. λ©μλλ₯Ό 5κ° μ΄νμ μμ λ©μλλ‘ λΆν΄
2. κ° λ©μλλ νλμ μ±
μλ§ κ°μ ΈμΌ ν¨
3. μΈλΆ API νΈμΆμ λ³λ ν΄λμ€λ‘ λΆλ¦¬ (PaymentClient, InventoryClient)
4. @Transactional μ μ ν μ μ©
5. μμ‘΄μ± μ£Όμ
μΌλ‘ ν
μ€νΈ κ°λ₯νκ² κ°μ
<coding_standards>
- λ©μλλͺ
: λμ¬λ‘ μμ (validateStock, deductInventory)
- λ³μλͺ
: camelCase, μλ―Έμλ μ΄λ¦ μ¬μ©
- μ£Όμ: 볡μ‘ν λΉμ¦λμ€ λ‘μ§μλ§ μΆκ°
- λ§€μ§ λλ² μ¬μ© κΈμ§ (μμλ‘ μ μ)
π‘ .md νμΌμ λ³ΈμΈμ κ°λ° μ² νμ λͺ μνλ©΄ μ’λ€.
<task>
λ§μ΄ν¬λ‘μλΉμ€ νκ²½μμ μ£Όλ¬Έ μμ± λ‘μ§μ ꡬν
<scenario>
μ£Όλ¬Έ μμ± μ λ€μ μμ
μ΄ μμμ μΌλ‘ μνλμ΄μΌ ν¨:
1. Order Service: μ£Όλ¬Έ μμ±
2. Inventory Service: μ¬κ³ μ°¨κ°
3. Payment Service: κ²°μ μ²λ¦¬
4. Notification Service: μλ¦Ό λ°μ‘
<thinking_process>
λ€μ μμλλ‘ μκ°νκ³ λ΅λ³
<step1>
λ¬Έμ λΆμ:
- μ΄λ€ λΆμ° νΈλμμ
ν¨ν΄μ΄ μ ν©νκ°? (2PC, Saga, Event Sourcing)
- κ° ν¨ν΄μ μ₯λ¨μ μ?
- μ΄ μλ리μ€μ κ°μ₯ μ ν©ν ν¨ν΄μ?
<step2>
ν¨ν΄ μ ν μ΄μ :
- μ νν ν¨ν΄μ΄ μ΄ μλ리μ€μ μ ν©ν μ΄μ
- λ€λ₯Έ ν¨ν΄μ λ°°μ ν μ΄μ
<step3>
ꡬν μ€κ³:
- μ΄λ€ μ»΄ν¬λνΈκ° νμνκ°?
- κ° μ»΄ν¬λνΈμ μ±
μμ?
- μ€ν¨ μλ리μ€λ³ 보μ νΈλμμ
μ?
<step4>
μ½λ ꡬν:
- Java μ½λλ‘ κ΅¬ν
- κ° λ¨κ³λ³ μ£Όμ μΆκ°
<constraints>
- Spring Boot μ¬μ©
- λ©μμ§: Kafka
- μ΅μ’
μΌκ΄μ±(Eventual Consistency) νμ©
π‘ .md νμΌμ AI μκ² μ€μ€λ‘ μ λ΅ n κ°μ§λ₯Ό μ§μ νκ³ , μ λ΅μ λ°λ₯Έ μ μλ₯Ό λΆλ°°νμ¬ μ μκ° λμ μ λ΅μ μννλλ‘ ν μ μλ€.
<task>
κ²°μ μ²λ¦¬ λ‘μ§μ ꡬν
<must_do>
β λ©±λ±μ±(Idempotency) 보μ₯ (λμΌ μμ² μ€λ³΅ μ²λ¦¬ λ°©μ§)
β PCI-DSS μ€μ (μΉ΄λ μ 보λ μ λ λ‘κ·Έμ λ¨κΈ°μ§ μμ)
β νΈλμμ
μμμ± λ³΄μ₯
β μ¬μλ λ‘μ§ ν¬ν¨ (μΈλΆ API μ€ν¨ μ)
β κ²°μ μνλ EnumμΌλ‘ κ΄λ¦¬
<must_not_do>
β μΉ΄λ λ²νΈλ₯Ό DBμ νλ¬Έ μ μ₯ κΈμ§
β κ²°μ κΈμ‘μ float/doubleλ‘ μ²λ¦¬ κΈμ§ (BigDecimal μ¬μ©)
β λκΈ° μ²λ¦¬λ‘ νμμμ λ°μνλ©΄ μλ¨ (λΉλκΈ° κΆμ₯)
β μμΈλ₯Ό catchλ§ νκ³ λ¬΄μνμ§ λ§ κ²
β νλμ½λ©λ API ν€ μ¬μ© κΈμ§
<implementation_requirements>
- μΈλΆ κ²°μ κ²μ΄νΈμ¨μ΄: Stripe API
- κ²°μ μ΄λ ₯ μ μ₯ νμ
- μ€ν¨ μ μλ¦Ό λ°μ‘
- ν
μ€νΈ μ½λ ν¬ν¨ (λͺ¨νΉ μ¬μ©)
π‘ .md νμΌμ νμ§ λ§μμΌ ν κ²μ μμ νλ κ²μ νμμ΄λ€.
λ°λ³΅μ μΈ μμ
μλ μ¬μ¬μ© κ°λ₯ν ν
νλ¦Ώ(.md)μ λ§λ λ€.
μ΄κ²μ΄ λ°λ‘ AGENTS.md νμΌμ΄λ€.
<task>
μν μ¬κ³ κ΄λ¦¬ κΈ°λ₯μ ꡬννμΈμ.
</task>
<business_requirements>
AS-IS: μ¬κ³ λ μλμΌλ‘ κ΄λ¦¬λλ©°, μ€μκ° μΆμ μ΄ λΆκ°λ₯
TO-BE:
- μ€μκ° μ¬κ³ μΆμ
- μ¬κ³ λΆμ‘± μ μλ μλ¦Ό
- μ¬κ³ νμ€ν 리 κ΄λ¦¬
- λμμ± μ μ΄ (λμ μ£Όλ¬Έ μ μ¬κ³ μ°¨κ° μ νμ± λ³΄μ₯)
</business_requirements>
<technical_requirements>
<tech_stack>
- Framework: Spring Boot 3.2
- Database: PostgreSQL 15
- Build Tool: Gradle 8
- Java Version: 17
</tech_stack>
<architecture>
- Pattern: Layered Architecture
- Communication: REST API
- Concurrency: Pessimistic Locking (μ¬κ³ μ°¨κ°)
</architecture>
<quality_requirements>
- Test Coverage: μ΅μ 85%
- Performance: μ¬κ³ μ‘°ν < 50ms, μ°¨κ° < 100ms
- Security: JWT κΈ°λ° μΈμ¦, ROLE_ADMINλ§ μ¬κ³ μΆκ°/μμ κ°λ₯
</quality_requirements>
</technical_requirements>
<specific_requirements>
1. λμμ± μ μ΄ μ λ΅
- λΉκ΄μ λ½ (Pessimistic Lock) μ¬μ©
- λ°λλ½ λ°©μ§ λ‘μ§ ν¬ν¨
2. μ¬κ³ λΆμ‘± μλ¦Ό
- μ¬κ³ κ° μμ μ¬κ³ λ(safety stock) μ΄νλ‘ λ¨μ΄μ§λ©΄ μ΄λ©μΌ λ°μ‘
- μλ¦Ό μ€λ³΅ λ°μ‘ λ°©μ§ (1μΌ 1ν)
3. νμ€ν 리 κ΄λ¦¬
- λͺ¨λ μ¬κ³ λ³λ μ΄λ ₯ μ μ₯
- λ³λ μ¬μ (μ£Όλ¬Έ, λ°ν, μ‘°μ λ±) κΈ°λ‘
</specific_requirements>
<deliverables>
1. [β] Inventory Entity (μ¬κ³ )
2. [β] InventoryHistory Entity (μ¬κ³ μ΄λ ₯)
3. [β] InventoryRepository (with Locking)
4. [β] InventoryService (λΉμ¦λμ€ λ‘μ§)
5. [β] InventoryController (API)
6. [β] InventoryDTO
7. [β] Custom Exception (InsufficientStockException)
8. [β] Unit Tests (Mockito)
9. [β] Integration Tests (Testcontainers)
10. [β] Concurrency Test (λ©ν°μ€λ λ νκ²½)
</deliverables>
κ·Έλ¦¬κ³ , μ΄λ―Έ κ³³κ³³μ best-practice .md νμΌλ€μ΄ μ¦λΉν΄μλ€.
λνμ μΌλ‘, Open AI νμμ 곡μ ν μν°ν΄ μ΄ μλ€.
κ²°κ΅, AI κ° μ½λ κΈμΈ ν둬ννΈλ κ°λ¨νλ€.
β ν΄μΌν κ²(νλ‘μ νΈμ μ€ν, μꡬμ¬ν, ..)κ³Ό β νμ§ λ§μμΌ ν κ²(μ μ μ¬ν)μ΄ λλμ΄μ Έμ μμ±λλ©΄ λλ€.
μ¬λμ΄ μ½μ κΈμ μ΄ν΄λ₯Ό λκΈ° μν΄ μ¬λ¬ λ―Έμ¬μ΄κ΅¬λ 보좩 μλ£κ° νκ·Έλ μ μλ€.
νμ§λ§ AI μ κ²½μ°λ κ·Έλ΄ νμλ μμ λΏλλ¬ κ·Έλμλ μλλ€.
μ§κ΄μ μ΄μ§ μμ λ§μ content λ μ€νλ € AI λ₯Ό νΌλμ€λ½κ² ν μ μκ³ , AI μκ² λ³΄λ΄λ request νλνλκ° λμΌλ‘ μ§κ²°λκΈ° λλ¬Έμ΄λ€.
λ°λΌμ, AI λ₯Ό λ³΄λ€ μ νμ©νκΈ° μν΄μλ μ² μ ν AI λ₯Ό κ³ λ €ν prompt λ₯Ό μ¬μ©ν΄μΌ νλ€.