Files
openclaw-backups/skills/openclaw-self-healing/docs/level1-tqqq-deployment.md

287 lines
7.3 KiB
Markdown

# Level 1 Auto-Retry - TQQQ 배포
> 배포일: 2026-02-05
> 상태: ✅ 실전 배포 완료
## 개요
TQQQ 15분 모니터링에 Level 1 Auto-Retry 시스템을 적용하여 Yahoo Finance API 일시적 장애 시 자동 복구 가능하게 개선.
## 배포 내용
### 1. 래퍼 스크립트 생성
**파일**: `~/openclaw/scripts/tqqq-monitor-with-retry.js`
```javascript
const { executeWithNotifications } = require('../lib/auto-retry');
async function fetchTQQQ() {
return new Promise((resolve, reject) => {
exec(`${CONFIG.PYTHON_SCRIPT} ${CONFIG.SYMBOL}`, {
timeout: 15000,
maxBuffer: 10 * 1024 * 1024
}, (error, stdout, stderr) => {
if (error) {
if (error.killed || error.signal === 'SIGTERM') {
error.code = 'ETIMEDOUT';
}
reject(error);
} else {
resolve({output: stdout, stderr, duration});
}
});
});
}
const result = await executeWithNotifications(
fetchTQQQ,
{
maxRetries: 3,
backoff: 'exponential',
discordWebhook: CONFIG.DISCORD_WEBHOOK,
taskName: 'TQQQ 15분 모니터링'
}
);
```
**특징:**
- Python 스크립트 (`~/openclaw/skills/yahoo-finance/yf TQQQ`) 래핑
- 타임아웃 에러 자동 분류 (`ETIMEDOUT`)
- 최대 3회 재시도 (exponential backoff)
- Discord 알림 (재시도 중/성공/실패)
- JSONL 로그 (`~/openclaw/logs/auto-retry.jsonl`)
### 2. 실행 테스트
```bash
$ node ~/openclaw/scripts/tqqq-monitor-with-retry.js
📊 TQQQ 15분 모니터링 (with Auto-Retry)
✅ Success after 1 attempt(s)
✅ Success
Attempts: 1
Duration: 1912ms
Script execution: 1912ms
📈 TQQQ POSTPOST
╭─────────────────┬───────────────────╮
│ 항목 │ 값 │
├─────────────────┼───────────────────┤
│ 현재가 (USD)$49.76 │
│ 현재가 (KRW) │ ₩72,507 │
│ 전일 종가 │ $52.52 │
│ 변동 (전일比) │ ▼ $2.76 (-5.26%)
│ 일중 범위 │ $48.43 ~ $52.15 │
│ 일중 범위 (KRW) │ ₩70,569 ~ ₩75,989 │
│ 거래량 │ 140,842,191 │
│ 환율 │ $1 = ₩1,457.13 │
╰─────────────────┴───────────────────╯
⚠️ 5.3% 변동 - 주의 필요!
```
**결과**: ✅ 첫 시도 성공 (1.9초)
### 3. Cron 설정 업데이트
**파일**: `~/.openclaw/cron/jobs.json`
**변경 사항**:
- Cron ID: `c55df4d3-9dd8-490b-b835-0cea8e744476`
- 이름: "TQQQ 15분 모니터링"
- 스케줄: `*/15 * * * *` (15분마다)
**변경 전**:
```bash
~/openclaw/skills/yahoo-finance/yf TQQQ
```
**변경 후**:
```bash
node ~/openclaw/scripts/tqqq-monitor-with-retry.js
```
## 효과
### Before (재시도 없음)
```
API 타임아웃 → ❌ 즉시 실패 → Discord 에러 알림 → 수동 재실행 필요
```
### After (Level 1 적용)
```
API 타임아웃 → 🔄 자동 재시도 (1초 대기) → ✅ 성공
→ 🔄 재시도 2 (2초 대기) → ✅ 성공
→ 🔄 재시도 3 (4초 대기) → ✅ 성공
→ ❌ 최종 실패 (3회 후)
```
**예상 개선율**:
- 일시적 네트워크 장애: 90% 자동 복구
- 사람 개입 필요: 10%로 감소 (현재 100% → 10%)
## 로그 확인
```bash
# 실시간 모니터링
tail -f ~/openclaw/logs/auto-retry.jsonl
# 최근 TQQQ 실행 기록
jq -r 'select(.context.symbol == "TQQQ")' ~/openclaw/logs/auto-retry.jsonl | tail -10
# 재시도 성공 건수
jq -r 'select(.type == "success" and .attempts.length > 1)' ~/openclaw/logs/auto-retry.jsonl | wc -l
```
## 다음 적용 대상
### 우선순위 1 (외부 API 의존)
- [ ] GitHub Watcher (`~/openclaw/skills/github-watcher/check.sh`)
- [ ] Market Volatility (시장 급변 감지)
- [ ] 일일 주식 브리핑
### 우선순위 2 (네트워크 의존)
- [ ] Trend Hunter
- [ ] 매일 뉴스 분석
- [ ] GitHub 트렌드 감시
### 우선순위 3 (안정성 중요)
- [ ] 월급날 정기투자 알림
- [ ] 환율 모니터링
## 검증 포인트
### 1주차 검증 (2026-02-05 ~ 02-12)
- [ ] 재시도 발생 횟수 확인 (로그 분석)
- [ ] 자동 복구 성공률 측정
- [ ] Discord 알림 정상 작동 확인
- [ ] 최종 실패 건수 확인
### 2주차 확장 (2026-02-12 ~ 02-19)
- [ ] 다른 cron에 적용 (3-5개)
- [ ] 설정 최적화 (backoff, maxRetries)
### 3주차 안정화 (2026-02-19 ~ 02-26)
- [ ] 전체 cron 적용
- [ ] Level 2 설계 (파라미터 자동 조정)
## 기술 상세
### 에러 분류
**재시도 가능** (Retryable):
- Network: `ETIMEDOUT`, `ECONNRESET`, `ENOTFOUND`, `EAI_AGAIN`, `ECONNREFUSED`
- HTTP: 408, 429, 500, 502, 503, 504
**재시도 불가** (Non-retryable):
- HTTP: 400, 401, 403, 404
- File: `ENOENT`
- Logic: 기타 모든 에러
### Backoff 전략
**Exponential** (기본):
```
Attempt 1: 즉시
Attempt 2: 1초 후
Attempt 3: 2초 후
Attempt 4: 4초 후
Attempt 5: 8초 후
```
### Discord 알림 형식
**재시도 중** (Orange):
```
🔄 재시도 중
TQQQ 15분 모니터링 (시도 2/3)
에러: Request timeout
카테고리: timeout
다음 시도: 2000ms 후
```
**성공** (Green):
```
✅ 재시도 성공
TQQQ 15분 모니터링 (2번째 시도에서 성공)
```
**최종 실패** (Red):
```
❌ 최종 실패
TQQQ 15분 모니터링 (3회 시도 후 실패)
제안: Network timeout - check connection or increase timeout
```
## 파일 목록
```
~/openclaw/
├── scripts/
│ └── tqqq-monitor-with-retry.js (새로 생성)
├── lib/
│ └── auto-retry.js (공통 라이브러리)
├── logs/
│ └── auto-retry.jsonl (자동 생성)
├── docs/
│ ├── auto-retry-integration.md (통합 가이드)
│ └── level1-tqqq-deployment.md (이 문서)
└── examples/
├── demo-retry.js (데모)
└── auto-retry-usage.js (사용 예시)
```
## 설정
**CONFIG** (`tqqq-monitor-with-retry.js`):
```javascript
{
PYTHON_SCRIPT: '~/openclaw/skills/yahoo-finance/yf',
SYMBOL: 'TQQQ',
MAX_RETRIES: 3,
BACKOFF: 'exponential',
DISCORD_WEBHOOK: '~/.openclaw/monitoring.json',
POSITION: {
avgPrice: 50.79,
shares: 137,
totalInvested: 10096898
},
STRATEGY: {
stopLoss: 47.00, // -7.5%
buyMore: 49.26, // -3%
takeProfit: 52.31 // +3%
}
}
```
## 주의사항
1. **Python 스크립트 변경 금지**
- 기존 `~/openclaw/skills/yahoo-finance/yf` 스크립트는 변경하지 않음
- 래퍼만 추가하는 방식으로 호환성 유지
2. **Cron 실행 주기**
- 15분마다 실행 (`*/15 * * * *`)
- 최악의 경우 재시도로 최대 7초 소요 (1+2+4)
- 15분 간격이므로 충분한 여유
3. **Discord 알림**
- 재시도 발생 시에만 알림 (성공 시 조용)
- 최종 실패 시 빨간색 알림
- 알림 spam 방지 (15분당 최대 1회)
4. **로그 관리**
- JSONL 형식으로 누적 (rotate 필요 시 별도 설정)
- 위치: `~/openclaw/logs/auto-retry.jsonl`
- 일주일 후 용량 확인 예정
---
**상태**: ✅ 배포 완료, 실전 모니터링 시작
**다음**: 1주일 후 효과 분석 및 다른 cron 적용 검토