Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f872127
feat: 커서룰 추가
angielee0304 Jul 28, 2025
4acd5bd
chore: prettier, eslint 설정
angielxx Jul 28, 2025
86a8ba2
docs: docs에 리팩토링 규칙 문서, 리팩토링 계획 추가
angielxx Jul 28, 2025
eceb74d
refactor: var 변수 let, const로 변경
angielxx Jul 28, 2025
f8a0f2b
refactor: 제품 목록 상수화
angielxx Jul 28, 2025
1b4c7c2
chore: eslint airbnb 규칙 적용
angielxx Jul 28, 2025
f98e2c7
feat: ESLint, Prettier 설정 및 Airbnb 룰 적용
angielxx Jul 28, 2025
4cbe040
refactor: var 변수 제거
angielxx Jul 28, 2025
3a4dd7b
refactor: 변수 스코프 최소화
angielxx Jul 28, 2025
624228c
refactor: 매직 넘버 상수화 및 상수 파일 분리
angielxx Jul 28, 2025
eb9b938
test: 화요일 관련 테스트에서만 화요일로 설정하고, 나머지는 월요일로 유지
angielxx Jul 28, 2025
4ecb59f
refactor: 메인 UI 컴포넌트 분리
angielxx Jul 28, 2025
44a84dc
refactor: 타이머 관련 함수 분리
angielxx Jul 28, 2025
53a9d9f
chore: 렌더링 스냅샷 저장
angielxx Jul 28, 2025
b70992b
refactor: 메인 레이아웃 컴포넌트 App으로 분리
angielxx Jul 28, 2025
c74713a
refactor: 스냅샷 파일 수정
angielxx Jul 28, 2025
8ecec2f
refactor: docs 및 lib 추가
angielxx Jul 29, 2025
75f46bf
refactor: 토글, 오버레이 UI 컴포넌트화 분리
angielxx Jul 29, 2025
2990da3
refactor: onUpdateSelectOptions을 제거하고 UI 컴포넌트로 분리
angielxx Jul 29, 2025
f14ee39
refactor: 유틸 함수 분리
angielxx Jul 30, 2025
012826b
refactor: cartItem 컴포넌트 분리 및 스토어 작성
angielxx Jul 30, 2025
33cce7b
chore: advanced 앱 초기 설정
angielxx Jul 30, 2025
a486848
feat: 기본 UI 구조 완성
angielxx Jul 30, 2025
11f87dd
feat: 토글 오버레이 기능 구현
angielxx Jul 30, 2025
cefe1c2
feat: ProductData, Product 타입 정의 및 fetch 함수 구현
angielxx Jul 30, 2025
74c3aec
feat: 제품 선택 드랍다운 구현
angielxx Jul 30, 2025
10a87b5
feat: 제품 선택 및 장바구니 추가, 장바구니 렌더링
angielxx Jul 30, 2025
d304643
refactor: 모듈 구성을 개선하기 위해 배럴 익스포트 패턴 적용
angielxx Jul 30, 2025
05a4f75
feat: 선택된 제품 렌더링 시 초기화
angielxx Jul 30, 2025
7bc6fcc
feat: 재고 파악 및 재고 상태 렌더링
angielxx Jul 30, 2025
364f9fa
feat: 주문 목록 렌더링
angielxx Jul 30, 2025
083cc03
feat: 개별 및 대량 할인
angielxx Jul 30, 2025
065409f
feat: useDiscount 분리 및 할인율,할인정보 렌더링
angielxx Jul 31, 2025
5d262b4
feat: 할인 타이머 및 타이머 내부에서 제품 업데이트
angielxx Jul 31, 2025
f30f8f5
feat: 할인에 따른 장바구니 아이콘, 가격 렌더링
angielxx Jul 31, 2025
5c0ce6c
feat: 할인에 따른 주문 요약 가격 렌더링
angielxx Jul 31, 2025
15c2645
feat: 카트 아이템 가격 렌더링 통일
angielxx Jul 31, 2025
1f73ce4
feat: 주문 요약 할인 정보 렌더링
angielxx Jul 31, 2025
91a85b0
feat: 장바구니 수량 증가, 감소
angielxx Jul 31, 2025
2e5de27
feat: 적립된 포인트 상세 렌더링
angielxx Jul 31, 2025
b3c3af3
feat: 타이머 실행
angielxx Jul 31, 2025
419ce82
test: advanced 테스트 수정 및 올패스
angielxx Jul 31, 2025
962b961
chore: gh-pages 배포 설정
angielxx Jul 31, 2025
6b950ef
refactor: 주석으로 논리 구분 및 UI 업데이트 함수 분리
angielxx Jul 31, 2025
6daeee4
refactor: 변수 및 함수 네이밍 개선
angielxx Jul 31, 2025
0ccfab4
refactor: 상수 추가 적용
angielxx Jul 31, 2025
1d81eff
refactor: 불필요한 로직 제거 및 제품 찾기,장바구니 총량 유틸 적용
angielxx Jul 31, 2025
33f97b8
refactor: 로직 개선 및 함수 분리
angielxx Jul 31, 2025
37da6b2
refactor: 유틸함수 분리
angielxx Jul 31, 2025
fcad8c8
refactor: 조건 검증 로직 유틸 함수로 분리
angielxx Jul 31, 2025
a1f5ccf
refactor: 연관된 코드 그룹화
angielxx Jul 31, 2025
ab138a4
refactor: ES6 문법 적용
angielxx Jul 31, 2025
693750b
refactor: 계산 로직 훅으로 분리
angielxx Jul 31, 2025
fdcf35e
refactor: 중복 로직 공통화
angielxx Jul 31, 2025
6c61e41
refactor: 컴포넌트 구조 개선
angielxx Jul 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .cursor/rules/assignment.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
alwaysApply: true
---

# 절대 반드시 지켜야만 하는 절대적 원칙 (안지키면 다시해야함)

- 코드의 동작이나 구현이 바뀌면 안되고 반드시 구조 변경(리팩토링)만 해야해야만해
- 공통으로 쓰이는 파일만 공통 폴더에 넣어두고, 비즈니스 로직이 담긴 경우, 관심사끼리 묶어 폴더로 관리해야해
- src/basic/tests/basic.test.js, src/advanced/tests/advanced.test.js 테스트 코드가 모두 하나도 빠짐없이 통과해야해 (테스트는 npx vitest run 으로 watch 가 발생하지 않도록 해)
- 테스트 코드 검증 여부는 main.basic.js 를 기준으로 검사해야만해. origin 파일은 의미없어.

-> 결과파일은 main.basic.js 에 적용해줘
-> 작업 후 마지막으로 절대 원칙이 지켜졌는지 한번 더 컴토 후 올바르게 고치고 알려줘

# 체크리스트

아래 체크리스트를 준수했는지 체크해줘.

- 코드가 Prettier를 통해 일관된 포맷팅이 적용되어 있는가?
- 적절한 줄바꿈과 주석을 사용하여 코드의 논리적 단위를 명확히 구분했는가?
- 변수명과 함수명이 그 역할을 명확히 나타내며, 일관된 네이밍 규칙을 따르는가?
- 매직 넘버와 문자열을 의미 있는 상수로 추출했는가?
- 중복 코드를 제거하고 재사용 가능한 형태로 리팩토링했는가?
- 함수가 단일 책임 원칙을 따르며, 한 가지 작업만 수행하는가?
- 조건문과 반복문이 간결하고 명확한가? 복잡한 조건을 함수로 추출했는가?
- 코드의 배치가 의존성과 실행 흐름에 따라 논리적으로 구성되어 있는가?
- 연관된 코드를 의미 있는 함수나 모듈로 그룹화했는가?
- ES6+ 문법을 활용하여 코드를 더 간결하고 명확하게 작성했는가?
- 전역 상태와 부수 효과(side effects)를 최소화했는가?
- 에러 처리와 예외 상황을 명확히 고려하고 처리했는가?
- 코드 자체가 자기 문서화되어 있어, 주석 없이도 의도를 파악할 수 있는가?
- 비즈니스 로직과 UI 로직이 적절히 분리되어 있는가?
- 객체지향 또는 함수형 프로그래밍 원칙을 적절히 적용했는가?
- 코드의 각 부분이 테스트 가능하도록 구조화되어 있는가?
- 성능 개선을 위해 불필요한 연산이나 렌더링을 제거했는가?
- 새로운 기능 추가나 변경이 기존 코드에 미치는 영향을 최소화했는가?
- 리팩토링 시 기존 기능을 그대로 유지하면서 점진적으로 개선했는가?
- 코드 리뷰를 통해 다른 개발자들의 피드백을 반영하고 개선했는가?
96 changes: 96 additions & 0 deletions .cursor/rules/clean-code.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
alwaysApply: true
---

# Clean Code Writing Rules

## MANDATORY CODE WRITING RULES

You MUST follow these rules when writing any code:

### CORE DESIGN PRINCIPLES

- **DRY**: NEVER repeat the same code
- **KISS**: Write code as simply as possible
- **YAGNI**: Do NOT write unnecessary code
- **Single Responsibility**: Functions MUST be under 20 lines and have ONE clear responsibility

### CODE ORGANIZATION RULES

Apply these 4 organization principles:

- **Proximity**: Group related elements with blank lines
- **Commonality**: Group related functionality into functions
- **Similarity**: Use similar names and positions for similar roles
- **Continuity**: Arrange code in dependency order

### NAMING REQUIREMENTS

#### Naming Principles (ALL MUST BE FOLLOWED)

1. **Predictable**: Name must allow prediction of value, type, and return value
2. **Contextual**: Add descriptive adjectives or nouns for context
3. **Clear**: Remove unnecessary words while maintaining clear meaning
4. **Concise**: Brief yet clearly convey role and purpose
5. **Consistent**: Use identical terms for identical intentions across entire codebase

#### REQUIRED Naming Patterns

**Action Functions - USE THESE PATTERNS:**

```
// Creation: create~(), add~(), push~(), insert~(), new~(), append~(), spawn~(), make~(), build~(), generate~()
// Retrieval: get~(), fetch~(), query~()
// Transformation: parse~(), split~(), transform~(), serialize~()
// Modification: update~(), mutation~()
// Deletion: delete~(), remove~()
// Communication: put~(), send~(), dispatch~(), receive~()
// Validation: validate~(), check~()
// Calculation: calc~(), compute~()
// Control: init~(), configure~(), start~(), stop~()
// Storage: save~(), store~()
// Logging: log~(), record~()
```

**Data Variables - USE THESE PATTERNS:**

```
// Quantities: count~, sum~, num~, min~, max~, total
// State: is~, has~, current~, selected~
// Progressive/Past: ~ing, ~ed
// Information: ~name, ~title, ~desc, ~text, ~data
// Identifiers: ~ID, ~code, ~index, ~key
// Time: ~at, ~date
// Type: ~type
// Collections: ~s
// Others: item, temp, params, error
// Conversion: from(), of()
```

### ABSTRACTION RULES

- **Data Abstraction**: Simplify data structure and processing methods
- **Process Abstraction**: Encapsulate complex logic into simple interfaces
- **Appropriate Level**: Do NOT over-abstract or under-abstract

### MANDATORY CHECKLIST

Before finalizing ANY code, you MUST verify:

1. ✅ **Applied standard naming patterns** from above
2. ✅ **Organized code using 4 organization principles**
3. ✅ **Split complex logic into small functions**
4. ✅ **Code expresses intent without comments** (comments only when absolutely necessary)
5. ✅ **Maintained consistent formatting**

### FORBIDDEN PRACTICES

- ❌ Do NOT mix similar terms (`display` vs `show`)
- ❌ Do NOT write functions longer than 20 lines
- ❌ Do NOT repeat code patterns
- ❌ Do NOT use unclear or ambiguous names
- ❌ Do NOT violate naming consistency across codebase

## COMPLIANCE REQUIREMENT

ALL code output MUST comply with these rules. No exceptions.
Loading