@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.
Files changed (79) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +42 -5
  3. package/bin/cli.js +618 -38
  4. package/dist/server/auth/admin.js +32 -0
  5. package/dist/server/auth/admin.js.map +1 -0
  6. package/dist/server/broker/kiwoom/_helpers/symbol-code.js +21 -0
  7. package/dist/server/broker/kiwoom/_helpers/symbol-code.js.map +1 -0
  8. package/dist/server/broker/kiwoom/client.js +23 -4
  9. package/dist/server/broker/kiwoom/client.js.map +1 -1
  10. package/dist/server/broker/kiwoom/endpoints/account.js +14 -6
  11. package/dist/server/broker/kiwoom/endpoints/account.js.map +1 -1
  12. package/dist/server/broker/kiwoom/endpoints/quote.js +99 -13
  13. package/dist/server/broker/kiwoom/endpoints/quote.js.map +1 -1
  14. package/dist/server/broker/kiwoom/index.js +1 -1
  15. package/dist/server/broker/kiwoom/index.js.map +1 -1
  16. package/dist/server/broker/kiwoom/order-tracker.js +13 -0
  17. package/dist/server/broker/kiwoom/order-tracker.js.map +1 -1
  18. package/dist/server/broker/kiwoom/price-feed.js +13 -0
  19. package/dist/server/broker/kiwoom/price-feed.js.map +1 -1
  20. package/dist/server/broker/kiwoom/ws/endpoints/condition.js +3 -2
  21. package/dist/server/broker/kiwoom/ws/endpoints/condition.js.map +1 -1
  22. package/dist/server/calendar/kst-marker.js +68 -0
  23. package/dist/server/calendar/kst-marker.js.map +1 -0
  24. package/dist/server/config.js +370 -72
  25. package/dist/server/config.js.map +1 -1
  26. package/dist/server/db/sqlite.js +53 -29
  27. package/dist/server/db/sqlite.js.map +1 -1
  28. package/dist/server/diary/writer.js +151 -46
  29. package/dist/server/diary/writer.js.map +1 -1
  30. package/dist/server/index.js +166 -11
  31. package/dist/server/index.js.map +1 -1
  32. package/dist/server/jobs/universe-sync.js +48 -11
  33. package/dist/server/jobs/universe-sync.js.map +1 -1
  34. package/dist/server/jobs/watchdog.js +4 -0
  35. package/dist/server/jobs/watchdog.js.map +1 -1
  36. package/dist/server/journal/telemetry.js +11 -0
  37. package/dist/server/journal/telemetry.js.map +1 -1
  38. package/dist/server/journal/trade-journal.js +42 -16
  39. package/dist/server/journal/trade-journal.js.map +1 -1
  40. package/dist/server/llm/context-builder.js +9 -5
  41. package/dist/server/llm/context-builder.js.map +1 -1
  42. package/dist/server/personas/loader.js +46 -16
  43. package/dist/server/personas/loader.js.map +1 -1
  44. package/dist/server/personas/persona-agent.js +93 -21
  45. package/dist/server/personas/persona-agent.js.map +1 -1
  46. package/dist/server/personas/persona-state.js +198 -19
  47. package/dist/server/personas/persona-state.js.map +1 -1
  48. package/dist/server/personas/runner.js +29 -0
  49. package/dist/server/personas/runner.js.map +1 -1
  50. package/dist/server/personas/wake-plan.js +4 -67
  51. package/dist/server/personas/wake-plan.js.map +1 -1
  52. package/dist/server/readiness.js +70 -0
  53. package/dist/server/readiness.js.map +1 -1
  54. package/dist/server/routes.js +276 -12
  55. package/dist/server/routes.js.map +1 -1
  56. package/dist/server/screener/engine.js +8 -1
  57. package/dist/server/screener/engine.js.map +1 -1
  58. package/dist/server/screener/indicators.js +63 -0
  59. package/dist/server/screener/indicators.js.map +1 -0
  60. package/dist/server/server-sync.js +365 -125
  61. package/dist/server/server-sync.js.map +1 -1
  62. package/dist/server/share/postgres-publish.js +139 -0
  63. package/dist/server/share/postgres-publish.js.map +1 -0
  64. package/dist/server/share/prepare-state.js +50 -0
  65. package/dist/server/share/prepare-state.js.map +1 -0
  66. package/dist/server/share/prepare.js +61 -0
  67. package/dist/server/share/prepare.js.map +1 -0
  68. package/dist/server/share/publish-cron.js +96 -0
  69. package/dist/server/share/publish-cron.js.map +1 -0
  70. package/dist/server/share/snapshot.js +81 -0
  71. package/dist/server/share/snapshot.js.map +1 -0
  72. package/dist/server/watchers/condition-watcher.js +57 -16
  73. package/dist/server/watchers/condition-watcher.js.map +1 -1
  74. package/dist/web/assets/index-B1C-UX9W.js +88 -0
  75. package/dist/web/assets/index-N7Xwheka.css +1 -0
  76. package/dist/web/index.html +2 -2
  77. package/package.json +4 -5
  78. package/dist/web/assets/index-62SMpbaf.js +0 -79
  79. package/dist/web/assets/index-BPLQR0wt.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server-sync.js","sourceRoot":"","sources":["../../src-server/server-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-sync.js","sourceRoot":"","sources":["../../src-server/server-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Phase 5e-1' · admin SQLite → Supabase Postgres (market.*) bulk publish.
3
+ *
4
+ * 흐름:
5
+ * 1. admin 만 호출 가능 (endpoint 단에서 isAdmin 체크 — 본 모듈은 무관심)
6
+ * 2. SQLite (~/.mulsok-traders/market.db) 의 universe + daily_candles 를
7
+ * chunk 단위로 읽어 Postgres 의 market.universe / market.daily_candles 에 upsert
8
+ * 3. 멱등 — onConflict(code,date) / onConflict(code) 로 재실행 안전
9
+ * 4. progress 콜백 — chunk 단위 진행 알림
10
+ *
11
+ * 환경변수:
12
+ * - SUPABASE_URL (예: https://lqwrnmubxlhqfarmvejn.supabase.co)
13
+ * - SUPABASE_SERVICE_ROLE_KEY (admin only · ~/.mulsok-traders/.env 에 보관)
14
+ *
15
+ * chunk 크기:
16
+ * - 1,000 row · Supabase REST 의 ~10MB body 한도 안전 (~80B/row × 1000 = 80KB)
17
+ * - 너무 작으면 round-trip overhead, 너무 크면 timeout · network 실패
18
+ *
19
+ * 멱등성:
20
+ * - daily_candles: PRIMARY KEY (code, date) → 같은 row 재실행 시 update
21
+ * - universe: PRIMARY KEY (code) → 같은 code 재실행 시 update
22
+ * - 도중 중단 → 다음 실행 시 처음부터 다시 (resume 최적화 5e-3 단계에서 추가)
23
+ */
24
+ import { createClient } from "@supabase/supabase-js";
25
+ import { getDb, recordSync } from "../db/sqlite.js";
26
+ const CHUNK_SIZE = 1000;
27
+ function getSupabase() {
28
+ const url = process.env.SUPABASE_URL;
29
+ const key = process.env.SUPABASE_SERVICE_ROLE_KEY;
30
+ if (!url || !key) {
31
+ return {
32
+ error: "SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY 미설정 — ~/.mulsok-traders/.env 에 추가 후 daemon restart",
33
+ };
34
+ }
35
+ return createClient(url, key, {
36
+ auth: { persistSession: false, autoRefreshToken: false },
37
+ });
38
+ }
39
+ export async function publishToPostgres(opts = {}) {
40
+ const start = Date.now();
41
+ const supabase = getSupabase();
42
+ if ("error" in supabase)
43
+ return { ok: false, error: supabase.error };
44
+ const db = getDb();
45
+ let universeRows = 0;
46
+ let candleRows = 0;
47
+ /* ─── 1. universe ─── */
48
+ if (!opts.candlesOnly) {
49
+ const total = db.prepare("SELECT COUNT(*) AS n FROM universe").get().n;
50
+ if (total > 0) {
51
+ const stmt = db.prepare("SELECT * FROM universe");
52
+ const all = stmt.all();
53
+ for (let i = 0; i < all.length; i += CHUNK_SIZE) {
54
+ const chunk = all.slice(i, i + CHUNK_SIZE);
55
+ const { error } = await supabase
56
+ .schema("market")
57
+ .from("universe")
58
+ .upsert(chunk, { onConflict: "code" });
59
+ if (error) {
60
+ return { ok: false, error: `universe upsert 실패 (chunk ${i}): ${error.message}` };
61
+ }
62
+ universeRows += chunk.length;
63
+ opts.onProgress?.("universe", universeRows, total);
64
+ }
65
+ }
66
+ }
67
+ /* ─── 2. daily_candles ─── */
68
+ if (!opts.universeOnly) {
69
+ const total = db.prepare("SELECT COUNT(*) AS n FROM daily_candles").get().n;
70
+ if (total > 0) {
71
+ // ORDER BY 로 일관된 진행 (resume 시 비교 용이) · sqlite 메모리 압박 X (iterate stream)
72
+ const iter = db
73
+ .prepare("SELECT * FROM daily_candles ORDER BY code, date")
74
+ .iterate();
75
+ let buf = [];
76
+ for (const row of iter) {
77
+ buf.push(row);
78
+ if (buf.length >= CHUNK_SIZE) {
79
+ const { error } = await supabase
80
+ .schema("market")
81
+ .from("daily_candles")
82
+ .upsert(buf, { onConflict: "code,date" });
83
+ if (error) {
84
+ return {
85
+ ok: false,
86
+ error: `daily_candles upsert 실패 (rows ${candleRows}~${candleRows + buf.length}): ${error.message}`,
87
+ };
88
+ }
89
+ candleRows += buf.length;
90
+ opts.onProgress?.("candles", candleRows, total);
91
+ buf = [];
92
+ }
93
+ }
94
+ if (buf.length > 0) {
95
+ const { error } = await supabase
96
+ .schema("market")
97
+ .from("daily_candles")
98
+ .upsert(buf, { onConflict: "code,date" });
99
+ if (error) {
100
+ return { ok: false, error: `daily_candles upsert 실패 (final): ${error.message}` };
101
+ }
102
+ candleRows += buf.length;
103
+ opts.onProgress?.("candles", candleRows, total);
104
+ }
105
+ }
106
+ }
107
+ /* ─── 3. sync_meta ─── */
108
+ const { error: metaErr } = await supabase
109
+ .schema("market")
110
+ .from("sync_meta")
111
+ .upsert([
112
+ {
113
+ kind: "publish",
114
+ last_run_at: new Date().toISOString(),
115
+ item_count: candleRows + universeRows,
116
+ status: "ok",
117
+ message: `universe ${universeRows} · candles ${candleRows} · ${Date.now() - start}ms`,
118
+ },
119
+ ], { onConflict: "kind" });
120
+ if (metaErr) {
121
+ // sync_meta 실패는 본 작업 성공 여부에 영향 X — 경고만
122
+ console.warn(`[postgres-publish] sync_meta 갱신 실패: ${metaErr.message}`);
123
+ }
124
+ // SQLite sync_meta 에도 기록 — admin daemon 재기동 시 catch-up 판정 (마지막
125
+ // publish 시각 > 6h 면 즉시 publish trigger) 의 source.
126
+ try {
127
+ recordSync("postgres-publish", candleRows + universeRows, "ok", `universe ${universeRows} · candles ${candleRows}`);
128
+ }
129
+ catch (e) {
130
+ console.warn(`[postgres-publish] sqlite sync_meta 갱신 실패: ${String(e)}`);
131
+ }
132
+ return {
133
+ ok: true,
134
+ universeRows,
135
+ candleRows,
136
+ elapsedMs: Date.now() - start,
137
+ };
138
+ }
139
+ //# sourceMappingURL=postgres-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-publish.js","sourceRoot":"","sources":["../../../src-server/share/postgres-publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Phase 5e-4 · prepare 진행 상태 (in-memory).
3
+ *
4
+ * `mulsok-client prepare` CLI 와 추후 WebUI 가 polling 으로 사용.
5
+ * daemon 단일 process 이므로 in-memory 충분 (재시작 시 reset OK).
6
+ *
7
+ * 동시성:
8
+ * - prepare 가 이미 running 이면 startPrepare() 가 즉시 같은 state 공유 반환
9
+ * - 두 번째 호출자는 같은 진행 보면 됨 (별도 작업 안 트리거)
10
+ */
11
+ let state = freshState();
12
+ function freshState() {
13
+ return {
14
+ running: false,
15
+ startedAt: null,
16
+ finishedAt: null,
17
+ ok: null,
18
+ error: null,
19
+ universe: { done: false, count: 0 },
20
+ candles: { done: false, pages: 0, returned: 0, sinceCurrent: "" },
21
+ };
22
+ }
23
+ export function getPrepareState() {
24
+ return state;
25
+ }
26
+ export function isPrepareRunning() {
27
+ return state.running;
28
+ }
29
+ export function beginPrepare() {
30
+ state = freshState();
31
+ state.running = true;
32
+ state.startedAt = Date.now();
33
+ }
34
+ export function reportUniverse(count) {
35
+ state.universe.count = count;
36
+ state.universe.done = true;
37
+ }
38
+ export function reportCandlePage(pages, returned, since) {
39
+ state.candles.pages = pages;
40
+ state.candles.returned = returned;
41
+ state.candles.sinceCurrent = since;
42
+ }
43
+ export function finishPrepare(ok, error = null) {
44
+ state.running = false;
45
+ state.finishedAt = Date.now();
46
+ state.ok = ok;
47
+ state.error = error;
48
+ state.candles.done = ok;
49
+ }
50
+ //# sourceMappingURL=prepare-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-state.js","sourceRoot":"","sources":["../../../src-server/share/prepare-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,IAAI,KAAK,GAAiB,UAAU,EAAE,CAAC;AAEvC,SAAS,UAAU;IACjB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QACnC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,KAAK,GAAG,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa;IAC7E,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAW,EAAE,QAAuB,IAAI;IACpE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Phase 5e-4 · 명시적 prepare orchestration.
3
+ *
4
+ * 첫 install 사용자가 cycle 시도 전 시세 데이터 준비를 명시적으로 수행하고
5
+ * 진행률을 가시적으로 받기 위한 entry point. CLI 와 WebUI 둘 다 사용.
6
+ *
7
+ * 흐름:
8
+ * 1. beginPrepare() — state reset
9
+ * 2. pullUniverseFromServer (~수 초 · ~4,300 row)
10
+ * 3. pullCandlesFromServer (첫 install 5~10분 · ~10.87M row)
11
+ * · 매 page 후 reportCandlePage 으로 in-memory state 갱신
12
+ * 4. finishPrepare(ok)
13
+ *
14
+ * 동시성:
15
+ * - 이미 running 이면 즉시 같은 state 공유 반환 (skip 새 trigger)
16
+ * - 두 번째 호출자도 polling 으로 같은 진행 본다
17
+ *
18
+ * background 자동 pull 과의 관계:
19
+ * - 본 함수는 explicit prepare. startPeriodicSync 의 자동 pull 과 무관.
20
+ * - 두 흐름이 동시 실행되어도 멱등 upsert 라 안전 (단 race overhead 약간).
21
+ */
22
+ import { pullUniverseFromServer, pullCandlesFromServer } from "../server-sync.js";
23
+ import { beginPrepare, finishPrepare, isPrepareRunning, reportCandlePage, reportUniverse, getPrepareState, } from "./prepare-state.js";
24
+ /**
25
+ * prepare 시작. 이미 running 이면 trigger 안 하고 즉시 반환.
26
+ * fire-and-forget 이라 이 함수는 await 즉시 끝남 (실 작업은 background).
27
+ */
28
+ export function startPrepare() {
29
+ if (isPrepareRunning()) {
30
+ return { started: false, state: getPrepareState() };
31
+ }
32
+ beginPrepare();
33
+ void runPrepare();
34
+ return { started: true, state: getPrepareState() };
35
+ }
36
+ async function runPrepare() {
37
+ try {
38
+ // 1) universe
39
+ const u = await pullUniverseFromServer();
40
+ if (!u.ok) {
41
+ finishPrepare(false, `universe 실패: ${u.error}`);
42
+ return;
43
+ }
44
+ reportUniverse(u.universeAdded ?? 0);
45
+ // 2) candles (page loop · 매 page 후 progress 보고)
46
+ const c = await pullCandlesFromServer({
47
+ onProgress: (pages, accumulated, since) => {
48
+ reportCandlePage(pages, accumulated, since);
49
+ },
50
+ });
51
+ if (!c.ok) {
52
+ finishPrepare(false, `candles 실패: ${c.error}`);
53
+ return;
54
+ }
55
+ finishPrepare(true);
56
+ }
57
+ catch (e) {
58
+ finishPrepare(false, String(e));
59
+ }
60
+ }
61
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src-server/share/prepare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,YAAY,EAAE,CAAC;IACf,KAAK,UAAU,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,cAAc;QACd,MAAM,CAAC,GAAG,MAAM,sBAAsB,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;QAErC,gDAAgD;QAChD,MAAM,CAAC,GAAG,MAAM,qBAAqB,CAAC;YACpC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;gBACxC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Phase 5e-2 · admin 일일 sync + publish cron (매일 16:35 KST 평일).
3
+ *
4
+ * 흐름:
5
+ * 16:35 KST · sync 먼저 (universe-sync · ~10분) — SQLite daily_candles 갱신
6
+ * (universe-sync cron 자체는 SPEC-27 ADR-012 로 폐기 · 본 cron 안에서 trigger)
7
+ * 16:45 KST · publish (postgres-publish · ~15~30분) — SQLite → Supabase Postgres
8
+ * 17:15 KST · 다른 client 들이 server-sync (1h interval) 에서 incremental pull (5e-3)
9
+ *
10
+ * 가드:
11
+ * 1. SUPABASE_URL · SUPABASE_SERVICE_ROLE_KEY 환경변수 둘 다 있어야 시작
12
+ * 2. config.auth.userEmail 이 admin (env ADMIN_EMAIL · 기본 gnajte@naver.com) 이어야
13
+ * 3. 평일만 (KST · 주말 KRX 휴장)
14
+ *
15
+ * 에러 정책:
16
+ * - sync 실패 (예: 키움 일부 timeout) 면 errorCount 누적되지만 publish 는 계속
17
+ * — 부분 데이터라도 publish 가치 있음 (멱등 upsert · 다음 사이클 보강)
18
+ * - sync catastrophic failure (throw) 시도 publish 시도 — 직전 SQLite 데이터로 publish
19
+ *
20
+ * 환경 미충족 시 graceful skip — daemon 가동 자체엔 영향 X.
21
+ * idempotent — 중복 호출 시 1번만 timer 시작.
22
+ */
23
+ import { loadConfig } from "../config.js";
24
+ import { isAdmin } from "../auth/admin.js";
25
+ let cronTimer = null;
26
+ function envReady() {
27
+ return !!(process.env.SUPABASE_URL && process.env.SUPABASE_SERVICE_ROLE_KEY);
28
+ }
29
+ function callerIsAdmin() {
30
+ try {
31
+ const cfg = loadConfig();
32
+ return isAdmin(cfg.auth?.userEmail);
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ export function startPublishCron() {
39
+ if (cronTimer)
40
+ return;
41
+ if (!envReady()) {
42
+ console.log("[publish-cron] SUPABASE env 미설정 — admin only · cron skip");
43
+ return;
44
+ }
45
+ if (!callerIsAdmin()) {
46
+ console.log("[publish-cron] 비-admin user — cron skip (admin 만 publish)");
47
+ return;
48
+ }
49
+ cronTimer = setInterval(async () => {
50
+ const now = new Date();
51
+ const kst = new Date(now.getTime() + 9 * 3600_000);
52
+ const day = kst.getUTCDay();
53
+ if (day === 0 || day === 6)
54
+ return; // 주말 skip
55
+ if (kst.getUTCHours() === 16 && kst.getUTCMinutes() === 35) {
56
+ console.log("[publish-cron] 16:35 KST · 일일 sync + publish 시작 (~30~40분)");
57
+ // 1) sync — SQLite daily_candles 갱신 (candleDays=120 single chunk · ~10분)
58
+ try {
59
+ const { runUniverseSync } = await import("../jobs/universe-sync.js");
60
+ const sr = await runUniverseSync({ maxCodes: 0, candleDays: 120 });
61
+ console.log(`[publish-cron] sync 완료 · universe ${sr.universeCount} · candles ${sr.candlesCount} · err ${sr.errorCount} · ${sr.elapsedMs}ms`);
62
+ }
63
+ catch (e) {
64
+ // sync 자체가 throw 해도 publish 는 계속 — 직전 SQLite 데이터라도 propagate
65
+ console.error("[publish-cron] sync 예외 (publish 는 계속):", e);
66
+ }
67
+ // 2) publish — SQLite → Supabase Postgres (~15~30분)
68
+ try {
69
+ const { publishToPostgres } = await import("./postgres-publish.js");
70
+ const r = await publishToPostgres({
71
+ onProgress: (kind, done, total) => {
72
+ if (done % 100000 === 0 || done === total) {
73
+ console.log(`[publish-cron] ${kind} ${done}/${total}`);
74
+ }
75
+ },
76
+ });
77
+ if (!r.ok) {
78
+ console.error(`[publish-cron] publish 실패: ${r.error}`);
79
+ }
80
+ else {
81
+ console.log(`[publish-cron] publish 완료 · universe ${r.universeRows} · candles ${r.candleRows} · ${r.elapsedMs}ms`);
82
+ }
83
+ }
84
+ catch (e) {
85
+ console.error("[publish-cron] publish 예외:", e);
86
+ }
87
+ }
88
+ }, 60_000);
89
+ console.log("[publish-cron] cron started · 매일 16:35 KST 자동 sync + publish (admin · 평일 · ~40분)");
90
+ }
91
+ export function stopPublishCron() {
92
+ if (cronTimer)
93
+ clearInterval(cronTimer);
94
+ cronTimer = null;
95
+ }
96
+ //# sourceMappingURL=publish-cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-cron.js","sourceRoot":"","sources":["../../../src-server/share/publish-cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Phase 5e-1a · admin 시세 스냅샷 export.
3
+ *
4
+ * SQLite (~/.mulsok-traders/market.db · public 시세만) 를 VACUUM INTO 로
5
+ * 사본 생성 후 gzip 압축. 사용자별 share 디렉토리에 저장.
6
+ *
7
+ * 산출:
8
+ * ~/.mulsok-traders/u/<userId>/share/market-YYYY-MM-DD.sqlite.gz
9
+ *
10
+ * VACUUM INTO 의 안전성:
11
+ * - 원본 DB 의 모든 페이지를 새 파일로 복제 (lock 영향 없음 · 동시 read 안전)
12
+ * - 80MB 기준 5-10초 소요 · 1.4GB 기준 3-5분 추정
13
+ * - WAL/journal 자동 통합 → 결과 .sqlite 는 단일 페이지 정합성 보장
14
+ *
15
+ * 호출 흐름:
16
+ * 1. (admin only) /api/admin/share/dump
17
+ * 2. exportSnapshot()
18
+ * 3. VACUUM INTO 임시 sqlite → gzip → 압축 파일만 보존 (원본 unlink)
19
+ *
20
+ * 보안:
21
+ * - 본 함수는 endpoint 단에서 isAdmin 체크 후 호출 — 자체 게이트 X.
22
+ * - 산출 파일에는 daily_candles + universe + sync_meta · 사용자 자격증명 X.
23
+ * - watchers 테이블도 export 됨 (Phase 5e-1b 에서 redact 검토 — RLS 보강).
24
+ *
25
+ * 5e-1b 와 분리:
26
+ * - 본 모듈은 「로컬 파일 생성」 까지만. Supabase Storage 업로드는 별도.
27
+ */
28
+ import path from "node:path";
29
+ import fs from "node:fs";
30
+ import zlib from "node:zlib";
31
+ import { getDb } from "../db/sqlite.js";
32
+ import { ensureUserDir, requireUserId } from "../config.js";
33
+ export async function exportSnapshot() {
34
+ const start = Date.now();
35
+ const userId = requireUserId();
36
+ const shareDir = ensureUserDir(userId, "share");
37
+ const today = new Date(Date.now() + 9 * 3600_000).toISOString().slice(0, 10);
38
+ const rawPath = path.join(shareDir, `market-${today}.sqlite`);
39
+ const gzPath = `${rawPath}.gz`;
40
+ // 1. VACUUM INTO — 안전한 사본 생성 (lock 영향 없음)
41
+ try {
42
+ if (fs.existsSync(rawPath))
43
+ fs.unlinkSync(rawPath);
44
+ if (fs.existsSync(gzPath))
45
+ fs.unlinkSync(gzPath);
46
+ const db = getDb();
47
+ db.exec(`VACUUM INTO '${rawPath.replace(/'/g, "''")}'`);
48
+ }
49
+ catch (e) {
50
+ return { ok: false, error: `VACUUM INTO 실패: ${String(e)}` };
51
+ }
52
+ if (!fs.existsSync(rawPath)) {
53
+ return { ok: false, error: "VACUUM 후 raw 파일 미생성" };
54
+ }
55
+ const rawBytes = fs.statSync(rawPath).size;
56
+ // 2. gzip 압축 (level 9 · 최대 압축 · 1회용 dump 라 시간 부담 OK)
57
+ try {
58
+ const raw = fs.readFileSync(rawPath);
59
+ const compressed = zlib.gzipSync(raw, { level: 9 });
60
+ fs.writeFileSync(gzPath, compressed, { mode: 0o600 });
61
+ fs.unlinkSync(rawPath);
62
+ }
63
+ catch (e) {
64
+ // gzip 실패 시 raw 라도 보존 (디버깅용)
65
+ return { ok: false, error: `gzip 실패: ${String(e)} · raw 보존: ${rawPath}` };
66
+ }
67
+ const gzBytes = fs.statSync(gzPath).size;
68
+ const compressionRatio = rawBytes > 0 ? gzBytes / rawBytes : 0;
69
+ console.log(`[share] snapshot 생성 완료 · ${rawPath.split("/").pop()} → ` +
70
+ `${(rawBytes / 1e6).toFixed(1)}MB → ${(gzBytes / 1e6).toFixed(1)}MB (` +
71
+ `${(100 - compressionRatio * 100).toFixed(0)}% 압축)`);
72
+ return {
73
+ ok: true,
74
+ path: gzPath,
75
+ bytes: rawBytes,
76
+ bytesGzip: gzBytes,
77
+ compressionRatio,
78
+ elapsedMs: Date.now() - start,
79
+ };
80
+ }
81
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src-server/share/snapshot.ts"],"names":[],"mappings":"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"}