최초 프로젝트 업로드 (Script Auto Commit)
This commit is contained in:
113
.github/copilot-instructions.md
vendored
Normal file
113
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
<!--
|
||||
개발 원칙 가이드
|
||||
copilot-instructions.md
|
||||
-->
|
||||
|
||||
# Project Rules & AI Persona
|
||||
|
||||
## 1. Role & Persona
|
||||
- 당신은 Google, Meta 출신의 **Principal Software Engineer**입니다.
|
||||
- **C++ (C++17/20)** 및 **Python (3.11+)** 분야의 절대적인 전문가입니다.
|
||||
- 당신의 목표는 단순히 "동작하는 코드"가 아닌, **"확장 가능하고(Scalable), 유지보수 용이하며(Maintainable), 성능이 최적화된(Performant)"** 솔루션을 제공하는 것입니다.
|
||||
- 불필요한 서론(대화)을 생략하고, **코드와 핵심 기술적 설명**만 출력하십시오.
|
||||
|
||||
## 2. Core Principles (The "Manifesto")
|
||||
1. **Think Before You Code:**
|
||||
- 코드를 작성하기 전에, 주석으로 처리 로직을 먼저 설계하십시오.
|
||||
- **Complexity:** 알고리즘의 시간/공간 복잡도(Big-O)를 고려하고, 불필요한 `O(N^2)` 이상의 로직을 피하십시오.
|
||||
2. **Clean Code & SOLID:**
|
||||
- 함수는 단일 책임(SRP)을 가져야 하며, 테스트 용이성(Testability)을 고려해 작성하십시오.
|
||||
- **Early Return:** 들여쓰기 깊이(Indentation depth)를 최소화하기 위해 가드 절(Guard Clause)을 적극 사용하십시오.
|
||||
3. **DRY (Don't Repeat Yourself):** 중복 로직은 반드시 유틸리티 함수나 클래스로 분리하십시오.
|
||||
4. **Defensive Programming:**
|
||||
- 예외를 삼키지 말고(No Silent Failures), 명확한 로그와 함께 상위 레벨로 전파하거나 적절히 처리하십시오.
|
||||
- 입력값 검증(Validation)을 철저히 하십시오.
|
||||
5. **Security First:** API Key, 비밀번호 등 민감 정보는 절대 하드코딩하지 말고 환경 변수(.env)를 사용하십시오.
|
||||
|
||||
## 3. Tech Stack & Style Guidelines
|
||||
|
||||
### 🎨 Common Style Rules (모든 언어 공통)
|
||||
- **Naming Convention:** 변수명은 의도를 명확히 드러내야 합니다. (`x`, `tmp`, `data`, `foo` 등 무의미한 이름 사용 **절대 금지**)
|
||||
- **Documentation:** 모든 공개 함수(Public Function)와 클래스에는 명확한 주석(Docstring)을 작성하십시오.
|
||||
- **Standard:** 각 언어별 표준 스타일 가이드를 엄격히 준수합니다.
|
||||
|
||||
### 🐍 Python (3.11+)
|
||||
- **Type Hinting:** 모든 함수와 메서드에 `typing` 모듈을 사용한 타입 힌트 필수 적용.
|
||||
- **Style:** PEP8 준수 (Black Formatter 기준).
|
||||
- **Docstring:** Google Style Docstring을 따름.
|
||||
- **Error Handling:** `try-except`를 남용하지 말고, 구체적인 예외(Specific Exception)만 잡으십시오.
|
||||
|
||||
### 🚀 C++ (C++17/20)
|
||||
- **Modern C++:** Smart Pointers (`std::unique_ptr`, `std::shared_ptr`), Move Semantics, Lambda, `std::optional` 등을 적극 활용하십시오.
|
||||
- **Memory Safety:** Raw pointer (`new`/`delete`) 사용을 금지합니다. (불가피한 경우 주석으로 사유 명시)
|
||||
- **Style:** Google C++ Style Guide를 준수하십시오.
|
||||
- **Error Handling:** `try-catch`보다는 RAII 패턴을 통해 자원을 관리하고, 예외 안정성(Exception Safety)을 고려하십시오.
|
||||
|
||||
## 4. Response Rules
|
||||
- **File Context:** 파일 경로와 이름을 코드 블록 상단에 항상 주석으로 명시하십시오. (예: `# src/main.py` 또는 `// src/main.cpp`)
|
||||
- **Full Context:** 코드를 수정할 때는 변경된 부분만 보여주지 말고, **문맥 파악이 가능한 전체 함수 또는 블록**을 보여주십시오.
|
||||
- **Dependencies:** 새로운 라이브러리가 필요하면 `requirements.txt` (Python) 또는 `CMakeLists.txt`/`vcpkg.json` (C++) 업데이트를 함께 제안하십시오.
|
||||
|
||||
## 5. State Management (Context Persistence)
|
||||
**[CRITICAL]** 채팅 세션이 끊기더라도 작업의 연속성을 유지하기 위해, 당신은 항상 **`project_state.md`** 파일을 관리해야 합니다.
|
||||
|
||||
1. **Read First:** 작업을 시작하기 전, 항상 `project_state.md`의 내용을 확인하여 현재 진행 상황과 중단된 지점을 파악하십시오.
|
||||
2. **Write Always:** 답변의 **가장 마지막**에는 반드시 업데이트된 `project_state.md` 내용을 코드 블록으로 출력해야 합니다.
|
||||
3. **File Structure (`project_state.md`):**
|
||||
- **Current Goal:** 현재 진행 중인 `implementation_plan.md`의 세부 단계.
|
||||
- **ToDo List:** 현재 목표를 달성하기 위한 마이크로 태스크 목록 (체크박스 활용).
|
||||
- **Context Dump:** 다음 세션의 AI가 알아야 할 중요 설계 결정, 변수명, 남은 이슈 등 기술적 메모.
|
||||
|
||||
<!--
|
||||
|
||||
# xxx 프로젝트를 위한 AI 코딩 에이전트 지침
|
||||
|
||||
## 프로젝트 개요
|
||||
xxx
|
||||
|
||||
### 주요 구성 요소
|
||||
xxx
|
||||
|
||||
## 개발자 워크플로우
|
||||
|
||||
### 빌드
|
||||
xxx
|
||||
|
||||
### 시뮬레이션 실행
|
||||
xxx
|
||||
|
||||
### 디버깅
|
||||
xxx
|
||||
|
||||
### 테스트
|
||||
xxx
|
||||
|
||||
## 프로젝트별 규칙
|
||||
xxx
|
||||
|
||||
## 예제
|
||||
### 새로운 테스트 케이스 추가
|
||||
xxx
|
||||
|
||||
## 참고 사항
|
||||
xxx
|
||||
|
||||
-->
|
||||
|
||||
추가 질문이 있는 경우 문의하세요.
|
||||
|
||||
<!--
|
||||
Project_Root/
|
||||
├── .github/ # 깃허브 코파일럿 설정 폴더
|
||||
│ └── copilot-instructions.md # 1. 개발 원칙 (AI 페르소나 및 코딩 규칙)
|
||||
├── docs/ # 기획 및 설계 문서
|
||||
│ ├── project_requirements.md # 2. 기획 및 로직 설계서 (프로젝트 지도)
|
||||
│ ├── implementation_plan.md # 3. 단계별 구현 체크리스트 (작업 지시서)
|
||||
│ └── review_prompt.md # 4. AI 코드 리뷰 지침 (품질 관리)
|
||||
│ └── workflow.md # 5. workflow 자동화
|
||||
│ └── usage_guide.md # 6. Workflow 수동
|
||||
└── src/ # 소스 코드
|
||||
├── main.py
|
||||
└── ...
|
||||
-->
|
||||
|
||||
58
.gitignore
vendored
Normal file
58
.gitignore
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# Environment variables
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# Virtual environments
|
||||
venv/
|
||||
ENV/
|
||||
env/
|
||||
.venv
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Test data (in tests/ folder)
|
||||
tests/holdings.json
|
||||
tests/holdings.json.example
|
||||
tests/*.txt
|
||||
tests/*.log
|
||||
|
||||
# Logs (in logs/ folder)
|
||||
logs/*.log
|
||||
|
||||
# Production data (root level)
|
||||
trades.json
|
||||
pending_orders.json
|
||||
confirmed_tokens.txt
|
||||
|
||||
37
Dockerfile
Normal file
37
Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
||||
# Synology DSM용 MACD 알림 봇 Dockerfile
|
||||
FROM python:3.12-slim
|
||||
|
||||
# 필수 패키지 및 로케일 설치
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
libffi-dev \
|
||||
libssl-dev \
|
||||
locales \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 한글 및 UTF-8 로케일 설정
|
||||
RUN sed -i '/ko_KR.UTF-8/s/^# //g' /etc/locale.gen && \
|
||||
locale-gen ko_KR.UTF-8
|
||||
ENV LANG=ko_KR.UTF-8
|
||||
ENV LC_ALL=ko_KR.UTF-8
|
||||
|
||||
# 타임존 설정 (서울)
|
||||
ENV TZ=Asia/Seoul
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 1. requirements.txt만 먼저 복사
|
||||
COPY requirements.txt .
|
||||
|
||||
# 2. 라이브러리를 먼저 설치 (이 단계가 캐시됨)
|
||||
RUN pip install --no-cache-dir --upgrade pip \
|
||||
&& pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# COPY . /app
|
||||
|
||||
RUN mkdir -p logs
|
||||
|
||||
CMD ["python", "main.py"]
|
||||
|
||||
# 필요시 포트 노출
|
||||
# EXPOSE 8000
|
||||
113
Git_사용법.txt
Normal file
113
Git_사용법.txt
Normal file
@@ -0,0 +1,113 @@
|
||||
Git
|
||||
|
||||
방식 : 내 컴퓨터에도 서버와 똑같은 전체 저장소 사본을 가진다.
|
||||
|
||||
Commit : 내 PC에만 버전 이력 남길 수 있다.
|
||||
Push : 서버로 전송
|
||||
Branch : 따로 가지쳐서(폴더 복사가 아닌 포인터만 이동) 작업 후 나중에 합치기 쉽다.
|
||||
|
||||
Working Directory : 실제 코드를 수정하는 폴더
|
||||
Staging Area : 커밋할 파일만 골라서 올려두는 가상의 공간(git add)
|
||||
Repository : 확정된 버전들이 저장되는 곳(git commit)
|
||||
|
||||
Step 0 : 최초 한번 설정, 누가 코드를 짰는지 이름표를 붙이는 작업
|
||||
git config --global user.name "tae2564"
|
||||
git config --global user.email "tae2564@gmail.com"
|
||||
|
||||
Step 1. 프로젝트 가져오기 (Clone) : Gitea의 저장소를 PC로 가져온다.
|
||||
git clone https://git.tae2564.synology.me/tae2564/ProjectName.git
|
||||
cd ProjectName
|
||||
|
||||
Step 2. 코드 수정 및 업로드
|
||||
2.1 작업 시작 전 최신 코드 받기
|
||||
git pull
|
||||
2.2. 상태 확인 : 어떤 파일이 수정되었는지 확인한다.
|
||||
git status
|
||||
2.3. 수정한 파일 중 커밋할 파일을 Staging Area에 추가한다.
|
||||
git add main.py # 특정 파일만 담기
|
||||
git add . # 수정된 모든 파일 담기 (가장 많이 씀)
|
||||
2.4. Commit : 버전 확정, 내 PC에 버전을 기록한다.
|
||||
git commit -m "수정 내용"
|
||||
2.5. Push : 서버 전송, Gitea 서버로 코드를 업로드한다.
|
||||
git push origin main # 처음엔 git push -u origin main을 한 번 해줘야한다.
|
||||
git push # 이 후엔 git push 만 해도된다.
|
||||
2.6 되돌리기(Reset)
|
||||
git reset --soft HEAD~1 # 방금 한 커밋을 취소하고 파일은 살려둠 (Staging 상태로)
|
||||
git reset --hard HEAD~1 # 방금 한 커밋을 취소하고 파일 수정내역까지 싹 날림 (주의!)
|
||||
|
||||
Step 3. Branch 활용
|
||||
기존 코드는 그대로 두고 수정한 코드로 테스트해보고 싶을 때 브랜치를 사용한다.
|
||||
3.1. 브랜치 생성 및 이동
|
||||
이제부터 수정하는 코드는 원본 main에 영향을 주지 않는다.
|
||||
git switch -c BranchName # BranchName라는 이름의 브랜치를 만들고 이동
|
||||
3.2. 작업 후 커밋
|
||||
git add .
|
||||
git commit -m "수정 내용"
|
||||
3.3. 원본(main)에 합치기(Merge) 테스트가 성공적이어서 원본에 반영하고 싶다면
|
||||
git switch main # 다시 본진으로 복귀
|
||||
git merge BranchName # 작업한 브랜치를 끌어와서 합침
|
||||
git push # 서버에 반영
|
||||
3.3 다 쓴 브랜치 삭제
|
||||
git branch -d BranchName # -d 옵션은 delete의 약자
|
||||
|
||||
Python 프로젝트 필수 팁 (.gitignore)
|
||||
Python을 쓸경우 컴파일된 파일(__pycache__)이나 가상환경 폴더(venv)는 Git에 올리면 안된다. 지저분해지고 충돌난다.
|
||||
프로젝트 최상위 폴더에 .gitignore라는 파일을 만들고 다음 내용을 추가한다. (텍스트 파일)
|
||||
# .gitignore 파일 내용
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.venv/
|
||||
venv/
|
||||
.env
|
||||
.vscode/
|
||||
|
||||
VS Code 사용시 왼쪽 메뉴의 소스제어(Source Control) 탭에서 add, commit, push, diff를 GUI로 지원한다.
|
||||
좌측 확장(Extensions) 메뉴에서 Git Graph 설치 : 커밋 이력을 시각적으로 보여준다.
|
||||
1. 저장소 가져오기 (Clone)
|
||||
F1 키를 누르고 Git: Clone 입력 후 엔터.
|
||||
주소 입력: 아까 Gitea에서 만든 주소 입력 : https://git.tae2564.synology.me/tae2564/Finder.git
|
||||
폴더 선택: 소스 코드를 저장할 PC 내 폴더 선택.
|
||||
로그인: 아이디/비번 물어보면 Gitea 계정 입력.
|
||||
열기: "복제된 리포지토리를 여시겠습니까?" 하면 [열기(Open)] 클릭.
|
||||
2. 핵심 루틴: 수정 -> 담기 -> 커밋 -> 푸시
|
||||
VS Code 좌측의 [소스 제어 (Source Control)] 아이콘이 메인 작업 공간이다.
|
||||
2.1 수정 (Modify)
|
||||
파일을 수정하고 저장(Ctrl+S)하면, 소스 제어 탭의 '변경 사항(Changes)' 목록에 파일이 뜹니다.
|
||||
파일 옆에 M(Modified) 마크가 뜹니다.
|
||||
파일을 클릭하면 Diff(비교) 화면이 열려 이전 버전과 뭐가 달라졌는지 바로 보여줍니다.
|
||||
2.2 담기 (Stage) = git add
|
||||
커밋할 파일을 선택하는 단계입니다.
|
||||
파일 이름 옆의 + (변경 내용 스테이징) 버튼을 누릅니다.
|
||||
그러면 파일이 '스테이징된 변경 사항(Staged Changes)' 으로 이동합니다. (장바구니에 담긴 상태)
|
||||
2.3 커밋 (Commit) = git commit
|
||||
내 PC에 저장하는 단계입니다.
|
||||
입력창(메시지)에 "검색 알고리즘 수정"이라고 적습니다.
|
||||
위쪽의 [커밋(Commit)] 버튼(또는 Ctrl+Enter)을 누릅니다.
|
||||
파일들이 목록에서 사라집니다. (로컬 저장소에 안전하게 저장됨)
|
||||
2.4 푸시 (Push) = git push
|
||||
Gitea 서버(NAS)로 보내는 단계입니다.
|
||||
커밋을 하고 나면 버튼이 [변경 내용 동기화(Sync Changes)] 로 바뀝니다. (파란색 버튼)
|
||||
이걸 누르면 내 코드가 NAS로 올라갑니다.
|
||||
3. 브랜치 활용 (새로운 시도 할 때)
|
||||
'주식 검색기'의 기본 로직은 놔두고, 실험적인 기능을 넣고 싶을 때 씁니다.
|
||||
3.1 브랜치 생성:
|
||||
VS Code 왼쪽 하단 파란색 상태 표시줄을 보면 main (또는 master)이라고 적힌 글씨가 있습니다.
|
||||
클릭 -> [+ 새 분기 만들기...] 선택 -> 이름 입력 (예: feature/rsi-test).
|
||||
3.2 작업:
|
||||
이제 코드를 막 수정해도 원본(main)은 안전합니다.
|
||||
작업 후 위와 똑같이 커밋(Commit) 합니다.
|
||||
3.3 브랜치 변경:
|
||||
왼쪽 하단 브랜치 이름을 클릭해서 언제든지 main과 feature/rsi-test를 왔다 갔다 할 수 있습니다. (파일 내용이 순식간에 바뀝니다.)
|
||||
4. 시각적 확인 (Git Graph)
|
||||
아까 설치한 Git Graph를 써봅시다.
|
||||
좌측 하단 상태 표시줄에 [Git Graph] 라는 글씨를 클릭합니다. (안 보이면 F1 -> Git Graph: View 입력)
|
||||
아름다운 그래프가 나옵니다.
|
||||
누가 언제 커밋했는지, 브랜치가 어떻게 갈라졌다 합쳐지는지 한눈에 보입니다.
|
||||
특정 점(커밋)을 클릭하면 그 당시 파일 상태를 볼 수 있습니다.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
71
README.md
Normal file
71
README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# xxx
|
||||
|
||||
xxx
|
||||
|
||||
---
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
최근 프로젝트가 모듈화되어 다음과 같은 구조를 갖습니다:
|
||||
|
||||
```
|
||||
xxx/
|
||||
├── xxx # 프로그램의 진입점
|
||||
├── src/ # 모듈화된 코드
|
||||
│ ├── xxx # xxx
|
||||
│ ├── xxx # xxx
|
||||
│ ├── xxx # xxx
|
||||
│ └── tests/ # 테스트 코드
|
||||
│ ├── xxx
|
||||
│ ├── xxx
|
||||
│ └── xxx
|
||||
└── pytest.ini # pytest 설정
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 주요 기능
|
||||
|
||||
- **xxx**: xxx
|
||||
- **xxx**: xxx
|
||||
- **xxx**: xxx
|
||||
|
||||
### xxx
|
||||
|
||||
xxx
|
||||
|
||||
---
|
||||
|
||||
## 실행 방법
|
||||
|
||||
1. **의존성 설치**:
|
||||
|
||||
xxx
|
||||
|
||||
2. **환경 변수 설정**:
|
||||
|
||||
xxx
|
||||
|
||||
3. **설정 파일 준비**:
|
||||
|
||||
xxx
|
||||
|
||||
4. **프로그램 실행**:
|
||||
|
||||
xxx
|
||||
|
||||
---
|
||||
|
||||
## 테스트 실행
|
||||
|
||||
1. xxx:
|
||||
|
||||
xxx
|
||||
|
||||
2. xxx:
|
||||
|
||||
xxx
|
||||
|
||||
---
|
||||
|
||||
이 문서는 프로젝트의 최신 구조와 실행 방법을 반영하도록 업데이트되었습니다.
|
||||
54
config/config.json
Normal file
54
config/config.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"symbols_file": "config/symbols.txt",
|
||||
"symbol_delay": 1.0,
|
||||
"candle_count": 200,
|
||||
"buy_check_interval_minutes": 240,
|
||||
"stop_loss_check_interval_minutes": 60,
|
||||
"profit_taking_check_interval_minutes": 240,
|
||||
"balance_warning_interval_hours": 24,
|
||||
"min_amount_threshold": 1e-8,
|
||||
"loop": true,
|
||||
"dry_run": false,
|
||||
"max_threads": 3,
|
||||
"telegram_parse_mode": "HTML",
|
||||
"macd_fast": 12,
|
||||
"macd_slow": 26,
|
||||
"macd_signal": 9,
|
||||
"adx_length": 14,
|
||||
"adx_threshold": 25,
|
||||
"sma_short": 5,
|
||||
"sma_long": 200,
|
||||
"trading_mode": "auto_trade",
|
||||
"auto_trade": {
|
||||
"enabled": true,
|
||||
"buy_enabled": true,
|
||||
"buy_amount_krw": 15000,
|
||||
"min_order_value_krw": 5000,
|
||||
"allowed_symbols": [],
|
||||
"require_env_confirm": false,
|
||||
"buy_price_slippage_pct": 0.2,
|
||||
"loss_threshold": -5.0,
|
||||
"profit_threshold_1": 10.0,
|
||||
"profit_threshold_2": 30.0,
|
||||
"drawdown_1": 5.0,
|
||||
"drawdown_2": 15.0,
|
||||
"telegram_max_retries": 3,
|
||||
"order_monitor_max_errors": 5
|
||||
},
|
||||
"confirm": {
|
||||
"confirm_via_file": false,
|
||||
"confirm_timeout": 300
|
||||
},
|
||||
"monitor": {
|
||||
"enabled": true,
|
||||
"timeout": 120,
|
||||
"poll_interval": 3,
|
||||
"max_retries": 1
|
||||
},
|
||||
"notify": {
|
||||
"order_filled": true,
|
||||
"order_partial": true,
|
||||
"order_cancelled": true,
|
||||
"order_error": true
|
||||
}
|
||||
}
|
||||
8
data/data.json
Normal file
8
data/data.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"KRW-TRUMP": {
|
||||
"buy_price": 10640.0,
|
||||
"amount": 1.40977443,
|
||||
"max_price": 10700.0,
|
||||
"buy_timestamp": null
|
||||
}
|
||||
}
|
||||
105
data/data.txt
Normal file
105
data/data.txt
Normal file
@@ -0,0 +1,105 @@
|
||||
# symbols.txt - 한 줄에 하나의 Upbit 심볼 입력
|
||||
# 빈 줄과 #으로 시작하는 줄은 무시됨
|
||||
# my watchlist
|
||||
KRW-BTC
|
||||
KRW-ETH
|
||||
KRW-XRP
|
||||
# KRW-BNB
|
||||
KRW-SOL
|
||||
KRW-TRX
|
||||
KRW-DOGE
|
||||
KRW-ADA
|
||||
# KRW-HYPE
|
||||
KRW-LINK
|
||||
KRW-BCH
|
||||
KRW-XLM
|
||||
# KRW-LEO
|
||||
# KRW-ZEC
|
||||
# KRW-LTC
|
||||
KRW-HBAR
|
||||
KRW-AVAX
|
||||
KRW-SUI
|
||||
# KRW-XMR
|
||||
KRW-SHIB
|
||||
# KRW-TON
|
||||
KRW-UNI
|
||||
KRW-DOT
|
||||
KRW-CRO
|
||||
KRW-MNT
|
||||
# KRW-TAO
|
||||
KRW-WLFI
|
||||
KRW-AAVE
|
||||
KRW-NEAR
|
||||
# KRW-ICP
|
||||
# KRW-BGB
|
||||
KRW-ETC
|
||||
# KRW-OKB
|
||||
# KRW-PEPE
|
||||
# KRW-M
|
||||
KRW-APT
|
||||
KRW-ONDO
|
||||
# KRW-ENA
|
||||
# KRW-ASTER
|
||||
# KRW-PI
|
||||
# KRW-POL
|
||||
# KRW-WLD
|
||||
# KRW-VET
|
||||
KRW-TRUMP
|
||||
# KRW-KCS
|
||||
# KRW-XAUT
|
||||
# KRW-ARB
|
||||
KRW-ALGO
|
||||
# KRW-FIL
|
||||
# KRW-SKY
|
||||
# KRW-FLR
|
||||
# KRW-IP
|
||||
KRW-RENDER
|
||||
# KRW-PAXG
|
||||
# KRW-SEI
|
||||
# KRW-PUMP
|
||||
# KRW-KAS
|
||||
# KRW-ATOM
|
||||
# KRW-CAKE
|
||||
# KRW-JUP
|
||||
# KRW-BONK
|
||||
# KRW-XDC
|
||||
# KRW-TIA
|
||||
# KRW-QNT
|
||||
# KRW-AERO
|
||||
# KRW-IMX
|
||||
# KRW-DASH
|
||||
# KRW-PEN
|
||||
# KRW-GT
|
||||
# KRW-VIR
|
||||
# KRW-PYTH
|
||||
# KRW-ENS
|
||||
# KRW-AB
|
||||
# KRW-SYRUP
|
||||
# KRW-XPL
|
||||
# KRW-FLOKI
|
||||
# KRW-MORPHO
|
||||
# KRW-INJ
|
||||
# KRW-GRT
|
||||
# KRW-LDO
|
||||
# KRW-OP
|
||||
# KRW-SAND
|
||||
# KRW-TWT
|
||||
# KRW-KAIA
|
||||
# KRW-2Z
|
||||
# KRW-ETHFI
|
||||
# KRW-NEXO
|
||||
# KRW-CRV
|
||||
# KRW-DEXE
|
||||
# KRW-CFX
|
||||
# KRW-SPX
|
||||
# KRW-IOTA
|
||||
# KRW-FET
|
||||
# KRW-XTZ
|
||||
# KRW-STX
|
||||
# KRW-PENDLE
|
||||
# KRW-H
|
||||
# KRW-WIF
|
||||
# KRW-THETA
|
||||
# KRW-JASMY
|
||||
KRW-AWE
|
||||
KRW-ARDR
|
||||
35
docs/implementation_plan.md
Normal file
35
docs/implementation_plan.md
Normal file
@@ -0,0 +1,35 @@
|
||||
<!--
|
||||
단계별 구현 체크리스트
|
||||
implementation_plan.md
|
||||
-->
|
||||
|
||||
# Implementation Plan
|
||||
|
||||
이 문서는 프로젝트의 개발 진행 상황을 추적합니다. AI는 이 문서를 참조하여 현재 단계(Context)를 파악하고 작업을 수행해야 합니다.
|
||||
|
||||
## Phase 1: 환경 설정 및 기반 구축 (Setup) [ ]
|
||||
- [ ] 프로젝트 폴더 구조 생성 및 Git 초기화
|
||||
- [ ] `copilot-instructions.md` 및 `.env` 환경 변수 템플릿 설정
|
||||
- [ ] 언어별 패키지 매니저 설정 (requirements.txt, package.json, go.mod 등)
|
||||
- [ ] 기본 로깅(Logging) 및 설정(Config) 모듈 구현
|
||||
|
||||
## Phase 2: 코어 비즈니스 로직 (Core Domain) [ ]
|
||||
- [ ] `project_requirements.md`의 핵심 기능을 담당하는 도메인 모델 설계
|
||||
- [ ] 데이터 처리 및 비즈니스 로직 구현 (순수 함수 위주)
|
||||
- [ ] 핵심 로직에 대한 단위 테스트(Unit Test) 작성 및 통과 확인
|
||||
|
||||
## Phase 3: 인터페이스 및 데이터 연동 (Integration) [ ]
|
||||
- [ ] 외부 API 연동 또는 데이터베이스 연결 모듈 구현
|
||||
- [ ] 사용자 인터페이스(UI) 또는 API 엔드포인트 구현
|
||||
- [ ] 예외 처리(Exception Handling) 및 에러 응답 표준화
|
||||
|
||||
## Phase 4: 시스템 통합 및 실행 (System Interface) [ ]
|
||||
- [ ] 메인 진입점(Entry Point) 구현 (main.py, index.js 등)
|
||||
- [ ] 전체 프로세스 통합 테스트 (Integration Test)
|
||||
- [ ] 로컬 환경에서의 End-to-End 실행 검증
|
||||
|
||||
## Phase 5: 최적화 및 리팩토링 (Refinement) [ ]
|
||||
- [ ] 성능 병목 구간 분석 및 비동기/캐싱 적용
|
||||
- [ ] `review_prompt.md` 기반 자가 점검 및 코드 품질 개선
|
||||
- [ ] 최종 문서화 (README.md 작성)
|
||||
- [ ] 프로그램 사용법 작성 (user_guide.md)
|
||||
45
docs/project_requirements.md
Normal file
45
docs/project_requirements.md
Normal file
@@ -0,0 +1,45 @@
|
||||
<!--
|
||||
기획 및 로직 설계서
|
||||
project_requirements.md
|
||||
-->
|
||||
|
||||
# Product Requirements Document (PRD)
|
||||
|
||||
## 1. Project Overview
|
||||
- **프로젝트명:** [프로젝트 이름 입력]
|
||||
- **해결하려는 문제:** [이 프로젝트가 해결하고자 하는 핵심 문제 정의]
|
||||
- **목표:** [프로젝트의 최종 성공 기준]
|
||||
- **주요 타겟 유저:** [사용자 페르소나 정의]
|
||||
|
||||
## 2. Core Features (User Stories)
|
||||
*(우선순위가 높은 순서대로 작성)*
|
||||
1. **[핵심 기능 1]:** [사용자는 ~할 수 있다. 이를 통해 ~를 얻는다.]
|
||||
2. **[핵심 기능 2]:** [상세 설명]
|
||||
3. **[핵심 기능 3]:** [상세 설명]
|
||||
4. **[부가 기능]:** [상세 설명]
|
||||
|
||||
## 3. Tech Stack & Architecture
|
||||
- **Frontend:** [예: React, Tailwind CSS]
|
||||
- **Backend:** [예: Python FastAPI, Node.js]
|
||||
- **Database:** [예: PostgreSQL, Redis]
|
||||
- **Infra:** [예: AWS Lambda, Docker]
|
||||
|
||||
## 4. Data Flow & Logic
|
||||
- **Input:** [데이터 입력 소스]
|
||||
- **Process:**
|
||||
1. [단계 1: 데이터 수집/수신]
|
||||
2. [단계 2: 핵심 비즈니스 로직 처리]
|
||||
3. [단계 3: 데이터 저장 또는 가공]
|
||||
- **Output:** [최종 결과물 형태]
|
||||
|
||||
## 5. File Structure Plan (Suggested)
|
||||
*(AI가 제안하거나 개발자가 미리 지정)*
|
||||
- `/src/core/` : 핵심 비즈니스 로직
|
||||
- `/src/api/` : 외부 인터페이스 및 API 핸들러
|
||||
- `/src/utils/` : 공통 유틸리티
|
||||
- `/tests/` : 단위 및 통합 테스트
|
||||
|
||||
## 6. Non-Functional Requirements
|
||||
- **성능:** [예: 응답 속도 200ms 이내, 동시 접속 1000명 처리]
|
||||
- **보안:** [예: 모든 데이터 전송은 HTTPS, 민감 정보 암호화]
|
||||
- **안정성:** [예: 외부 API 실패 시 재시도(Retry) 로직 구현]
|
||||
28
docs/project_state.md
Normal file
28
docs/project_state.md
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
# Current Session State
|
||||
|
||||
## 🎯 Current Phase
|
||||
- **Phase:** xxx
|
||||
- **Focus:** xxx
|
||||
|
||||
## ✅ Micro Tasks (ToDo)
|
||||
- [x] xxx
|
||||
- [x] xxx
|
||||
- [x] xxx
|
||||
- [x] xxx
|
||||
|
||||
## 📝 Context Dump (Memo)
|
||||
### xxx 완료 내역:
|
||||
- **xxx:** xxx
|
||||
- **xxx:** xxx
|
||||
- **xxx:** xxx
|
||||
|
||||
### 검증된 주요 컴포넌트:
|
||||
1. **xxx:** xxx
|
||||
1. **xxx:** xxx
|
||||
1. **xxx:** xxx
|
||||
|
||||
### Next Phase (xxx):
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
108
docs/review_prompt.md
Normal file
108
docs/review_prompt.md
Normal file
@@ -0,0 +1,108 @@
|
||||
<!--
|
||||
AI 코드 리뷰 지침
|
||||
review_prompt.md
|
||||
-->
|
||||
|
||||
<!-- 코드 리뷰 프롬프트(실무용, 핵심 위주) -->
|
||||
|
||||
<!--
|
||||
|
||||
# 코드 리뷰 프롬프트
|
||||
다음 지침에 따라 코드를 검토하고 코드 리뷰 레포트(code_review_report.md)를 작성해주세요.
|
||||
|
||||
## [1. 분석 컨텍스트]
|
||||
언어/환경: (예: Python 3.11, AWS Lambda)
|
||||
코드 목적: (예: 결제 로직 처리)
|
||||
핵심 요구: (예: 동시성 문제 해결, 성능 최적화)
|
||||
|
||||
## [2. 역할 및 원칙]
|
||||
당신은 가장 까다로운 시니어 개발자입니다. 칭찬은 생략하고, 오직 **결함(Bug)**과 **위험 요소(Risk)**만 찾아내십시오.
|
||||
- 원칙: 코드가 "문제없다"고 가정하지 마십시오. 숨겨진 논리적 오류, 예외 처리 누락, 보안 취약점을 집요하게 파고드십시오.
|
||||
- 금지: 코드에 없는 내용을 추측하여 지적하지 마십시오(No Hallucination).
|
||||
|
||||
## [3. 중점 검토 항목]
|
||||
1. 논리 오류: 엣지 케이스(Null, 0, 경계값)에서 로직이 깨지지 않는가?
|
||||
2. 안정성: 예외가 발생했을 때 시스템이 안전하게 복구되거나 종료되는가? (Silent Failure 방지)
|
||||
3. 보안: SQL 인젝션, XSS, 민감 정보(비번/키) 노출이 있는가?
|
||||
4. 효율성: 불필요한 반복문(O(n²))이나 메모리 누수가 있는가?
|
||||
|
||||
## [4. 출력 형식]
|
||||
발견된 문제가 없다면 "특이사항 없음"이라고 하십시오. 문제가 있다면 아래 양식으로 핵심만 적어주세요.
|
||||
|
||||
### 🚨 치명적 문제 (Critical)
|
||||
- 위치: [라인 번호 또는 코드 스니펫]
|
||||
- 이유: (왜 위험한지 기술적 설명)
|
||||
- 해결책: (수정된 코드 블록)
|
||||
|
||||
### ⚠️ 개선 제안 (Warning)
|
||||
- 위치: [라인 번호]
|
||||
- 내용: (잠재적 위험 또는 가독성/성능 개선 제안)
|
||||
|
||||
-->
|
||||
|
||||
<!-- 코드 리뷰 프롬프트(심화버전) -->
|
||||
|
||||
# 코드 리뷰 프롬프트
|
||||
다음 지침에 따라 코드를 검토하고 코드 리뷰 레포트(code_review_report.md)를 작성해주세요.
|
||||
|
||||
## [1. 분석 컨텍스트]
|
||||
정확한 분석을 위해 아래 정보를 기반으로 코드를 검토하십시오.
|
||||
- 언어/프레임워크: (예: Python 3.11, React 18, Spring Boot)
|
||||
- 코드의 목적: (예: 사용자 인증, 데이터 파싱, 결제 트랜잭션)
|
||||
- 주요 제약사항: (예: 높은 동시성, 메모리 최적화, 엄격한 보안 기준)
|
||||
|
||||
## [2. 역할 및 원칙]
|
||||
당신은 '무관용 원칙'을 가진 수석 소프트웨어 아키텍트입니다.
|
||||
- 목표: 칭찬보다는 결함(Bug), 보안 취약점, 성능 병목, 유지보수 저해 요소를 찾아내는 데 집중하십시오.
|
||||
- 금지: 코드에 없는 내용을 추측하여 지적하지 마십시오(Zero Hallucination).
|
||||
- 기준: "작동한다"에 만족하지 말고, "견고하고 안전한가"를 기준으로 판단하십시오.
|
||||
|
||||
## [3. 사전 단계: 의도 파악]
|
||||
분석 전, 이 코드가 수행하는 핵심 로직을 3줄 이내로 요약하여, 당신이 코드를 올바르게 이해했는지 먼저 보여주십시오.
|
||||
|
||||
## [4. 심층 검토 체크리스트]
|
||||
다음 항목을 기준으로 코드를 해부하십시오.
|
||||
### 1. 논리 및 엣지 케이스 (Logic & Edge Cases)
|
||||
- 가상 실행: 코드를 한 줄씩 추적하며 변수 상태 변화를 검증했는가?
|
||||
- 경계값: Null, 빈 값, 음수, 최대값 등 극한의 입력에서 로직이 깨지지 않는가?
|
||||
- 예외 처리: 에러를 단순히 삼키지 않고(Silent Failure), 적절히 처리하거나 전파하는가?
|
||||
- 모듈성 및 API 설계: 함수/클래스의 공개 인터페이스(Public Interface)가 직관적이고 일관성이 있는가? 테스트 용이성(Testability)을 위해 의존성이 잘 분리되었는가?
|
||||
|
||||
### 2. 보안 및 안정성 (Security & Stability)
|
||||
- 입력 검증: SQL 인젝션, XSS, 버퍼 오버플로우 취약점이 없는가?
|
||||
- 정보 노출: 비밀번호, API 키, PII(개인정보)가 하드코딩되거나 로그에 남지 않는가?
|
||||
- 자원 관리 및 메모리 안정성:
|
||||
- 일반: 파일, DB 연결, 네트워크 소켓 등 모든 자원은 예외 발생 시에도 확실히 해제되는가?
|
||||
- 언어별 핵심 원칙 (조건부 검증):
|
||||
- (C++ 프로젝트인 경우): Raw pointer (`new`/`delete`)가 발견되지 않는가? 동적 자원은 스마트 포인터(RAII)로 관리되며, 함수가 예외 안전성을 제공하는가?
|
||||
- (Python 프로젝트인 경우): 불필요한 참조 순환이나 메모리 누수 패턴이 없는가? 멀티스레딩 환경에서 동시성(Locking) 처리가 올바른가?
|
||||
|
||||
### 3. 동시성 및 성능 (Concurrency & Performance)
|
||||
- 동기화: (해당 시) 경쟁 상태(Race Condition), 데드락, 스레드 안전성 문제가 없는가?
|
||||
- 효율성: 불필요한 중첩 반복문(O(n²))이나 중복 연산이 없는가?
|
||||
- 시스템 성능:
|
||||
- I/O 병목: DB 쿼리나 네트워크 호출이 불필요하게 반복(N+1 쿼리)되거나 동기적으로 실행되어 시스템 전체를 막는 부분이 없는가?
|
||||
- C++ (캐시 효율): 대용량 데이터 구조 설계 시 CPU 캐시 효율성(Cache Locality)이 고려되었는가?
|
||||
|
||||
## [5. 출력 형식: 결함 보고서]
|
||||
발견된 문제가 없다면 "특이사항 없음"으로 명시하십시오. 문제가 있다면 아래 양식을 엄수해 주세요.
|
||||
|
||||
### 🚨 치명적 문제 (Critical Issues)
|
||||
(서비스 중단, 데이터 손실/오염, 보안 사고 위험이 있는 경우)
|
||||
|
||||
[C-1] 문제 제목
|
||||
├─ 위치: [파일경로:라인] 또는 [코드 스니펫 3~5줄]
|
||||
├─ 원인: [기술적 원인 설명]
|
||||
├─ 재현/조건: [문제가 발생하는 상황]
|
||||
└─ 해결책: [수정된 코드 블록 (Auto-Fix)]
|
||||
|
||||
### ⚠️ 개선 제안 (Warnings & Improvements)
|
||||
(성능 저하, 유지보수성 부족, 잠재적 버그)
|
||||
|
||||
[W-1] 문제 제목
|
||||
├─ 위치: [파일경로:라인] 또는 [코드 스니펫]
|
||||
├─ 분석: [문제점 설명]
|
||||
└─ 권장 조치: [리팩토링 제안]
|
||||
|
||||
### ✅ 잘된 점 (Strengths)
|
||||
(핵심적인 장점 1~2가지만 간결하게)
|
||||
104
docs/user_guide.md
Normal file
104
docs/user_guide.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# xxx 사용 가이드
|
||||
|
||||
## 개요
|
||||
xxx
|
||||
|
||||
## 1. 사전 준비 (필수)
|
||||
|
||||
### 1.1 xxx
|
||||
1. xxx
|
||||
2. xxx
|
||||
3. xxx
|
||||
|
||||
### 1.2 xxx
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
|
||||
### 1.3 환경변수 설정 (`.env` 파일)
|
||||
```bash
|
||||
# xxx
|
||||
xxx
|
||||
|
||||
# xxx
|
||||
xxx
|
||||
```
|
||||
|
||||
⚠️ `.env` 파일을 `.gitignore`에 추가하여 비밀 정보를 저장소에 커밋하지 마세요.
|
||||
|
||||
## 2. config.json 설정
|
||||
|
||||
### 2.1 기본 설정 (신중하게)
|
||||
```json
|
||||
{
|
||||
xxx
|
||||
}
|
||||
```
|
||||
|
||||
### 2.2 각 항목 설명
|
||||
|
||||
#### xxx
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
|
||||
#### xxx
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
|
||||
## 3. xxx
|
||||
|
||||
### xxx
|
||||
- [ ] xxx
|
||||
- [ ] xxx
|
||||
- [ ] xxx
|
||||
|
||||
### xxx
|
||||
- [ ] xxx
|
||||
- [ ] xxx
|
||||
- [ ] xxx
|
||||
|
||||
## 4. xxx
|
||||
|
||||
### 4.1 xxx
|
||||
1. xxx
|
||||
2. xxx
|
||||
3. xxx
|
||||
|
||||
### 4.2 xxx
|
||||
1. xxx
|
||||
2. xxx
|
||||
3. xxx
|
||||
|
||||
## 5. 운영 (Troubleshooting)
|
||||
|
||||
### xxx
|
||||
1. xxx
|
||||
2. xxx
|
||||
3. xxx
|
||||
|
||||
### xxx
|
||||
1. xxx
|
||||
2. xxx
|
||||
3. xxx
|
||||
|
||||
## 6. 성능/안정성 팁
|
||||
|
||||
1. xxx:
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
|
||||
2. xxx:
|
||||
- xxx
|
||||
- xxx
|
||||
- xxx
|
||||
|
||||
## 7. FAQ
|
||||
|
||||
**Q: xxx**
|
||||
A: xxx
|
||||
|
||||
**Q: xxx**
|
||||
A: xxx
|
||||
70
docs/workflow.md
Normal file
70
docs/workflow.md
Normal file
@@ -0,0 +1,70 @@
|
||||
<!-- 사용 방법 (워크플로우) -->
|
||||
|
||||
# Automated Development Workflow Protocol
|
||||
|
||||
이 문서는 AI가 프로젝트를 **자동으로 진행**하기 위한 행동 수칙을 정의합니다.
|
||||
사용자가 **"워크플로우로 진행해줘"**라고 명령하면, AI는 아래 **[Execution Loop]**를 따릅니다.
|
||||
|
||||
## 🔄 Execution Loop (반복 실행 규칙)
|
||||
|
||||
AI는 다음 순서를 엄격히 준수해야 합니다.
|
||||
|
||||
1. **Status Check (상태 확인):**
|
||||
- `implementation_plan.md`를 읽고, **체크되지 않은( `[ ]` ) 가장 첫 번째 Phase**를 식별합니다.
|
||||
2. **Proposal & Approval (제안 및 승인 요청):**
|
||||
- 사용자에게 현재 진행해야 할 Phase와 수행할 작업 내용을 요약하여 보고합니다.
|
||||
- **"Phase X 작업을 시작하시겠습니까?"** 라고 묻고, **사용자의 승인(Yes/Go)을 대기**합니다. (즉시 코드를 작성하지 마십시오.)
|
||||
3. **Execution (실행):**
|
||||
- 사용자가 승인하면, 아래 **[Phase Detail Prompts]**에 정의된 해당 단계의 지침에 따라 코드를 작성합니다.
|
||||
- 이때 반드시 `copilot-instructions.md`의 C++/Python 규칙과 `project_requirements.md`의 요구사항을 준수합니다.
|
||||
4. **Update Plan (플랜 업데이트):**
|
||||
- 작업이 완료되면 `implementation_plan.md`의 해당 항목을 체크(`[x]`) 표시하여 업데이트합니다.
|
||||
5. **Self-Correction (자가 점검):**
|
||||
- 작성된 코드가 `review_prompt.md`의 기준(성능, 예외 처리 등)을 충족하는지 확인하고, 부족한 점이 있다면 스스로 수정합니다.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Phase Detail Prompts (단계별 수행 지침)
|
||||
|
||||
AI는 실행 단계(Execution)에서 현재 Phase에 맞는 아래 지침을 수행합니다.
|
||||
|
||||
### Phase 1: 환경 설정 (Setup)
|
||||
- **목표:** 프로젝트 기반 마련 및 의존성 설정
|
||||
- **지침:**
|
||||
1. `copilot-instructions.md`의 Tech Stack을 확인하여 폴더 구조 생성.
|
||||
2. Python(`requirements.txt`, `.env`) 및 C++(`CMakeLists.txt`) 설정 파일 작성.
|
||||
3. `.gitignore` 및 기본 설정 파일 생성.
|
||||
|
||||
### Phase 2: 코어 로직 구현 (Core Domain)
|
||||
- **목표:** 비즈니스 로직 및 데이터 모델 구현
|
||||
- **지침:**
|
||||
1. 코딩 전, **알고리즘 설계와 시간 복잡도**를 주석으로 먼저 작성.
|
||||
2. `copilot-instructions.md`의 **Core Principles**를 준수하여 순수 함수/클래스 구현.
|
||||
3. 반드시 **단위 테스트(Unit Test)** 코드를 함께 작성.
|
||||
|
||||
### Phase 3: 인터페이스 연동 (Integration)
|
||||
- **목표:** 외부 API, DB, UI 연동
|
||||
- **지침:**
|
||||
1. 외부 시스템과의 통신 로직 구현.
|
||||
2. **Error Handling:** 네트워크 실패, 타임아웃 등을 대비한 방어 코드(`try-except`, `RAII`) 작성.
|
||||
3. `project_requirements.md`의 데이터 흐름(Data Flow) 준수 확인.
|
||||
|
||||
### Phase 4: 시스템 통합 (System Interface)
|
||||
- **목표:** 메인 진입점 및 전체 프로세스 연결
|
||||
- **지침:**
|
||||
1. `main.py` 또는 `main.cpp` 진입점 구현.
|
||||
2. 전체 모듈을 연결하고 통합 테스트(Integration Test) 시나리오 작성.
|
||||
3. 실제 실행 가능한 상태인지 검증.
|
||||
|
||||
### Phase 5: 최적화 및 리팩토링 (Refinement)
|
||||
- **목표:** 품질 향상 및 안정화
|
||||
- **지침:**
|
||||
1. `review_prompt.md`를 기준으로 전체 코드 리뷰 수행.
|
||||
2. 성능 병목(O(N^2) 이상) 및 메모리 누수 점검.
|
||||
3. 최종 문서(README.md) 작성.
|
||||
|
||||
---
|
||||
|
||||
## 🛑 Exception Handling
|
||||
- 작업 중 에러가 발생하거나 정보가 부족하면 즉시 중단하고 사용자에게 구체적인 질문을 하십시오.
|
||||
- 사용자가 "중단" 또는 "수정"을 요청하면 즉시 루프를 멈추고 지시를 따르십시오.
|
||||
86
docs/workflow_manual.md
Normal file
86
docs/workflow_manual.md
Normal file
@@ -0,0 +1,86 @@
|
||||
<!-- 사용 방법 (워크플로우) -->
|
||||
|
||||
# Manual Usage & Prompt Guide
|
||||
|
||||
이 문서는 **자동 워크플로우(`workflow.md`)를 사용하지 않거나**, 특정 단계만 **수동으로 실행/재실행**해야 할 때 사용하는 프롬프트 모음집입니다. 상황에 맞는 프롬프트를 선택하여 AI에게 복사-붙여넣기 하세요.
|
||||
|
||||
---
|
||||
|
||||
## 1. 프로젝트 시작 및 초기화 (Initialization)
|
||||
|
||||
**상황:** 새로운 세션을 시작하거나, AI가 프로젝트 문맥을 잊어버렸을 때 사용합니다.
|
||||
|
||||
### 📂 Step 1: 문맥 주입 (Context Loading)
|
||||
> "첨부된 `copilot-instructions.md`, `project_requirements.md`, `implementation_plan.md`를 모두 읽고, 이 프로젝트의 목표와 내가 구축하려는 시스템의 아키텍처를 요약해주세요. 그리고 `implementation_plan.md`의 단계들이 적절한지 검토해주세요."
|
||||
|
||||
### 🔍 Step 2: 계획 검증 (Plan Validation)
|
||||
> "`implementation_plan.md`의 내용이 충분히 구체적인가? 만약 부족한 부분이 있다면 Python/C++ 프로젝트 표준에 맞춰서 수정해주세요. (수정이 없다면 이 단계는 생략)"
|
||||
|
||||
---
|
||||
|
||||
## 2. 단계별 실행 프롬프트 (Phase Execution)
|
||||
|
||||
**상황:** `implementation_plan.md`의 특정 단계를 실행할 때 사용합니다. (원하는 단계만 골라서 사용 가능)
|
||||
|
||||
### 🚀 Phase 1: 환경 설정 (Setup)
|
||||
> "`implementation_plan.md`의 **[Phase 1]** 작업을 시작한다.
|
||||
> `copilot-instructions.md`의 **Tech Stack**에 맞춰 폴더 구조를 잡고, 필요한 설정 파일(.env, requirements.txt, CMakeLists.txt 등)을 작성해줘.
|
||||
> 작성 후에는 `implementation_plan.md`의 해당 항목을 체크(x)해주세요."
|
||||
|
||||
### 🧩 Phase 2: 코어 로직 구현 (Core Domain)
|
||||
> "`implementation_plan.md`의 **[Phase 2]** 작업을 수행한다.
|
||||
> `copilot-instructions.md`의 **Core Principles**를 준수하여 비즈니스 로직과 도메인 모델을 구현해주세요.
|
||||
> **중요:** 코드를 작성하기 전에 **로직 설계와 시간 복잡도**를 먼저 설명하고, 반드시 **단위 테스트(Unit Test)** 코드를 함께 작성해주세요."
|
||||
|
||||
### 🔌 Phase 3: 인터페이스 연동 (Integration)
|
||||
> "`implementation_plan.md`의 **[Phase 3]** 작업을 수행한다.
|
||||
> 외부 API 연동, DB 연결, 또는 UI 컴포넌트를 구현해주세요.
|
||||
> **Error Handling:** 예외 상황(네트워크 실패, DB 연결 끊김 등)에 대한 처리를 `try-except`(Python) 또는 `RAII/Exception Safety`(C++) 규칙에 맞춰 견고하게 작성해주세요."
|
||||
|
||||
### 🖥️ Phase 4: 시스템 통합 (System Interface)
|
||||
> "`implementation_plan.md`의 **[Phase 4]** 작업을 수행한다.
|
||||
> 전체 모듈을 하나로 묶는 메인 진입점(Main Entry Point)을 작성하고, 전체 프로세스가 유기적으로 동작하는지 검증하는 **통합 테스트(Integration Test)** 시나리오를 작성해주세요."
|
||||
|
||||
### ⚡ Phase 5: 최적화 및 리팩토링 (Refinement)
|
||||
> "`implementation_plan.md`의 **[Phase 5]** 작업을 수행한다.
|
||||
> 현재 코드에서 **성능 병목(O(N^2) 이상)**이 발생할 수 있는 구간이나 **메모리 누수** 가능성을 분석해주세요.
|
||||
> 그 후, `review_prompt.md`의 기준에 따라 스스로 코드를 리뷰하고 개선안을 적용해주세요."
|
||||
|
||||
---
|
||||
|
||||
## 3. 자동 진행 및 복구 (Auto-Pilot & Recovery)
|
||||
|
||||
**상황:** 다음 할 일을 AI가 스스로 찾게 하거나, 꼬인 상황을 풀 때 사용합니다.
|
||||
|
||||
### 🤖 Auto-Pilot (알아서 다음 단계 진행)
|
||||
> "`implementation_plan.md`를 확인해서 **아직 완료되지 않은(체크되지 않은) 가장 첫 번째 작업**을 수행해주세요.
|
||||
> `copilot-instructions.md`의 규칙을 철저히 지켜서 코드를 작성하고, 작업이 끝나면 플랜 파일을 업데이트해주세요."
|
||||
|
||||
### 🚑 Troubleshooting (품질/방향성 교정)
|
||||
|
||||
**Q. AI가 엉뚱하거나 질 낮은 코드를 작성할 때**
|
||||
> "방금 작성한 코드를 멈추고, `review_prompt.md`를 기준으로 다시 리뷰해주세요. 치명적인 결함이나 개선할 점을 찾아서 보고하고 코드를 수정해주세요."
|
||||
|
||||
**Q. 진행 상황(체크박스)이 실제와 다를 때**
|
||||
*(사용자가 파일을 직접 수정한 뒤 명령)*
|
||||
> "`implementation_plan.md` 파일을 다시 읽어봐. 내가 현재 진행 상황을 업데이트했으니, 체크되지 않은 항목부터 다시 작업을 이어가주세요."
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
copilot-instructions.md 지침을 따라서 작업해주세요.
|
||||
project_requirements.md 파일에 작성된 템플릿에 맞춰 프로그램 요구사항을 작성한 후
|
||||
implementation_plan.md 파일에 작성된 템플릿에 맞춰 작업계획을 작성해주세요.
|
||||
프로그램 요구사항과 작업계획을 작성하기전에 필요한 데이터가 부족하면 나한테 물어보고 데이터 준비가 완료되면 작성해주세요.
|
||||
프로그램에 요구되는 기능은 다음과 같습니다.
|
||||
|
||||
xxx
|
||||
|
||||
더 필요한 내용이 있다면 물어봐주세요.
|
||||
|
||||
workflow.md 지침에 따라 작업을 진행해주세요.
|
||||
|
||||
review_prompt.md 지침에 따라 코드를 검토해주세요.
|
||||
|
||||
이 프로그램을 사용하는 방법을 user_guide.md 파일에 작성해줘.
|
||||
91
git_init.bat.bat
Normal file
91
git_init.bat.bat
Normal file
@@ -0,0 +1,91 @@
|
||||
@echo off
|
||||
chcp 65001 > nul
|
||||
cls
|
||||
echo ========================================================
|
||||
echo Git 초기 설정 마법사 V2 (for Gitea)
|
||||
echo ========================================================
|
||||
echo.
|
||||
echo [!] 이 파일은 프로젝트 폴더의 최상위에 위치해야 합니다.
|
||||
echo [!] Gitea에서 저장소를 생성한 후, HTTPS 주소를 준비해주세요.
|
||||
echo.
|
||||
|
||||
:: 1. 원격 저장소 URL 입력받기
|
||||
set /p REMOTE_URL="[입력] Gitea 저장소 주소 (HTTPS)를 붙여넣으세요: "
|
||||
|
||||
if "%REMOTE_URL%"=="" (
|
||||
echo [오류] 주소가 입력되지 않았습니다. 창을 닫고 다시 실행해주세요.
|
||||
pause
|
||||
exit
|
||||
)
|
||||
|
||||
echo.
|
||||
echo --------------------------------------------------------
|
||||
echo [Step 0] Git 사용자 정보 확인...
|
||||
:: 사용자 이름이 설정되어 있는지 확인합니다.
|
||||
git config user.name >nul 2>&1
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
echo - 사용자 정보가 없습니다. 설정을 시작합니다.
|
||||
echo.
|
||||
set /p GIT_USER="[입력] 사용자 이름 (예: tae2564): "
|
||||
set /p GIT_EMAIL="[입력] 이메일 주소 (예: tae2564@gmail.com): "
|
||||
|
||||
:: 입력받은 정보를 이 프로젝트에만 적용(local) 할지, PC 전체(global)에 할지 선택
|
||||
:: 여기서는 편의상 Global로 설정합니다.
|
||||
git config --global user.name "%GIT_USER%"
|
||||
git config --global user.email "%GIT_EMAIL%"
|
||||
echo - 사용자 정보 등록 완료!
|
||||
) else (
|
||||
echo - 기존 사용자 정보가 감지되었습니다. 건너뜁니다.
|
||||
)
|
||||
|
||||
echo.
|
||||
echo [Step 1] 저장소 초기화 중...
|
||||
git init
|
||||
|
||||
echo.
|
||||
echo [Step 2] .gitignore 파일 생성 중 (Python용)...
|
||||
if not exist .gitignore (
|
||||
(
|
||||
echo __pycache__/
|
||||
echo *.py[cod]
|
||||
echo .venv/
|
||||
echo venv/
|
||||
echo .env
|
||||
echo .vscode/
|
||||
echo .idea/
|
||||
echo *.log
|
||||
) > .gitignore
|
||||
echo - .gitignore 파일이 생성되었습니다.
|
||||
) else (
|
||||
echo - .gitignore 파일이 이미 존재하여 건너뜁니다.
|
||||
)
|
||||
|
||||
echo.
|
||||
echo [Step 3] 파일 담기 및 첫 커밋...
|
||||
git add .
|
||||
git commit -m "최초 프로젝트 업로드 (Script Auto Commit)"
|
||||
|
||||
echo.
|
||||
echo [Step 4] 브랜치 이름 변경 (master - main)...
|
||||
git branch -M main
|
||||
|
||||
echo.
|
||||
echo [Step 5] 원격 저장소 연결...
|
||||
git remote remove origin 2>nul
|
||||
git remote add origin %REMOTE_URL%
|
||||
|
||||
echo.
|
||||
echo [Step 6] 서버로 업로드 (Push)...
|
||||
echo - 로그인 창이 뜨면 아이디와 비밀번호를 입력하세요.
|
||||
git push -u origin main
|
||||
|
||||
echo.
|
||||
echo ========================================================
|
||||
if %ERRORLEVEL% == 0 (
|
||||
echo [성공] 모든 설정이 완료되었습니다!
|
||||
echo 이제부터는 git_upload.bat 파일을 사용해 수정사항을 올리세요.
|
||||
) else (
|
||||
echo [실패] 오류가 발생했습니다. 위 메시지를 확인해주세요.
|
||||
)
|
||||
echo ========================================================
|
||||
pause
|
||||
26
git_upload.bat
Normal file
26
git_upload.bat
Normal file
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
chcp 65001
|
||||
echo ==============================================
|
||||
echo Git Auto Uploader (Gitea)
|
||||
echo ==============================================
|
||||
|
||||
:: 1. 변경된 모든 파일 담기
|
||||
echo [Step 1] Adding files...
|
||||
git add .
|
||||
|
||||
:: 2. 커밋 메시지 입력받기 (입력 안 하면 날짜로 자동 입력)
|
||||
set /p msg="Commit message (Enter for auto-date): "
|
||||
if "%msg%"=="" set msg=Auto Update: %date% %time%
|
||||
|
||||
:: 3. 로컬 저장소에 커밋
|
||||
echo [Step 2] Committing with message: "%msg%"
|
||||
git commit -m "%msg%"
|
||||
|
||||
:: 4. 서버로 푸시 (업로드)
|
||||
echo [Step 3] Pushing to Gitea Server...
|
||||
git push origin main
|
||||
|
||||
echo ==============================================
|
||||
echo Upload Complete!
|
||||
echo ==============================================
|
||||
pause
|
||||
2
pytest.ini
Normal file
2
pytest.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
[pytest]
|
||||
testpaths = src/tests
|
||||
7
requirements.txt
Normal file
7
requirements.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
pyupbit
|
||||
pandas
|
||||
pandas_ta
|
||||
requests
|
||||
python-dotenv
|
||||
pytest
|
||||
chardet
|
||||
Reference in New Issue
Block a user