@mulsok/traders-client 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/README.md +42 -5
- package/bin/cli.js +618 -38
- package/dist/server/auth/admin.js +32 -0
- package/dist/server/auth/admin.js.map +1 -0
- package/dist/server/broker/kiwoom/_helpers/symbol-code.js +21 -0
- package/dist/server/broker/kiwoom/_helpers/symbol-code.js.map +1 -0
- package/dist/server/broker/kiwoom/client.js +23 -4
- package/dist/server/broker/kiwoom/client.js.map +1 -1
- package/dist/server/broker/kiwoom/endpoints/account.js +14 -6
- package/dist/server/broker/kiwoom/endpoints/account.js.map +1 -1
- package/dist/server/broker/kiwoom/endpoints/quote.js +99 -13
- package/dist/server/broker/kiwoom/endpoints/quote.js.map +1 -1
- package/dist/server/broker/kiwoom/index.js +1 -1
- package/dist/server/broker/kiwoom/index.js.map +1 -1
- package/dist/server/broker/kiwoom/order-tracker.js +13 -0
- package/dist/server/broker/kiwoom/order-tracker.js.map +1 -1
- package/dist/server/broker/kiwoom/price-feed.js +13 -0
- package/dist/server/broker/kiwoom/price-feed.js.map +1 -1
- package/dist/server/broker/kiwoom/ws/endpoints/condition.js +3 -2
- package/dist/server/broker/kiwoom/ws/endpoints/condition.js.map +1 -1
- package/dist/server/calendar/kst-marker.js +68 -0
- package/dist/server/calendar/kst-marker.js.map +1 -0
- package/dist/server/config.js +370 -72
- package/dist/server/config.js.map +1 -1
- package/dist/server/db/sqlite.js +53 -29
- package/dist/server/db/sqlite.js.map +1 -1
- package/dist/server/diary/writer.js +151 -46
- package/dist/server/diary/writer.js.map +1 -1
- package/dist/server/index.js +166 -11
- package/dist/server/index.js.map +1 -1
- package/dist/server/jobs/universe-sync.js +48 -11
- package/dist/server/jobs/universe-sync.js.map +1 -1
- package/dist/server/jobs/watchdog.js +4 -0
- package/dist/server/jobs/watchdog.js.map +1 -1
- package/dist/server/journal/telemetry.js +11 -0
- package/dist/server/journal/telemetry.js.map +1 -1
- package/dist/server/journal/trade-journal.js +42 -16
- package/dist/server/journal/trade-journal.js.map +1 -1
- package/dist/server/llm/context-builder.js +9 -5
- package/dist/server/llm/context-builder.js.map +1 -1
- package/dist/server/personas/loader.js +46 -16
- package/dist/server/personas/loader.js.map +1 -1
- package/dist/server/personas/persona-agent.js +93 -21
- package/dist/server/personas/persona-agent.js.map +1 -1
- package/dist/server/personas/persona-state.js +198 -19
- package/dist/server/personas/persona-state.js.map +1 -1
- package/dist/server/personas/runner.js +29 -0
- package/dist/server/personas/runner.js.map +1 -1
- package/dist/server/personas/wake-plan.js +4 -67
- package/dist/server/personas/wake-plan.js.map +1 -1
- package/dist/server/readiness.js +70 -0
- package/dist/server/readiness.js.map +1 -1
- package/dist/server/routes.js +276 -12
- package/dist/server/routes.js.map +1 -1
- package/dist/server/screener/engine.js +8 -1
- package/dist/server/screener/engine.js.map +1 -1
- package/dist/server/screener/indicators.js +63 -0
- package/dist/server/screener/indicators.js.map +1 -0
- package/dist/server/server-sync.js +365 -125
- package/dist/server/server-sync.js.map +1 -1
- package/dist/server/share/postgres-publish.js +139 -0
- package/dist/server/share/postgres-publish.js.map +1 -0
- package/dist/server/share/prepare-state.js +50 -0
- package/dist/server/share/prepare-state.js.map +1 -0
- package/dist/server/share/prepare.js +61 -0
- package/dist/server/share/prepare.js.map +1 -0
- package/dist/server/share/publish-cron.js +96 -0
- package/dist/server/share/publish-cron.js.map +1 -0
- package/dist/server/share/snapshot.js +81 -0
- package/dist/server/share/snapshot.js.map +1 -0
- package/dist/server/watchers/condition-watcher.js +57 -16
- package/dist/server/watchers/condition-watcher.js.map +1 -1
- package/dist/web/assets/index-B1C-UX9W.js +88 -0
- package/dist/web/assets/index-N7Xwheka.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +4 -5
- package/dist/web/assets/index-62SMpbaf.js +0 -79
- package/dist/web/assets/index-BPLQR0wt.css +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@mulsok/traders-client`.
|
|
4
|
+
|
|
5
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) ·
|
|
6
|
+
versioning [SemVer](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
## [0.2.0] — 2026-05-10
|
|
9
|
+
|
|
10
|
+
Phase 5e (ADR-016) — admin SQLite ↔ Supabase Postgres ↔ client SQLite 의
|
|
11
|
+
시세 동기화 인프라. 신규 사용자가 키움 호출 없이 admin 이 publish 한
|
|
12
|
+
시세를 download 받아 페르소나 분석 가능.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- `mulsok-client prepare` — 시세 데이터 download 진행률 CLI (5~10분 첫 install)
|
|
16
|
+
- `mulsok-client share dump` — admin SQLite VACUUM INTO + gzip backup
|
|
17
|
+
- `mulsok-client share publish-postgres` — admin SQLite → Supabase Postgres bulk upsert
|
|
18
|
+
- WebUI `PreparePage` — 첫 진입 자동 진행 화면 (readiness 미충족 감지)
|
|
19
|
+
- daemon startup catch-up — 마지막 sync/publish > 6h 면 즉시 fire-and-forget trigger
|
|
20
|
+
- daemon publish cron — 매일 16:35 KST 자동 sync + publish (admin only · 평일)
|
|
21
|
+
- daemon market-pull periodic — 매시간 server-sync 시 vercel `/api/market/*` 에서 incremental pull
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- 키움 fetch 에 30s timeout (AbortController) — fetch + body read 둘 다 보호. rate limiter chain hang 차단.
|
|
25
|
+
- `getDailyChartDeep` 의 `maxRounds` 동적 계산 (`Math.max(6, ⌈totalDays/100⌉)`) — 5,000봉 (20년) backfill 가능
|
|
26
|
+
- universe sync 의 resume 최적화 — 이미 deep 한 종목 skip
|
|
27
|
+
- `/api/local/sync` 의 `onProgress` console.log — 진행 가시화
|
|
28
|
+
- readiness `data-prepared` 항목 detail 에 prepare 진행 hint
|
|
29
|
+
- universe-sync cron 자체는 SPEC-27 ADR-012 로 폐기 유지 — publish-cron 안에서 universe-sync 먼저 실행하도록 통합
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- vercel `/api/market/candles` cursor pagination 의 date 경계 안전 — `last_date` row 들 drop 후 `next_since` 응답 (silent data loss 방지)
|
|
33
|
+
|
|
34
|
+
### Infra
|
|
35
|
+
- `supabase/migrations/0033_market_schema.sql`
|
|
36
|
+
- `market.{universe,daily_candles,sync_meta}` 테이블 + RLS (service_role 전용)
|
|
37
|
+
- `pgrst.db_schemas` 에 `market` 추가 (PostgREST 노출)
|
|
38
|
+
- `pgrst.db_max_rows = 250000` (default 1,000 의 server-side cap 해소)
|
|
39
|
+
|
|
40
|
+
### Dependencies
|
|
41
|
+
- 추가: `@supabase/supabase-js@^2.105.4`
|
|
42
|
+
|
|
43
|
+
### Notes
|
|
44
|
+
- 첫 install 시 `mulsok-client prepare` 또는 webui 진입 시 자동으로 시세 데이터 download
|
|
45
|
+
- 매시간 background market-pull 로 자동 갱신 (수 초 incremental)
|
|
46
|
+
- admin 만 publish 권한 — `SUPABASE_URL` · `SUPABASE_SERVICE_ROLE_KEY` 환경변수 필요
|
|
47
|
+
|
|
48
|
+
## [0.1.1] — 2026-05-09
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
- backfill resume 최적화 — 이미 candleDays 이상 보유한 종목은 skip
|
|
52
|
+
- 보통주 우선 정렬 (D1) — screener 가 reject 하는 비보통주 후순위 처리
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
- ETF prefix 보강 (TREX · 파워 · KoAct · 마스터 · 히어로즈)
|
|
56
|
+
- `screener.maxPeriod` 계산 누락으로 candles 부족 영구 fail
|
|
57
|
+
|
|
58
|
+
### Removed
|
|
59
|
+
- dante 페르소나 artifacts 제거 — 너울 단독 운영 복원
|
|
60
|
+
|
|
61
|
+
## [0.1.0]
|
|
62
|
+
|
|
63
|
+
Initial public release.
|
package/README.md
CHANGED
|
@@ -6,6 +6,10 @@ mulsok-traders 데스크톱 클라이언트 — 한국 주식 AI 자율 트레
|
|
|
6
6
|
|
|
7
7
|
> **베타 1라운드** · macOS only · claude CLI (Claude Code) 권장
|
|
8
8
|
|
|
9
|
+
> 🖥 → ⌨ **SSH · 헤드리스 환경 사용자**: 이 패키지의 모든 운영을 webui 없이
|
|
10
|
+
> CLI 만으로 진행할 수 있습니다. 단계별 가이드 →
|
|
11
|
+
> [mulsok-traders.vercel.app/guide?mode=cli](https://mulsok-traders.vercel.app/guide?mode=cli)
|
|
12
|
+
|
|
9
13
|
## 설치
|
|
10
14
|
|
|
11
15
|
```bash
|
|
@@ -39,14 +43,47 @@ claude --version # 2.x 이상 (https://claude.com/claude-code)
|
|
|
39
43
|
|
|
40
44
|
## 명령어
|
|
41
45
|
|
|
46
|
+
CLI 가 모든 운영 명령을 제공합니다 — webui 없이도 헤드리스 / SSH 환경에서 daemon 을 완전히 제어할 수 있습니다.
|
|
47
|
+
|
|
48
|
+
### Daemon lifecycle
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
mulsok-client status [--json] # daemon · 인증 · 설정 · 계좌 · 감시자 · readiness
|
|
52
|
+
mulsok-client logs # 로그 실시간 tail (Ctrl+C 종료)
|
|
53
|
+
mulsok-client update # npm update + daemon 재시작
|
|
54
|
+
mulsok-client uninstall # 데몬 제거 (데이터 보존)
|
|
55
|
+
mulsok-client help # 도움말
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 설정 (config — webui 우회)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
mulsok-client config show # 현재 설정 (마스킹 표 출력)
|
|
62
|
+
mulsok-client config token <T> # 디바이스 인증 (인자 없으면 stdin 비밀 입력)
|
|
63
|
+
mulsok-client config llm <provider> [--api-key=K] [--model=M]
|
|
64
|
+
# provider: claude-cli·anthropic·openai·gemini
|
|
65
|
+
mulsok-client config broker kiwoom \
|
|
66
|
+
--app-key=K --app-secret=S [--demo|--live]
|
|
67
|
+
mulsok-client config subs list # 구독 목록
|
|
68
|
+
mulsok-client config subs add <slug> # 구독 추가
|
|
69
|
+
mulsok-client config subs remove <slug> # 구독 제거
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 운영
|
|
73
|
+
|
|
42
74
|
```bash
|
|
43
|
-
mulsok-client status
|
|
44
|
-
mulsok-client
|
|
45
|
-
mulsok-client
|
|
46
|
-
mulsok-client
|
|
47
|
-
mulsok-client
|
|
75
|
+
mulsok-client safety status # 현재 safety 상태
|
|
76
|
+
mulsok-client safety halt [reason] # 긴급 정지
|
|
77
|
+
mulsok-client safety resume # 정상 가동 재개
|
|
78
|
+
mulsok-client cycle <slug> # 수동 cycle (7~13분 · 분석 후 요약)
|
|
79
|
+
mulsok-client diary <slug> [--date=YYYY-MM-DD] # 일기 본문 (markdown ANSI · default 오늘)
|
|
80
|
+
mulsok-client diary <slug> --list [--limit=30] # 일기 목록 (날짜·길이·발췌)
|
|
81
|
+
mulsok-client journal [--days=7] [--tail=10] # 최근 이벤트 timeline
|
|
82
|
+
mulsok-client watchers [--persona=slug] # active 감시자 표
|
|
48
83
|
```
|
|
49
84
|
|
|
85
|
+
> 모든 명령은 **daemon HTTP API (127.0.0.1:5903) thin wrapper** 입니다. webui 와 동일한 데이터 흐름이라 인증 토큰·종목 정보 등은 daemon 안에 그대로 보관되며 외부로 송신되지 않습니다.
|
|
86
|
+
|
|
50
87
|
## 업데이트
|
|
51
88
|
|
|
52
89
|
```bash
|