# 설계서: <기능명> (#) > **상태**: Draft > **작성**: [AI] Architect · **최종수정**: > **추적성** — Redmine: # · 관련 ADR: > · 구현 파일: <경로 또는 TBD> · 테스트: <경로 또는 TBD> ## 1. 목적 (Why) 이 기능이 푸는 문제. Planner 의 목표 1줄 인용. ## 2. 범위 (Scope) - **포함**: ... - **제외 (out of scope)**: ... ## 3. 인수조건 (Acceptance Criteria) - [ ] ... - [ ] ... ## 4. 컨텍스트 & 제약 - 의존성: 거래소 API / DB / 알림 / 외부 라이브러리. - 제약: 성능, 레이트리밋, 리스크(돈), 보안. - 가정: ... ## 5. 아키텍처 개요 - 모듈/파일 구조 (목록). - 데이터 흐름 (텍스트 다이어그램). - **I/O ↔ 순수 전략 로직 경계** 명시 (테스트 가능성). ``` <여기에 ASCII 흐름도> ``` ## 6. 데이터 모델 - 입력 / 출력 / 저장 구조, 타입, **경계 검증 규칙**. ## 7. 함수 명세 (Function Specs) | 함수 | 책임(1줄) | 시그니처(잠정) | 입력 | 출력 | 에러/실패 | 복잡? | |------|-----------|----------------|------|------|-----------|-------| | `` | | | | | | 단순 / **복잡** | > 복잡 기준: 분기/상태기계, 외부 I/O, 리스크(주문·잔고) 경로, 비자명 알고리즘. > → 해당 함수는 `fn-.md` 작성. 단순(게터·포매터 등)은 이 표로 충분. ## 8. 흐름 / 알고리즘 - 핵심 시나리오 단계별. 상태 전이. ## 9. 엣지케이스 & 에러 처리 - 경계값, 실패 모드, 재시도/백오프. - **안전한 기본값**(API 실패 시 거래 중단 등). ## 10. 테스트 계획 - 단위/통합 케이스 목록 (각 인수조건에 매핑). - 모킹/드라이런 전략 (거래소 API 등). ## 11. 리스크 & 대안 검토 - 선택한 접근 vs 대안, 트레이드오프. - 되돌리기 어려운 결정 → **ADR 로 분리** (`adr/NNNN-*.md`). ## 12. 미해결 질문 (Open Questions) - ...