init
Auto Bump and Publish / bump-and-publish (push) Failing after 8m24s
CI / lint-and-test (20) (push) Successful in 1m1s
CI / lint-and-test (22) (push) Successful in 1m3s

This commit is contained in:
Tom You
2026-06-11 15:16:51 +09:00
commit 083505c952
30 changed files with 8530 additions and 0 deletions
+108
View File
@@ -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
```