# 작업 보고서: task-30.1

- **팀**: dev1-team (헤르메스)
- **작업**: 파이썬 계산기 CLI 개발
- **소요 시간**: 1분 52초
- **완료일**: 2026-03-01

## 작업 내용

파이썬 계산기 CLI를 개발하였습니다. `eval()` 사용 없이 재귀 하강 파서(Recursive Descent Parser)를 직접 구현하여 안전한 수식 평가를 수행합니다.

### 구현 기능
1. **사칙연산**: +, -, *, / 지원
2. **괄호 지원**: 중첩 괄호 포함 `((2+3)*(4-1))`
3. **연산자 우선순위**: 곱셈/나눗셈 우선, 좌→우 결합
4. **단항 연산자**: `-5`, `+3`, `--5`, `-(2+3)` 등
5. **연산 히스토리**: JSON 파일 기반 저장/조회/초기화
6. **에러 핸들링**: 0 나누기, 잘못된 수식, 괄호 불일치, 잘못된 문자 등
7. **CLI 모드**: 대화형(REPL) + 비대화형(인자 전달) 양방향 지원

### 아키텍처
- `Tokenizer`: 수식 문자열 → 토큰 분리
- `Parser`: 재귀 하강 파서 (expr → term → factor → atom)
- `History`: JSON 파일 기반 히스토리 관리
- `calculate()`: 통합 계산 함수
- `run_cli()`: 대화형 REPL
- `run_single()`: 비대화형 단일 계산

## 생성/수정 파일 목록

| 파일 | 구분 | 설명 |
|------|------|------|
| `/home/jay/workspace/teams/dev1/calculator.py` | 생성 | 메인 계산기 코드 (약 250줄) |
| `/home/jay/workspace/teams/dev1/test_calculator.py` | 생성 | 테스트 코드 (약 260줄) |

## 테스트 결과

**61개 테스트 전부 통과 (0.06초)**

- TestBasicArithmetic: 9건 PASSED (사칙연산 기본)
- TestOperatorPrecedence: 5건 PASSED (연산자 우선순위)
- TestParentheses: 6건 PASSED (괄호 처리)
- TestUnaryOperators: 5건 PASSED (단항 연산자)
- TestErrorHandling: 11건 PASSED (에러 핸들링)
- TestFormatResult: 5건 PASSED (결과 포맷팅)
- TestTokenizer: 5건 PASSED (토크나이저)
- TestHistory: 7건 PASSED (히스토리 관리)
- TestIntegration: 8건 PASSED (통합 테스트)

## 버그 유무

발견된 버그 없음.

## 비고

- Opus vs Sonnet 품질 비교 테스트용으로 제작
- `eval()` 미사용 — 보안상 안전한 직접 파서 구현
- Python 3.10+ 필요 (type hint union `str | None` 사용)
- 히스토리 파일: `.calculator_history.json` (계산기 파일과 같은 디렉토리)
