Files
damn-my-slow-skt/README.md
T
Tom You 083505c952
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
init
2026-06-11 15:16:51 +09:00

134 lines
4.7 KiB
Markdown

# 🐌 damn-my-slow-skt
**SKT/SK브로드밴드 인터넷 SLA 속도 미달을 자동으로 측정하고 감면 신청을 돕는 CLI 도구.**
## 이게 뭔데
SK브로드밴드 유선 인터넷은 공식 Myspeed 사이트에서 인터넷 SLA 속도측정을 제공한다. 이 도구는 그 흐름을 Playwright로 실행하고, 결과를 로컬 DB에 남기며, SLA 미달 시 감면 처리까지 이어가도록 설계된 자동화 CLI다.
> 현재 SK브로드밴드 Myspeed는 B world/T아이디/간편인증 기반 로그인 화면을 사용한다. 이전 provider의 셀렉터는 제거했고, SK브로드밴드 공식 진입점과 용어로 전환했다. 실제 감면 제출 셀렉터는 live 계정으로 검증해야 한다.
## 시작하기
### 1. Node.js 설치
Node.js 20 이상이 필요합니다.
```bash
node -v
npm -v
npx -v
```
### 2. 초기 설정
```bash
npx -y damn-my-slow-skt@latest init
```
설정 파일은 `~/.damn-my-slow-isp/config-skt.yaml`에 저장됩니다. 비밀번호는 로컬 YAML 파일에만 저장됩니다.
초기 설정 중 SKT/SK브로드밴드 공식 이용약관 URL이 표시되며, 명시적으로 동의해야 설정 파일이 저장됩니다. 동의하지 않으면 `init`은 설정 파일을 만들지 않고 종료합니다.
### 3. 로그인 세션 저장
SK브로드밴드 Myspeed는 B world/T아이디/간편인증 로그인이 필요합니다. 최초 1회는 브라우저를 열어 직접 인증하고, 세션을 로컬 파일로 저장합니다.
```bash
npx -y damn-my-slow-skt@latest auth login
```
저장 위치는 설정 파일의 `auth_state_path`이며 기본값은 `~/.damn-my-slow-isp/auth-skt.json`입니다. 세션이 만료되면 같은 명령을 다시 실행하세요.
```bash
npx -y damn-my-slow-skt@latest auth status
npx -y damn-my-slow-skt@latest auth clear
```
### 4. 실행
```bash
npx -y damn-my-slow-skt@latest run
```
- `--dry-run`: 측정만 하고 감면 신청은 생략
- `--force`: 오늘 이미 완료했어도 강제로 다시 실행
- `--debug`: 브라우저 창을 띄워 진행 과정을 직접 확인
## SKT/SK브로드밴드 SLA 기준
공식 확인 출처:
- 인터넷 품질 측정: http://myspeed.skbroadband.com/
- 인터넷 SLA 속도측정: http://myspeed.skbroadband.com/mesu/internet_sla.asp
- SK브로드밴드 이용약관: https://www.bworld.co.kr/footer/terms.do?menu_id=F01010000
- 전기통신 서비스 이용약관 PDF: https://cdn.bworld.co.kr/home/fronta/data/download/stip/제31차%20전기통신서비스이용기본약관_260330.pdf
Myspeed SLA 안내 페이지에서 확인한 기준:
- **판정**: 30분간 5회 이상 측정하여 측정치의 60% 이상이 최저속도(다운로드 속도)에 미달하면 당일 이용요금 감면
- **대상**: PC 1대를 이용한 측정. 무선랜, 공유환경, 상품 제공속도보다 낮은 LAN카드 이용 및 설정 변경 등은 제외될 수 있음
- **측정 사이트**: SK브로드밴드 Myspeed 인터넷 SLA 속도측정 메뉴
- **후속 조치**: 최저속도 미달 시 품질 점검 및 더 나은 서비스 제공을 위해 TM 및 방문 점검을 실시할 수 있음
## 설정 바꾸기
`~/.damn-my-slow-isp/config-skt.yaml` 파일을 직접 편집합니다.
```yaml
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"
schedule:
max_attempts: 10
retry_interval_minutes: 120
notification:
discord_webhook: ""
telegram_bot_token: ""
auth_state_path: "~/.damn-my-slow-isp/auth-skt.json"
```
`run` 명령은 `terms.accepted: true`, 현재 약관 `version`, 그리고 유효한 `accepted_at`이 없으면 실행하지 않습니다. 기존 설정은 대화형 `run` 또는 `init --force`에서 약관 동의를 기록하도록 마이그레이션됩니다.
설정 변경 후 스케줄 재등록:
```bash
npx -y damn-my-slow-skt@latest schedule install
```
## 요구사항
- Node.js 20+
- SKT/B world 계정 또는 SK브로드밴드 회선 인증 수단
- SKT/SK브로드밴드 공식 이용약관 동의
- 최초 1회 `auth login`으로 저장한 로그인 세션
- 유선(LAN) 연결 권장
- Playwright Chromium
## 개발
```bash
npm install
npx playwright install chromium
npm run typecheck
npm run lint
npm run build
npm test
```
| Component | Technology |
|-----------|------------|
| Language | TypeScript (ES2020, CommonJS, strict) |
| CLI | Commander + Inquirer + Chalk v4 |
| Browser | Playwright Chromium |
| Storage | node:sqlite / JSON fallback |
| Config | YAML — `~/.damn-my-slow-isp/config-skt.yaml` |