init
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# damn-my-slow-skt
|
||||
|
||||
SKT/SK브로드밴드 인터넷 SLA 속도 미달 시 요금 감면 자동화를 목표로 하는 CLI 도구.
|
||||
|
||||
## 개요
|
||||
|
||||
SK브로드밴드는 Myspeed에서 인터넷 품질 측정과 인터넷 SLA 속도측정을 제공한다. 이 도구는 공식 측정 흐름을 자동 실행하고 결과를 저장하며, 미달 시 감면 처리까지 이어가도록 설계한다.
|
||||
|
||||
## 핵심 기능
|
||||
|
||||
1. **SKT/B world 로그인 진입** (Playwright 기반 브라우저 자동화)
|
||||
2. **SK브로드밴드 공식 SLA 속도 측정 실행** (myspeed.skbroadband.com)
|
||||
3. **측정 결과 기록** (SQLite / JSON fallback)
|
||||
4. **속도 미달 시 감면 신청 처리**
|
||||
5. **SKT/SK브로드밴드 공식 이용약관 동의 기록**
|
||||
6. **결과 리포트** (Discord/Telegram 알림 옵션)
|
||||
7. **다회 측정** - 하루 최대 N회, 감면 성공 시 자동 스킵
|
||||
8. **업데이트 마이그레이션** - 버전 업 시 설정 변경 안내
|
||||
|
||||
## SK브로드밴드 SLA 측정 플로우
|
||||
|
||||
1. http://myspeed.skbroadband.com/mesu/internet_sla.asp 접속
|
||||
2. "SLA 속도측정 시작하기" 클릭
|
||||
3. B world/T아이디 또는 간편인증 로그인
|
||||
4. 회선/측정 환경 확인
|
||||
5. 5회 자동 측정 완료 대기
|
||||
6. 결과 파싱 → SLA pass/fail 판단
|
||||
7. fail 시 품질 점검/감면 처리 단계 진행
|
||||
|
||||
## SLA 기준
|
||||
|
||||
- 30분간 5회 이상 측정
|
||||
- 측정치의 60% 이상이 최저속도(다운로드 속도)에 미달하면 당일 이용요금 감면
|
||||
- 유선(LAN) 연결 권장, 무선랜/공유환경/부적합 LAN카드 등은 감면 제외 가능
|
||||
|
||||
## 기술 스택
|
||||
|
||||
- **언어**: TypeScript (Node.js 20+)
|
||||
- **브라우저 자동화**: Playwright (headless Chromium)
|
||||
- **스케줄링**: macOS launchd / Linux systemd timer / crontab
|
||||
- **설정**: YAML (`~/.damn-my-slow-isp/config-skt.yaml`)
|
||||
- **데이터 저장**: SQLite (Node 22+ built-in) / JSON fallback
|
||||
- **알림**: Discord webhook / Telegram bot (선택)
|
||||
- **배포**: npm registry (`npx damn-my-slow-skt`)
|
||||
|
||||
## 설정 파일 (`~/.damn-my-slow-isp/config-skt.yaml`)
|
||||
|
||||
```yaml
|
||||
_config_version: 4
|
||||
credentials:
|
||||
id: "사용자ID"
|
||||
password: "비밀번호"
|
||||
terms:
|
||||
provider: "skt"
|
||||
accepted: true
|
||||
accepted_at: "2026-03-30T00:00:00.000Z"
|
||||
version: "2026-03-30"
|
||||
urls:
|
||||
- "https://www.bworld.co.kr/footer/terms.do?menu_id=F01010000"
|
||||
- "https://cdn.bworld.co.kr/home/fronta/data/download/stip/제31차%20전기통신서비스이용기본약관_260330.pdf"
|
||||
phone: "01012345678"
|
||||
plan:
|
||||
speed_mbps: 1000
|
||||
schedule:
|
||||
time: "04:00"
|
||||
timezone: "Asia/Seoul"
|
||||
max_attempts: 10
|
||||
retry_interval_minutes: 120
|
||||
stop_on_complaint_success: true
|
||||
notification:
|
||||
discord_webhook: ""
|
||||
telegram_bot_token: ""
|
||||
telegram_chat_id: ""
|
||||
headless: true
|
||||
db_path: "~/.damn-my-slow-isp/history-skt.db"
|
||||
```
|
||||
|
||||
`init`은 위 약관 URL을 표시하고 명시적 동의를 받은 뒤 설정을 저장한다. v4 마이그레이션도 같은 공식 URL을 표시하고 동의를 기록한다. `run`은 현재 SKT 약관 버전 동의가 없으면 필수 설정 누락으로 종료한다.
|
||||
|
||||
## CLI 인터페이스
|
||||
|
||||
```bash
|
||||
damn-my-slow-skt init
|
||||
damn-my-slow-skt run
|
||||
damn-my-slow-skt run --dry-run
|
||||
damn-my-slow-skt run --force
|
||||
damn-my-slow-skt config show
|
||||
damn-my-slow-skt history
|
||||
damn-my-slow-skt report
|
||||
damn-my-slow-skt schedule install
|
||||
damn-my-slow-skt schedule remove
|
||||
```
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
src/
|
||||
├── index.ts
|
||||
├── cli.ts
|
||||
├── config.ts
|
||||
├── db.ts
|
||||
├── skt.ts
|
||||
├── migration.ts
|
||||
├── notify.ts
|
||||
├── report.ts
|
||||
├── scheduler.ts
|
||||
└── updater.ts
|
||||
```
|
||||
Reference in New Issue
Block a user