@backtest-kit/ui 5.6.2 → 5.9.1
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/build/index.cjs +1036 -134
- package/build/index.mjs +1037 -135
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/ace.js +21338 -0
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/mode-javascript.js +798 -0
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-chrome.js +138 -0
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/theme-twilight.js +116 -0
- package/build/modules/frontend/build/3rdparty/ace_1.4.12/worker-javascript.js +15012 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-100italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-300italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-400italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-500italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-700italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900italic.woff +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/files/roboto-latin-900italic.woff2 +0 -0
- package/build/modules/frontend/build/3rdparty/typeface-roboto_0.0.75/typeface-roboto.css +156 -0
- package/build/modules/frontend/build/assets/Article-DwCWbgig.js +1 -0
- package/build/modules/frontend/build/assets/{Background-B8kVLoJC.js → Background-BUWczIMa.js} +1 -1
- package/build/modules/frontend/build/assets/Container-DgcBaXwp.js +1 -0
- package/build/modules/frontend/build/assets/IconPhoto-Dg1OJT1g.js +1 -0
- package/build/modules/frontend/build/assets/{KeyboardArrowLeft-NcptneCW.js → KeyboardArrowLeft-DqH7VCRG.js} +1 -1
- package/build/modules/frontend/build/assets/Refresh-ASwi3YWH.js +1 -0
- package/build/modules/frontend/build/assets/emitters-EUI31qkt.js +1 -0
- package/build/modules/frontend/build/assets/hasRouteMatch-B_-PodjM.js +1 -0
- package/build/modules/frontend/build/assets/html2canvas-D67h2MXz.js +1 -0
- package/build/modules/frontend/build/assets/index-BXhzoqHB.js +17 -0
- package/build/modules/frontend/build/assets/index-BbMctGny.js +1 -0
- package/build/modules/frontend/build/assets/index-BjGW-SeZ.js +1560 -0
- package/build/modules/frontend/build/assets/index-CGTWcCfJ.js +1 -0
- package/build/modules/frontend/build/assets/index-CQbPy5z-.js +1 -0
- package/build/modules/frontend/build/assets/index-CYVGtlJR.js +1 -0
- package/build/modules/frontend/build/assets/index-CxqvOyvF.js +1 -0
- package/build/modules/frontend/build/assets/index-DoQ6TdNT.js +1 -0
- package/build/modules/frontend/build/assets/index-Dxunm9la.js +1 -0
- package/build/modules/frontend/build/assets/index-lFLkJBoZ.js +1 -0
- package/build/modules/frontend/build/assets/index-nAktdNIS.js +1 -0
- package/build/modules/frontend/build/assets/{index.es-BkDLGtAB.js → index.es-_Mw9_y9J.js} +2 -2
- package/build/modules/frontend/build/assets/markdownit-DnsUyAuX.js +1 -0
- package/build/modules/frontend/build/index.html +8 -2
- package/package.json +3 -3
- package/types.d.ts +80 -1
- package/build/modules/frontend/build/assets/IconPhoto-yqTcSjsj.js +0 -1
- package/build/modules/frontend/build/assets/Refresh-B-6VzYmL.js +0 -1
- package/build/modules/frontend/build/assets/hasRouteMatch-Cap76DHx.js +0 -1
- package/build/modules/frontend/build/assets/html2canvas-AeHV6o40.js +0 -1
- package/build/modules/frontend/build/assets/index-3FabZvCh.js +0 -1
- package/build/modules/frontend/build/assets/index-BSt5rIe0.js +0 -231
- package/build/modules/frontend/build/assets/index-BfdHWVzz.js +0 -1331
- package/build/modules/frontend/build/assets/index-BjR0gQPx.js +0 -1
- package/build/modules/frontend/build/assets/index-Bov2Mvu5.js +0 -1
- package/build/modules/frontend/build/assets/index-DTb7GKw2.js +0 -1
- package/build/modules/frontend/build/assets/index-eGg7QpVp.js +0 -1
- package/build/modules/frontend/build/assets/index-mEY60b54.js +0 -1
- package/build/modules/frontend/build/assets/markdownit-_uLqTUbF.js +0 -1
package/build/index.cjs
CHANGED
|
@@ -11,6 +11,8 @@ var diKit = require('di-kit');
|
|
|
11
11
|
var backtestKit = require('backtest-kit');
|
|
12
12
|
var fs = require('fs/promises');
|
|
13
13
|
var path = require('path');
|
|
14
|
+
var mime = require('mime-types');
|
|
15
|
+
var crypto = require('crypto');
|
|
14
16
|
var module$1 = require('module');
|
|
15
17
|
var fs$1 = require('fs');
|
|
16
18
|
|
|
@@ -20,10 +22,10 @@ const CC_WWWROOT_HOST = process.env.CC_WWWROOT_HOST || "0.0.0.0";
|
|
|
20
22
|
const CC_WWWROOT_PORT = parseInt(process.env.CC_WWWROOT_PORT) || 60050;
|
|
21
23
|
const CC_ENABLE_MOCK = !!parseInt(process.env.CC_ENABLE_MOCK) || false;
|
|
22
24
|
|
|
23
|
-
const router$
|
|
25
|
+
const router$b = Router({
|
|
24
26
|
params: true,
|
|
25
27
|
});
|
|
26
|
-
router$
|
|
28
|
+
router$b.get("/api/v1/health/health_check", async (req, res) => {
|
|
27
29
|
const [cpuLoad] = os.loadavg();
|
|
28
30
|
return await micro.send(res, 200, {
|
|
29
31
|
uptime: process.uptime(),
|
|
@@ -72,6 +74,9 @@ const mockServices$1 = {
|
|
|
72
74
|
logMockService: Symbol("logMockService"),
|
|
73
75
|
statusMockService: Symbol("statusMockService"),
|
|
74
76
|
markdownMockService: Symbol("markdownMockService"),
|
|
77
|
+
explorerMockService: Symbol("explorerMockService"),
|
|
78
|
+
signalMockService: Symbol("signalMockService"),
|
|
79
|
+
heatMockService: Symbol("heatMockService"),
|
|
75
80
|
};
|
|
76
81
|
const viewServices$1 = {
|
|
77
82
|
notificationViewService: Symbol("notificationViewService"),
|
|
@@ -80,6 +85,9 @@ const viewServices$1 = {
|
|
|
80
85
|
logViewService: Symbol("logViewService"),
|
|
81
86
|
statusViewService: Symbol("statusViewService"),
|
|
82
87
|
markdownViewService: Symbol("markdownViewService"),
|
|
88
|
+
explorerViewService: Symbol("explorerViewService"),
|
|
89
|
+
signalViewService: Symbol("signalViewService"),
|
|
90
|
+
heatViewService: Symbol("heatViewService"),
|
|
83
91
|
};
|
|
84
92
|
const TYPES = {
|
|
85
93
|
...baseServices$1,
|
|
@@ -148,6 +156,14 @@ class ExchangeService {
|
|
|
148
156
|
exchangeName: dto.exchangeName,
|
|
149
157
|
}, undefined, sDate, eDate);
|
|
150
158
|
};
|
|
159
|
+
this.getLastCandles = async (dto) => {
|
|
160
|
+
this.loggerService.log("exchangeService getLastCandles", {
|
|
161
|
+
dto,
|
|
162
|
+
});
|
|
163
|
+
return await backtestKit.Exchange.getCandles(dto.symbol, dto.interval, dto.limit, {
|
|
164
|
+
exchangeName: dto.exchangeName,
|
|
165
|
+
});
|
|
166
|
+
};
|
|
151
167
|
}
|
|
152
168
|
}
|
|
153
169
|
|
|
@@ -182,9 +198,9 @@ class LoggerService {
|
|
|
182
198
|
}
|
|
183
199
|
}
|
|
184
200
|
|
|
185
|
-
const MOCK_PATH$
|
|
201
|
+
const MOCK_PATH$5 = "./mock/notifications.json";
|
|
186
202
|
const READ_NOTIFICATION_LIST_FN = functoolsKit.singleshot(async () => {
|
|
187
|
-
const data = await fs.readFile(MOCK_PATH$
|
|
203
|
+
const data = await fs.readFile(MOCK_PATH$5, "utf-8");
|
|
188
204
|
return JSON.parse(data);
|
|
189
205
|
});
|
|
190
206
|
const DEFAULT_LIMIT$3 = 25;
|
|
@@ -244,9 +260,9 @@ class NotificationMockService {
|
|
|
244
260
|
}
|
|
245
261
|
}
|
|
246
262
|
|
|
247
|
-
const MOCK_PATH$
|
|
263
|
+
const MOCK_PATH$4 = "./mock/db";
|
|
248
264
|
const READ_BACKTEST_STORAGE_FN = functoolsKit.singleshot(async () => {
|
|
249
|
-
const dbPath = path.join(process.cwd(), MOCK_PATH$
|
|
265
|
+
const dbPath = path.join(process.cwd(), MOCK_PATH$4);
|
|
250
266
|
const files = await fs.readdir(dbPath);
|
|
251
267
|
const signals = [];
|
|
252
268
|
for (const file of files) {
|
|
@@ -281,7 +297,7 @@ class StorageMockService {
|
|
|
281
297
|
}
|
|
282
298
|
}
|
|
283
299
|
|
|
284
|
-
const
|
|
300
|
+
const HISTORY_LAST_CANDLES_LIMIT$1 = 200;
|
|
285
301
|
class ExchangeMockService {
|
|
286
302
|
constructor() {
|
|
287
303
|
this.loggerService = inject(TYPES.loggerService);
|
|
@@ -314,22 +330,56 @@ class ExchangeMockService {
|
|
|
314
330
|
if (!signal) {
|
|
315
331
|
throw new Error(`Signal with ID ${signalId} not found`);
|
|
316
332
|
}
|
|
317
|
-
const { pendingAt, scheduledAt,
|
|
333
|
+
const { pendingAt, scheduledAt, updatedAt } = signal;
|
|
318
334
|
const eventAt = pendingAt || scheduledAt;
|
|
319
335
|
return await this.exchangeService.getRangeCandles({
|
|
320
336
|
symbol: signal.symbol,
|
|
321
337
|
exchangeName: signal.exchangeName,
|
|
322
338
|
signalStartTime: eventAt,
|
|
323
|
-
signalStopTime:
|
|
339
|
+
signalStopTime: backtestKit.alignToInterval(new Date(updatedAt), interval).getTime(),
|
|
340
|
+
interval,
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
this.getLastCandles = async (symbol, interval) => {
|
|
344
|
+
this.loggerService.log("exchangeMockService getLastCandles", {
|
|
345
|
+
symbol,
|
|
324
346
|
interval,
|
|
325
347
|
});
|
|
348
|
+
const [backtestItem] = await backtestKit.Backtest.list();
|
|
349
|
+
const [liveItem] = await backtestKit.Live.list();
|
|
350
|
+
const [exchangeItem] = await backtestKit.listExchangeSchema();
|
|
351
|
+
if (backtestItem) {
|
|
352
|
+
return await this.exchangeService.getLastCandles({
|
|
353
|
+
symbol,
|
|
354
|
+
limit: HISTORY_LAST_CANDLES_LIMIT$1,
|
|
355
|
+
exchangeName: backtestItem.exchangeName,
|
|
356
|
+
interval,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (liveItem) {
|
|
360
|
+
return await this.exchangeService.getLastCandles({
|
|
361
|
+
symbol,
|
|
362
|
+
limit: HISTORY_LAST_CANDLES_LIMIT$1,
|
|
363
|
+
exchangeName: liveItem.exchangeName,
|
|
364
|
+
interval,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
if (exchangeItem) {
|
|
368
|
+
return await this.exchangeService.getLastCandles({
|
|
369
|
+
symbol,
|
|
370
|
+
limit: HISTORY_LAST_CANDLES_LIMIT$1,
|
|
371
|
+
exchangeName: exchangeItem.exchangeName,
|
|
372
|
+
interval,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
throw new Error(`exchangeMockService getLastCandles no pending strategy symbol=${symbol} interval=${interval}`);
|
|
326
376
|
};
|
|
327
377
|
}
|
|
328
378
|
}
|
|
329
379
|
|
|
330
|
-
const MOCK_PATH$
|
|
380
|
+
const MOCK_PATH$3 = "./mock/logs.json";
|
|
331
381
|
const READ_LOG_LIST_FN = functoolsKit.singleshot(async () => {
|
|
332
|
-
const data = await fs.readFile(MOCK_PATH$
|
|
382
|
+
const data = await fs.readFile(MOCK_PATH$3, "utf-8");
|
|
333
383
|
return JSON.parse(data);
|
|
334
384
|
});
|
|
335
385
|
const DEFAULT_LIMIT$2 = 25;
|
|
@@ -377,14 +427,24 @@ class LogMockService {
|
|
|
377
427
|
}
|
|
378
428
|
}
|
|
379
429
|
|
|
380
|
-
const MOCK_PATH = "./mock/status.json";
|
|
430
|
+
const MOCK_PATH$2 = "./mock/status.json";
|
|
431
|
+
const MOCK_INFO_PATH = "./mock/status-info.json";
|
|
381
432
|
const READ_STATUS_LIST_FN = functoolsKit.singleshot(async () => {
|
|
382
|
-
const data = await fs.readFile(MOCK_PATH, "utf-8");
|
|
433
|
+
const data = await fs.readFile(MOCK_PATH$2, "utf-8");
|
|
434
|
+
return JSON.parse(data);
|
|
435
|
+
});
|
|
436
|
+
const READ_STATUS_INFO_FN = functoolsKit.singleshot(async () => {
|
|
437
|
+
const data = await fs.readFile(MOCK_INFO_PATH, "utf-8");
|
|
383
438
|
return JSON.parse(data);
|
|
384
439
|
});
|
|
385
440
|
class StatusMockService {
|
|
386
441
|
constructor() {
|
|
387
442
|
this.loggerService = inject(TYPES.loggerService);
|
|
443
|
+
this.signalMockService = inject(TYPES.signalMockService);
|
|
444
|
+
this.getStatusInfo = async () => {
|
|
445
|
+
this.loggerService.log("statusMockService getStatusInfo");
|
|
446
|
+
return await READ_STATUS_INFO_FN();
|
|
447
|
+
};
|
|
388
448
|
this.getStatusList = async () => {
|
|
389
449
|
this.loggerService.log("statusMockService getStatusList");
|
|
390
450
|
const list = await READ_STATUS_LIST_FN();
|
|
@@ -404,33 +464,36 @@ class StatusMockService {
|
|
|
404
464
|
this.getStatusOne = async (id) => {
|
|
405
465
|
this.loggerService.log("statusMockService getStatusOne", { id });
|
|
406
466
|
const list = await READ_STATUS_LIST_FN();
|
|
407
|
-
const
|
|
408
|
-
if (!
|
|
467
|
+
const status = list.find((s) => s.id === id);
|
|
468
|
+
if (!status) {
|
|
409
469
|
return null;
|
|
410
470
|
}
|
|
411
|
-
const
|
|
471
|
+
const updatedAt = await this.signalMockService.getLastUpdateTimestamp(status.signalId);
|
|
472
|
+
const positionEntries = status._entry ?? [];
|
|
412
473
|
const positionLevels = positionEntries.map((e) => e.price);
|
|
413
|
-
const positionPartials =
|
|
474
|
+
const positionPartials = status._partial ?? [];
|
|
414
475
|
return {
|
|
415
|
-
signalId:
|
|
416
|
-
position:
|
|
417
|
-
symbol:
|
|
418
|
-
exchangeName:
|
|
419
|
-
strategyName:
|
|
420
|
-
totalEntries:
|
|
421
|
-
totalPartials:
|
|
422
|
-
originalPriceStopLoss:
|
|
423
|
-
originalPriceTakeProfit:
|
|
424
|
-
originalPriceOpen:
|
|
425
|
-
priceOpen:
|
|
426
|
-
priceTakeProfit:
|
|
427
|
-
priceStopLoss:
|
|
428
|
-
pnlPercentage:
|
|
429
|
-
pnlCost:
|
|
430
|
-
pnlEntries:
|
|
431
|
-
partialExecuted:
|
|
432
|
-
minuteEstimatedTime:
|
|
433
|
-
pendingAt:
|
|
476
|
+
signalId: status.signalId,
|
|
477
|
+
position: status.position,
|
|
478
|
+
symbol: status.symbol,
|
|
479
|
+
exchangeName: status.exchangeName,
|
|
480
|
+
strategyName: status.strategyName,
|
|
481
|
+
totalEntries: status.totalEntries,
|
|
482
|
+
totalPartials: status.totalPartials,
|
|
483
|
+
originalPriceStopLoss: status.originalPriceStopLoss,
|
|
484
|
+
originalPriceTakeProfit: status.originalPriceTakeProfit,
|
|
485
|
+
originalPriceOpen: status.originalPriceOpen,
|
|
486
|
+
priceOpen: status.priceOpen,
|
|
487
|
+
priceTakeProfit: status.priceTakeProfit,
|
|
488
|
+
priceStopLoss: status.priceStopLoss,
|
|
489
|
+
pnlPercentage: status.pnl.pnlPercentage,
|
|
490
|
+
pnlCost: status.pnl.pnlCost,
|
|
491
|
+
pnlEntries: status.pnl.pnlEntries,
|
|
492
|
+
partialExecuted: status.partialExecuted,
|
|
493
|
+
minuteEstimatedTime: status.minuteEstimatedTime,
|
|
494
|
+
pendingAt: status.pendingAt,
|
|
495
|
+
timestamp: status.timestamp,
|
|
496
|
+
updatedAt,
|
|
434
497
|
positionLevels,
|
|
435
498
|
positionEntries,
|
|
436
499
|
positionPartials,
|
|
@@ -580,6 +643,127 @@ class MarkdownMockService {
|
|
|
580
643
|
}
|
|
581
644
|
}
|
|
582
645
|
|
|
646
|
+
const deepFlat = (arr) => {
|
|
647
|
+
const result = [];
|
|
648
|
+
const seen = new Set();
|
|
649
|
+
const process = (entries = []) => entries.forEach((entry) => {
|
|
650
|
+
if (seen.has(entry)) {
|
|
651
|
+
return;
|
|
652
|
+
}
|
|
653
|
+
seen.add(entry);
|
|
654
|
+
if (entry.type === "directory") {
|
|
655
|
+
process(entry.nodes);
|
|
656
|
+
}
|
|
657
|
+
result.push(entry);
|
|
658
|
+
});
|
|
659
|
+
process(arr);
|
|
660
|
+
return result;
|
|
661
|
+
};
|
|
662
|
+
const MOCK_PATH$1 = "./mock/explorer.json";
|
|
663
|
+
const READ_EXPLORER_TREE_FN = functoolsKit.singleshot(async () => {
|
|
664
|
+
const data = await fs.readFile(MOCK_PATH$1, "utf-8");
|
|
665
|
+
return JSON.parse(data);
|
|
666
|
+
});
|
|
667
|
+
const READ_EXPLORER_INDEX_FN = functoolsKit.singleshot(async () => {
|
|
668
|
+
const tree = await READ_EXPLORER_TREE_FN();
|
|
669
|
+
const treeList = deepFlat(tree);
|
|
670
|
+
if (treeList.length === 0) {
|
|
671
|
+
return {};
|
|
672
|
+
}
|
|
673
|
+
return treeList.reduce((acm, cur) => {
|
|
674
|
+
if (cur.type === "file" && "content" in cur) {
|
|
675
|
+
return { ...acm, [cur.path]: cur };
|
|
676
|
+
}
|
|
677
|
+
return acm;
|
|
678
|
+
}, {});
|
|
679
|
+
});
|
|
680
|
+
class ExplorerMockService {
|
|
681
|
+
constructor() {
|
|
682
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
683
|
+
this.getNode = async (nodePath) => {
|
|
684
|
+
this.loggerService.log("explorerMockService getNode", {
|
|
685
|
+
nodePath,
|
|
686
|
+
});
|
|
687
|
+
const index = await READ_EXPLORER_INDEX_FN();
|
|
688
|
+
return index[nodePath]?.content ?? "";
|
|
689
|
+
};
|
|
690
|
+
this.getTree = async () => {
|
|
691
|
+
this.loggerService.log("explorerMockService getTree");
|
|
692
|
+
return await READ_EXPLORER_TREE_FN();
|
|
693
|
+
};
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
const MOCK_PATH = "./mock/db";
|
|
698
|
+
const MOCK_SIGNAL_PATH = "./mock/signal.json";
|
|
699
|
+
const READ_SIGNAL_STORAGE_FN = functoolsKit.singleshot(async () => {
|
|
700
|
+
const dbPath = path.join(process.cwd(), MOCK_PATH);
|
|
701
|
+
const files = await fs.readdir(dbPath);
|
|
702
|
+
const signals = [];
|
|
703
|
+
for (const file of files) {
|
|
704
|
+
if (!file.endsWith(".json")) {
|
|
705
|
+
continue;
|
|
706
|
+
}
|
|
707
|
+
const filePath = path.join(dbPath, file);
|
|
708
|
+
signals.push(JSON.parse(await fs.readFile(filePath, "utf-8")));
|
|
709
|
+
}
|
|
710
|
+
return signals;
|
|
711
|
+
});
|
|
712
|
+
const READ_PENDING_SIGNAL_FN = functoolsKit.singleshot(async () => {
|
|
713
|
+
const filePath = path.join(process.cwd(), MOCK_SIGNAL_PATH);
|
|
714
|
+
return JSON.parse(await fs.readFile(filePath, "utf-8"));
|
|
715
|
+
});
|
|
716
|
+
class SignalMockService {
|
|
717
|
+
constructor() {
|
|
718
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
719
|
+
this.getLastUpdateTimestamp = async (signalId) => {
|
|
720
|
+
this.loggerService.log("signalMockService getLastUpdateTimestamp", {
|
|
721
|
+
signalId,
|
|
722
|
+
});
|
|
723
|
+
const signalList = await READ_SIGNAL_STORAGE_FN();
|
|
724
|
+
const signalMap = new Map(signalList.map((signal) => [signal.id, signal]));
|
|
725
|
+
const signal = signalMap.get(signalId);
|
|
726
|
+
if (!signal) {
|
|
727
|
+
throw new Error(`SignalMockService getLastUpdateTimestamp signal not found signalId=${signalId}`);
|
|
728
|
+
}
|
|
729
|
+
return signal.updatedAt;
|
|
730
|
+
};
|
|
731
|
+
this.getPendingSignal = async (symbol) => {
|
|
732
|
+
this.loggerService.log("signalMockService getPendingSignal", {
|
|
733
|
+
symbol,
|
|
734
|
+
});
|
|
735
|
+
const signal = await READ_PENDING_SIGNAL_FN();
|
|
736
|
+
if (signal.symbol !== symbol) {
|
|
737
|
+
return null;
|
|
738
|
+
}
|
|
739
|
+
return signal;
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
const MOCK_DATA_PATH = "./mock/heat.json";
|
|
745
|
+
const MOCK_REPORT_PATH = "./mock/heat-report.md";
|
|
746
|
+
const READ_HEAT_DATA_FN = functoolsKit.singleshot(async () => {
|
|
747
|
+
const data = await fs.readFile(MOCK_DATA_PATH, "utf-8");
|
|
748
|
+
return JSON.parse(data);
|
|
749
|
+
});
|
|
750
|
+
const READ_HEAT_REPORT_FN = functoolsKit.singleshot(async () => {
|
|
751
|
+
return await fs.readFile(MOCK_REPORT_PATH, "utf-8");
|
|
752
|
+
});
|
|
753
|
+
class HeatMockService {
|
|
754
|
+
constructor() {
|
|
755
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
756
|
+
this.getStrategyHeatData = async () => {
|
|
757
|
+
this.loggerService.log("heatMockService getStrategyHeatData");
|
|
758
|
+
return await READ_HEAT_DATA_FN();
|
|
759
|
+
};
|
|
760
|
+
this.getStrategyHeatReport = async () => {
|
|
761
|
+
this.loggerService.log("heatMockService getStrategyHeatReport");
|
|
762
|
+
return await READ_HEAT_REPORT_FN();
|
|
763
|
+
};
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
583
767
|
const DEFAULT_LIMIT$1 = 25;
|
|
584
768
|
const DEFAULT_OFFSET$1 = 0;
|
|
585
769
|
const CREATE_FILTER_LIST_FN$1 = (filterData) => Object.keys(filterData).map((key) => (row) => new RegExp(filterData[key], "i").test(row[key]));
|
|
@@ -724,13 +908,14 @@ class StorageViewService {
|
|
|
724
908
|
}
|
|
725
909
|
}
|
|
726
910
|
|
|
727
|
-
const
|
|
911
|
+
const HISTORY_LAST_CANDLES_LIMIT = 200;
|
|
728
912
|
class ExchangeViewService {
|
|
729
913
|
constructor() {
|
|
730
914
|
this.loggerService = inject(TYPES.loggerService);
|
|
731
915
|
this.storageViewService = inject(TYPES.storageViewService);
|
|
732
916
|
this.exchangeService = inject(TYPES.exchangeService);
|
|
733
917
|
this.exchangeMockService = inject(TYPES.exchangeMockService);
|
|
918
|
+
this.signalViewService = inject(TYPES.signalViewService);
|
|
734
919
|
this.getSignalCandles = async (signalId, interval) => {
|
|
735
920
|
this.loggerService.log("exchangeViewService getCandles", {
|
|
736
921
|
signalId,
|
|
@@ -764,15 +949,53 @@ class ExchangeViewService {
|
|
|
764
949
|
if (!signal) {
|
|
765
950
|
throw new Error(`Signal with ID ${signalId} not found`);
|
|
766
951
|
}
|
|
767
|
-
const { pendingAt, scheduledAt
|
|
952
|
+
const { pendingAt, scheduledAt } = signal;
|
|
768
953
|
const eventAt = pendingAt || scheduledAt;
|
|
954
|
+
const updatedAt = await this.signalViewService.getLastUpdateTimestamp(signalId);
|
|
769
955
|
return await this.exchangeService.getRangeCandles({
|
|
770
956
|
symbol: signal.symbol,
|
|
771
957
|
exchangeName: signal.exchangeName,
|
|
772
958
|
signalStartTime: eventAt,
|
|
773
|
-
signalStopTime:
|
|
959
|
+
signalStopTime: backtestKit.alignToInterval(new Date(updatedAt), interval).getTime(),
|
|
960
|
+
interval,
|
|
961
|
+
});
|
|
962
|
+
};
|
|
963
|
+
this.getLastCandles = async (symbol, interval) => {
|
|
964
|
+
this.loggerService.log("exchangeViewService getLastCandles", {
|
|
965
|
+
symbol,
|
|
774
966
|
interval,
|
|
775
967
|
});
|
|
968
|
+
if (CC_ENABLE_MOCK) {
|
|
969
|
+
return await this.exchangeMockService.getLastCandles(symbol, interval);
|
|
970
|
+
}
|
|
971
|
+
const [backtestItem] = await backtestKit.Backtest.list();
|
|
972
|
+
const [liveItem] = await backtestKit.Live.list();
|
|
973
|
+
const [exchangeItem] = await backtestKit.listExchangeSchema();
|
|
974
|
+
if (backtestItem) {
|
|
975
|
+
return await this.exchangeService.getLastCandles({
|
|
976
|
+
symbol,
|
|
977
|
+
limit: HISTORY_LAST_CANDLES_LIMIT,
|
|
978
|
+
exchangeName: backtestItem.exchangeName,
|
|
979
|
+
interval,
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
if (liveItem) {
|
|
983
|
+
return await this.exchangeService.getLastCandles({
|
|
984
|
+
symbol,
|
|
985
|
+
limit: HISTORY_LAST_CANDLES_LIMIT,
|
|
986
|
+
exchangeName: liveItem.exchangeName,
|
|
987
|
+
interval,
|
|
988
|
+
});
|
|
989
|
+
}
|
|
990
|
+
if (exchangeItem) {
|
|
991
|
+
return await this.exchangeService.getLastCandles({
|
|
992
|
+
symbol,
|
|
993
|
+
limit: HISTORY_LAST_CANDLES_LIMIT,
|
|
994
|
+
exchangeName: exchangeItem.exchangeName,
|
|
995
|
+
interval,
|
|
996
|
+
});
|
|
997
|
+
}
|
|
998
|
+
throw new Error(`exchangeViewService getLastCandles no pending strategy symbol=${symbol} interval=${interval}`);
|
|
776
999
|
};
|
|
777
1000
|
}
|
|
778
1001
|
}
|
|
@@ -836,6 +1059,7 @@ class StatusViewService {
|
|
|
836
1059
|
constructor() {
|
|
837
1060
|
this.loggerService = inject(TYPES.loggerService);
|
|
838
1061
|
this.statusMockService = inject(TYPES.statusMockService);
|
|
1062
|
+
this.signalViewService = inject(TYPES.signalViewService);
|
|
839
1063
|
this.getStatusList = async () => {
|
|
840
1064
|
this.loggerService.log("statusViewService getStatusList");
|
|
841
1065
|
if (CC_ENABLE_MOCK) {
|
|
@@ -898,6 +1122,12 @@ class StatusViewService {
|
|
|
898
1122
|
if (!positionPartials) {
|
|
899
1123
|
return null;
|
|
900
1124
|
}
|
|
1125
|
+
const timestamp = await backtestKit.lib.timeMetaService.getTimestamp(pendingSignal.symbol, {
|
|
1126
|
+
strategyName: pendingSignal.strategyName,
|
|
1127
|
+
exchangeName: pendingSignal.exchangeName,
|
|
1128
|
+
frameName: pendingSignal.frameName,
|
|
1129
|
+
}, false);
|
|
1130
|
+
const updatedAt = await this.signalViewService.getLastUpdateTimestamp(pendingSignal.id);
|
|
901
1131
|
return {
|
|
902
1132
|
signalId: pendingSignal.id,
|
|
903
1133
|
position: pendingSignal.position,
|
|
@@ -918,11 +1148,80 @@ class StatusViewService {
|
|
|
918
1148
|
partialExecuted: pendingSignal.partialExecuted,
|
|
919
1149
|
pendingAt: pendingSignal.pendingAt,
|
|
920
1150
|
minuteEstimatedTime: pendingSignal.minuteEstimatedTime,
|
|
1151
|
+
timestamp,
|
|
1152
|
+
updatedAt,
|
|
921
1153
|
positionEntries,
|
|
922
1154
|
positionLevels,
|
|
923
1155
|
positionPartials,
|
|
924
1156
|
};
|
|
925
1157
|
};
|
|
1158
|
+
this.getStatusInfo = async () => {
|
|
1159
|
+
this.loggerService.log("statusViewService getStatusInfo");
|
|
1160
|
+
if (CC_ENABLE_MOCK) {
|
|
1161
|
+
return this.statusMockService.getStatusInfo();
|
|
1162
|
+
}
|
|
1163
|
+
{
|
|
1164
|
+
const [backtestTarget = null] = await backtestKit.Backtest.list();
|
|
1165
|
+
if (backtestTarget) {
|
|
1166
|
+
const currentHeat = await backtestKit.Heat.getData({
|
|
1167
|
+
strategyName: backtestTarget.strategyName,
|
|
1168
|
+
exchangeName: backtestTarget.exchangeName,
|
|
1169
|
+
frameName: backtestTarget.frameName,
|
|
1170
|
+
}, true);
|
|
1171
|
+
return {
|
|
1172
|
+
context: {
|
|
1173
|
+
strategyName: backtestTarget.strategyName,
|
|
1174
|
+
exchangeName: backtestTarget.exchangeName,
|
|
1175
|
+
frameName: backtestTarget.frameName,
|
|
1176
|
+
},
|
|
1177
|
+
portfolioTotalPnl: currentHeat.portfolioTotalPnl,
|
|
1178
|
+
portfolioSharpeRatio: currentHeat.portfolioSharpeRatio,
|
|
1179
|
+
portfolioTotalTrades: currentHeat.portfolioTotalTrades,
|
|
1180
|
+
symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades }) => ({
|
|
1181
|
+
symbol,
|
|
1182
|
+
totalPnl,
|
|
1183
|
+
winRate,
|
|
1184
|
+
profitFactor,
|
|
1185
|
+
maxDrawdown,
|
|
1186
|
+
expectancy,
|
|
1187
|
+
totalTrades,
|
|
1188
|
+
})),
|
|
1189
|
+
backtest: true,
|
|
1190
|
+
};
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
{
|
|
1194
|
+
const [liveTarget = null] = await backtestKit.Live.list();
|
|
1195
|
+
if (liveTarget) {
|
|
1196
|
+
const currentHeat = await backtestKit.Heat.getData({
|
|
1197
|
+
strategyName: liveTarget.strategyName,
|
|
1198
|
+
exchangeName: liveTarget.exchangeName,
|
|
1199
|
+
frameName: "",
|
|
1200
|
+
}, false);
|
|
1201
|
+
return {
|
|
1202
|
+
context: {
|
|
1203
|
+
strategyName: liveTarget.strategyName,
|
|
1204
|
+
exchangeName: liveTarget.exchangeName,
|
|
1205
|
+
frameName: "",
|
|
1206
|
+
},
|
|
1207
|
+
portfolioTotalPnl: currentHeat.portfolioTotalPnl,
|
|
1208
|
+
portfolioSharpeRatio: currentHeat.portfolioSharpeRatio,
|
|
1209
|
+
portfolioTotalTrades: currentHeat.portfolioTotalTrades,
|
|
1210
|
+
symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades }) => ({
|
|
1211
|
+
symbol,
|
|
1212
|
+
totalPnl,
|
|
1213
|
+
winRate,
|
|
1214
|
+
profitFactor,
|
|
1215
|
+
maxDrawdown,
|
|
1216
|
+
expectancy,
|
|
1217
|
+
totalTrades,
|
|
1218
|
+
})),
|
|
1219
|
+
backtest: false,
|
|
1220
|
+
};
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
return null;
|
|
1224
|
+
};
|
|
926
1225
|
}
|
|
927
1226
|
}
|
|
928
1227
|
|
|
@@ -1113,6 +1412,185 @@ class MarkdownViewService {
|
|
|
1113
1412
|
}
|
|
1114
1413
|
}
|
|
1115
1414
|
|
|
1415
|
+
const pathId = (p) => crypto.createHash("sha1").update(p).digest("hex").slice(0, 16);
|
|
1416
|
+
const buildTree = async (dir, visited) => {
|
|
1417
|
+
const realDir = await fs.realpath(dir);
|
|
1418
|
+
if (visited.has(realDir)) {
|
|
1419
|
+
return [];
|
|
1420
|
+
}
|
|
1421
|
+
visited.add(realDir);
|
|
1422
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
1423
|
+
const nodes = [];
|
|
1424
|
+
for (const entry of entries) {
|
|
1425
|
+
const childPath = path.join(dir, entry.name);
|
|
1426
|
+
const childRelPath = path.relative(process.cwd(), childPath).replace(/\\/g, "/");
|
|
1427
|
+
if (entry.isDirectory()) {
|
|
1428
|
+
nodes.push({
|
|
1429
|
+
id: pathId(childRelPath),
|
|
1430
|
+
path: childRelPath,
|
|
1431
|
+
label: entry.name,
|
|
1432
|
+
type: "directory",
|
|
1433
|
+
nodes: await buildTree(childPath, visited),
|
|
1434
|
+
});
|
|
1435
|
+
}
|
|
1436
|
+
else {
|
|
1437
|
+
nodes.push({
|
|
1438
|
+
id: pathId(childRelPath),
|
|
1439
|
+
path: childRelPath,
|
|
1440
|
+
label: entry.name,
|
|
1441
|
+
type: "file",
|
|
1442
|
+
mimeType: mime.lookup(entry.name) || "application/octet-stream",
|
|
1443
|
+
});
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
return nodes;
|
|
1447
|
+
};
|
|
1448
|
+
class ExplorerViewService {
|
|
1449
|
+
constructor() {
|
|
1450
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
1451
|
+
this.explorerMockService = inject(TYPES.explorerMockService);
|
|
1452
|
+
this.getDir = functoolsKit.singleshot(async () => {
|
|
1453
|
+
this.loggerService.log("explorerViewService getDir");
|
|
1454
|
+
const dir = path.join(process.cwd(), "dump");
|
|
1455
|
+
await fs.mkdir(dir, { recursive: true });
|
|
1456
|
+
return dir;
|
|
1457
|
+
});
|
|
1458
|
+
this.getNode = async (nodePath) => {
|
|
1459
|
+
this.loggerService.log("explorerViewService getNode", {
|
|
1460
|
+
nodePath,
|
|
1461
|
+
});
|
|
1462
|
+
if (CC_ENABLE_MOCK) {
|
|
1463
|
+
return await this.explorerMockService.getNode(nodePath);
|
|
1464
|
+
}
|
|
1465
|
+
const dir = await this.getDir();
|
|
1466
|
+
const absPath = path.resolve(process.cwd(), nodePath);
|
|
1467
|
+
if (!absPath.startsWith(dir + path.sep) && !absPath.startsWith(dir + "/") && absPath !== dir) {
|
|
1468
|
+
throw new Error(`Path is outside of dump dir: ${nodePath}`);
|
|
1469
|
+
}
|
|
1470
|
+
return await fs.readFile(absPath, "utf-8");
|
|
1471
|
+
};
|
|
1472
|
+
this.getTree = async () => {
|
|
1473
|
+
this.loggerService.log("explorerViewService getTree");
|
|
1474
|
+
if (CC_ENABLE_MOCK) {
|
|
1475
|
+
return await this.explorerMockService.getTree();
|
|
1476
|
+
}
|
|
1477
|
+
const dir = await this.getDir();
|
|
1478
|
+
const root = path.relative(process.cwd(), dir).replace(/\\/g, "/");
|
|
1479
|
+
const rootNode = {
|
|
1480
|
+
id: pathId(root),
|
|
1481
|
+
path: root,
|
|
1482
|
+
label: path.basename(root),
|
|
1483
|
+
type: "directory",
|
|
1484
|
+
nodes: await buildTree(dir, new Set([path.join(dir, "data")])),
|
|
1485
|
+
};
|
|
1486
|
+
return [rootNode];
|
|
1487
|
+
};
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
class SignalViewService {
|
|
1492
|
+
constructor() {
|
|
1493
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
1494
|
+
this.signalMockService = inject(TYPES.signalMockService);
|
|
1495
|
+
this.getLastUpdateTimestamp = async (signalId) => {
|
|
1496
|
+
this.loggerService.log("signalViewService getLastUpdateTimestamp", {
|
|
1497
|
+
signalId,
|
|
1498
|
+
});
|
|
1499
|
+
if (CC_ENABLE_MOCK) {
|
|
1500
|
+
return await this.signalMockService.getLastUpdateTimestamp(signalId);
|
|
1501
|
+
}
|
|
1502
|
+
{
|
|
1503
|
+
const liveSignal = await backtestKit.StorageLive.findById(signalId);
|
|
1504
|
+
if (liveSignal) {
|
|
1505
|
+
return liveSignal.updatedAt;
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1508
|
+
{
|
|
1509
|
+
const backtestSignal = await backtestKit.StorageBacktest.findById(signalId);
|
|
1510
|
+
if (backtestSignal) {
|
|
1511
|
+
return backtestSignal.updatedAt;
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
throw new Error(`SignalViewService getLastUpdateTimestamp signal not found signalId=${signalId}`);
|
|
1515
|
+
};
|
|
1516
|
+
this.getPendingSignal = async (symbol) => {
|
|
1517
|
+
this.loggerService.log("signalViewService getPendingSignal", {
|
|
1518
|
+
symbol,
|
|
1519
|
+
});
|
|
1520
|
+
if (CC_ENABLE_MOCK) {
|
|
1521
|
+
return await this.signalMockService.getPendingSignal(symbol);
|
|
1522
|
+
}
|
|
1523
|
+
{
|
|
1524
|
+
const liveList = await backtestKit.Live.list();
|
|
1525
|
+
const liveTarget = liveList.find((live) => live.symbol === symbol);
|
|
1526
|
+
if (liveTarget) {
|
|
1527
|
+
const currentPrice = await backtestKit.Exchange.getAveragePrice(symbol, {
|
|
1528
|
+
exchangeName: liveTarget.exchangeName,
|
|
1529
|
+
});
|
|
1530
|
+
return await backtestKit.Live.getPendingSignal(symbol, currentPrice, {
|
|
1531
|
+
strategyName: liveTarget.strategyName,
|
|
1532
|
+
exchangeName: liveTarget.exchangeName,
|
|
1533
|
+
});
|
|
1534
|
+
}
|
|
1535
|
+
}
|
|
1536
|
+
return null;
|
|
1537
|
+
};
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
class HeatViewService {
|
|
1542
|
+
constructor() {
|
|
1543
|
+
this.loggerService = inject(TYPES.loggerService);
|
|
1544
|
+
this.heatMockService = inject(TYPES.heatMockService);
|
|
1545
|
+
this.getStrategyHeatData = async () => {
|
|
1546
|
+
this.loggerService.log("heatViewService getStrategyHeatData");
|
|
1547
|
+
if (CC_ENABLE_MOCK) {
|
|
1548
|
+
return await this.heatMockService.getStrategyHeatData();
|
|
1549
|
+
}
|
|
1550
|
+
const [backtestItem] = await backtestKit.Backtest.list();
|
|
1551
|
+
const [liveItem] = await backtestKit.Live.list();
|
|
1552
|
+
if (backtestItem) {
|
|
1553
|
+
return await backtestKit.Heat.getData({
|
|
1554
|
+
strategyName: backtestItem.strategyName,
|
|
1555
|
+
exchangeName: backtestItem.exchangeName,
|
|
1556
|
+
frameName: backtestItem.frameName,
|
|
1557
|
+
}, true);
|
|
1558
|
+
}
|
|
1559
|
+
if (liveItem) {
|
|
1560
|
+
return await backtestKit.Heat.getData({
|
|
1561
|
+
strategyName: liveItem.strategyName,
|
|
1562
|
+
exchangeName: liveItem.exchangeName,
|
|
1563
|
+
frameName: "",
|
|
1564
|
+
}, false);
|
|
1565
|
+
}
|
|
1566
|
+
return null;
|
|
1567
|
+
};
|
|
1568
|
+
this.getStrategyHeatReport = async () => {
|
|
1569
|
+
this.loggerService.log("heatViewService getStrategyHeatReport");
|
|
1570
|
+
if (CC_ENABLE_MOCK) {
|
|
1571
|
+
return await this.heatMockService.getStrategyHeatReport();
|
|
1572
|
+
}
|
|
1573
|
+
const [backtestItem] = await backtestKit.Backtest.list();
|
|
1574
|
+
const [liveItem] = await backtestKit.Live.list();
|
|
1575
|
+
if (backtestItem) {
|
|
1576
|
+
return await backtestKit.Heat.getReport({
|
|
1577
|
+
strategyName: backtestItem.strategyName,
|
|
1578
|
+
exchangeName: backtestItem.exchangeName,
|
|
1579
|
+
frameName: backtestItem.frameName,
|
|
1580
|
+
});
|
|
1581
|
+
}
|
|
1582
|
+
if (liveItem) {
|
|
1583
|
+
return await backtestKit.Heat.getReport({
|
|
1584
|
+
strategyName: liveItem.strategyName,
|
|
1585
|
+
exchangeName: liveItem.exchangeName,
|
|
1586
|
+
frameName: "",
|
|
1587
|
+
});
|
|
1588
|
+
}
|
|
1589
|
+
return null;
|
|
1590
|
+
};
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1116
1594
|
const symbol_list = [
|
|
1117
1595
|
{
|
|
1118
1596
|
icon: "/icon/btc.png",
|
|
@@ -1309,6 +1787,9 @@ class LiveMetaService {
|
|
|
1309
1787
|
provide(TYPES.logMockService, () => new LogMockService());
|
|
1310
1788
|
provide(TYPES.statusMockService, () => new StatusMockService());
|
|
1311
1789
|
provide(TYPES.markdownMockService, () => new MarkdownMockService());
|
|
1790
|
+
provide(TYPES.explorerMockService, () => new ExplorerMockService());
|
|
1791
|
+
provide(TYPES.signalMockService, () => new SignalMockService());
|
|
1792
|
+
provide(TYPES.heatMockService, () => new HeatMockService());
|
|
1312
1793
|
}
|
|
1313
1794
|
{
|
|
1314
1795
|
provide(TYPES.notificationViewService, () => new NotificationViewService());
|
|
@@ -1317,6 +1798,9 @@ class LiveMetaService {
|
|
|
1317
1798
|
provide(TYPES.logViewService, () => new LogViewService());
|
|
1318
1799
|
provide(TYPES.statusViewService, () => new StatusViewService());
|
|
1319
1800
|
provide(TYPES.markdownViewService, () => new MarkdownViewService());
|
|
1801
|
+
provide(TYPES.explorerViewService, () => new ExplorerViewService());
|
|
1802
|
+
provide(TYPES.signalViewService, () => new SignalViewService());
|
|
1803
|
+
provide(TYPES.heatViewService, () => new HeatViewService());
|
|
1320
1804
|
}
|
|
1321
1805
|
|
|
1322
1806
|
const baseServices = {
|
|
@@ -1339,6 +1823,9 @@ const mockServices = {
|
|
|
1339
1823
|
logMockService: inject(TYPES.logMockService),
|
|
1340
1824
|
statusMockService: inject(TYPES.statusMockService),
|
|
1341
1825
|
markdownMockService: inject(TYPES.markdownMockService),
|
|
1826
|
+
explorerMockService: inject(TYPES.explorerMockService),
|
|
1827
|
+
signalMockService: inject(TYPES.signalMockService),
|
|
1828
|
+
heatMockService: inject(TYPES.heatMockService),
|
|
1342
1829
|
};
|
|
1343
1830
|
const viewServices = {
|
|
1344
1831
|
notificationViewService: inject(TYPES.notificationViewService),
|
|
@@ -1347,6 +1834,9 @@ const viewServices = {
|
|
|
1347
1834
|
logViewService: inject(TYPES.logViewService),
|
|
1348
1835
|
statusViewService: inject(TYPES.statusViewService),
|
|
1349
1836
|
markdownViewService: inject(TYPES.markdownViewService),
|
|
1837
|
+
explorerViewService: inject(TYPES.explorerViewService),
|
|
1838
|
+
signalViewService: inject(TYPES.signalViewService),
|
|
1839
|
+
heatViewService: inject(TYPES.heatViewService),
|
|
1350
1840
|
};
|
|
1351
1841
|
const ioc = {
|
|
1352
1842
|
...baseServices,
|
|
@@ -1357,11 +1847,11 @@ const ioc = {
|
|
|
1357
1847
|
};
|
|
1358
1848
|
init();
|
|
1359
1849
|
|
|
1360
|
-
const router$
|
|
1850
|
+
const router$a = Router({
|
|
1361
1851
|
params: true,
|
|
1362
1852
|
});
|
|
1363
1853
|
// ExchangeMockService endpoints
|
|
1364
|
-
router$
|
|
1854
|
+
router$a.post("/api/v1/mock/candles_signal", async (req, res) => {
|
|
1365
1855
|
try {
|
|
1366
1856
|
const request = await micro.json(req);
|
|
1367
1857
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -1389,7 +1879,7 @@ router$8.post("/api/v1/mock/candles_signal", async (req, res) => {
|
|
|
1389
1879
|
});
|
|
1390
1880
|
}
|
|
1391
1881
|
});
|
|
1392
|
-
router$
|
|
1882
|
+
router$a.post("/api/v1/mock/candles_point", async (req, res) => {
|
|
1393
1883
|
try {
|
|
1394
1884
|
const request = await micro.json(req);
|
|
1395
1885
|
const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
|
|
@@ -1423,7 +1913,7 @@ router$8.post("/api/v1/mock/candles_point", async (req, res) => {
|
|
|
1423
1913
|
}
|
|
1424
1914
|
});
|
|
1425
1915
|
// NotificationMockService endpoints
|
|
1426
|
-
router$
|
|
1916
|
+
router$a.post("/api/v1/mock/notification_list", async (req, res) => {
|
|
1427
1917
|
try {
|
|
1428
1918
|
const request = await micro.json(req);
|
|
1429
1919
|
const { requestId, serviceName } = request;
|
|
@@ -1451,7 +1941,7 @@ router$8.post("/api/v1/mock/notification_list", async (req, res) => {
|
|
|
1451
1941
|
});
|
|
1452
1942
|
}
|
|
1453
1943
|
});
|
|
1454
|
-
router$
|
|
1944
|
+
router$a.post("/api/v1/mock/notification_one/:id", async (req, res) => {
|
|
1455
1945
|
try {
|
|
1456
1946
|
const request = await micro.json(req);
|
|
1457
1947
|
const { requestId, serviceName } = request;
|
|
@@ -1480,7 +1970,7 @@ router$8.post("/api/v1/mock/notification_one/:id", async (req, res) => {
|
|
|
1480
1970
|
});
|
|
1481
1971
|
}
|
|
1482
1972
|
});
|
|
1483
|
-
router$
|
|
1973
|
+
router$a.post("/api/v1/mock/notification_filter", async (req, res) => {
|
|
1484
1974
|
try {
|
|
1485
1975
|
const request = await micro.json(req);
|
|
1486
1976
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -1509,7 +1999,7 @@ router$8.post("/api/v1/mock/notification_filter", async (req, res) => {
|
|
|
1509
1999
|
}
|
|
1510
2000
|
});
|
|
1511
2001
|
// StorageMockService endpoints
|
|
1512
|
-
router$
|
|
2002
|
+
router$a.post("/api/v1/mock/storage_one/:id", async (req, res) => {
|
|
1513
2003
|
try {
|
|
1514
2004
|
const request = await micro.json(req);
|
|
1515
2005
|
const { requestId, serviceName } = request;
|
|
@@ -1538,7 +2028,7 @@ router$8.post("/api/v1/mock/storage_one/:id", async (req, res) => {
|
|
|
1538
2028
|
});
|
|
1539
2029
|
}
|
|
1540
2030
|
});
|
|
1541
|
-
router$
|
|
2031
|
+
router$a.post("/api/v1/mock/storage_list/live", async (req, res) => {
|
|
1542
2032
|
try {
|
|
1543
2033
|
const request = await micro.json(req);
|
|
1544
2034
|
const { requestId, serviceName } = request;
|
|
@@ -1566,7 +2056,7 @@ router$8.post("/api/v1/mock/storage_list/live", async (req, res) => {
|
|
|
1566
2056
|
});
|
|
1567
2057
|
}
|
|
1568
2058
|
});
|
|
1569
|
-
router$
|
|
2059
|
+
router$a.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
|
|
1570
2060
|
try {
|
|
1571
2061
|
const request = await micro.json(req);
|
|
1572
2062
|
const { requestId, serviceName } = request;
|
|
@@ -1595,7 +2085,7 @@ router$8.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
|
|
|
1595
2085
|
}
|
|
1596
2086
|
});
|
|
1597
2087
|
// LogMockService endpoints
|
|
1598
|
-
router$
|
|
2088
|
+
router$a.post("/api/v1/mock/log_list", async (req, res) => {
|
|
1599
2089
|
try {
|
|
1600
2090
|
const request = await micro.json(req);
|
|
1601
2091
|
const { requestId, serviceName } = request;
|
|
@@ -1623,7 +2113,7 @@ router$8.post("/api/v1/mock/log_list", async (req, res) => {
|
|
|
1623
2113
|
});
|
|
1624
2114
|
}
|
|
1625
2115
|
});
|
|
1626
|
-
router$
|
|
2116
|
+
router$a.post("/api/v1/mock/log_one/:id", async (req, res) => {
|
|
1627
2117
|
try {
|
|
1628
2118
|
const request = await micro.json(req);
|
|
1629
2119
|
const { requestId, serviceName } = request;
|
|
@@ -1652,7 +2142,7 @@ router$8.post("/api/v1/mock/log_one/:id", async (req, res) => {
|
|
|
1652
2142
|
});
|
|
1653
2143
|
}
|
|
1654
2144
|
});
|
|
1655
|
-
router$
|
|
2145
|
+
router$a.post("/api/v1/mock/log_filter", async (req, res) => {
|
|
1656
2146
|
try {
|
|
1657
2147
|
const request = await micro.json(req);
|
|
1658
2148
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -1680,7 +2170,7 @@ router$8.post("/api/v1/mock/log_filter", async (req, res) => {
|
|
|
1680
2170
|
});
|
|
1681
2171
|
}
|
|
1682
2172
|
});
|
|
1683
|
-
router$
|
|
2173
|
+
router$a.post("/api/v1/mock/candles_live", async (req, res) => {
|
|
1684
2174
|
try {
|
|
1685
2175
|
const request = await micro.json(req);
|
|
1686
2176
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -1708,8 +2198,94 @@ router$8.post("/api/v1/mock/candles_live", async (req, res) => {
|
|
|
1708
2198
|
});
|
|
1709
2199
|
}
|
|
1710
2200
|
});
|
|
2201
|
+
router$a.post("/api/v1/mock/candles_last", async (req, res) => {
|
|
2202
|
+
try {
|
|
2203
|
+
const request = await micro.json(req);
|
|
2204
|
+
const { symbol, interval, requestId, serviceName } = request;
|
|
2205
|
+
const data = await ioc.exchangeMockService.getLastCandles(symbol, interval);
|
|
2206
|
+
const result = {
|
|
2207
|
+
data,
|
|
2208
|
+
status: "ok",
|
|
2209
|
+
error: "",
|
|
2210
|
+
requestId,
|
|
2211
|
+
serviceName,
|
|
2212
|
+
};
|
|
2213
|
+
ioc.loggerService.log("/api/v1/mock/candles_last ok", {
|
|
2214
|
+
request,
|
|
2215
|
+
result: omit(result, "data"),
|
|
2216
|
+
});
|
|
2217
|
+
return await micro.send(res, 200, result);
|
|
2218
|
+
}
|
|
2219
|
+
catch (error) {
|
|
2220
|
+
ioc.loggerService.log("/api/v1/mock/candles_last error", {
|
|
2221
|
+
error: functoolsKit.errorData(error),
|
|
2222
|
+
});
|
|
2223
|
+
return await micro.send(res, 200, {
|
|
2224
|
+
status: "error",
|
|
2225
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2226
|
+
});
|
|
2227
|
+
}
|
|
2228
|
+
});
|
|
2229
|
+
// SignalMockService endpoints
|
|
2230
|
+
router$a.post("/api/v1/mock/signal_last_update/:id", async (req, res) => {
|
|
2231
|
+
try {
|
|
2232
|
+
const request = await micro.json(req);
|
|
2233
|
+
const { requestId, serviceName } = request;
|
|
2234
|
+
const signalId = req.params.id;
|
|
2235
|
+
const data = await ioc.signalMockService.getLastUpdateTimestamp(signalId);
|
|
2236
|
+
const result = {
|
|
2237
|
+
data,
|
|
2238
|
+
status: "ok",
|
|
2239
|
+
error: "",
|
|
2240
|
+
requestId,
|
|
2241
|
+
serviceName,
|
|
2242
|
+
};
|
|
2243
|
+
ioc.loggerService.log("/api/v1/mock/signal_last_update/:id ok", {
|
|
2244
|
+
request,
|
|
2245
|
+
result: omit(result, "data"),
|
|
2246
|
+
});
|
|
2247
|
+
return await micro.send(res, 200, result);
|
|
2248
|
+
}
|
|
2249
|
+
catch (error) {
|
|
2250
|
+
ioc.loggerService.log("/api/v1/mock/signal_last_update/:id error", {
|
|
2251
|
+
error: functoolsKit.errorData(error),
|
|
2252
|
+
});
|
|
2253
|
+
return await micro.send(res, 200, {
|
|
2254
|
+
status: "error",
|
|
2255
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2256
|
+
});
|
|
2257
|
+
}
|
|
2258
|
+
});
|
|
2259
|
+
router$a.post("/api/v1/mock/signal_pending", async (req, res) => {
|
|
2260
|
+
try {
|
|
2261
|
+
const request = await micro.json(req);
|
|
2262
|
+
const { symbol, requestId, serviceName } = request;
|
|
2263
|
+
const data = await ioc.signalMockService.getPendingSignal(symbol);
|
|
2264
|
+
const result = {
|
|
2265
|
+
data,
|
|
2266
|
+
status: "ok",
|
|
2267
|
+
error: "",
|
|
2268
|
+
requestId,
|
|
2269
|
+
serviceName,
|
|
2270
|
+
};
|
|
2271
|
+
ioc.loggerService.log("/api/v1/mock/signal_pending ok", {
|
|
2272
|
+
request,
|
|
2273
|
+
result: omit(result, "data"),
|
|
2274
|
+
});
|
|
2275
|
+
return await micro.send(res, 200, result);
|
|
2276
|
+
}
|
|
2277
|
+
catch (error) {
|
|
2278
|
+
ioc.loggerService.log("/api/v1/mock/signal_pending error", {
|
|
2279
|
+
error: functoolsKit.errorData(error),
|
|
2280
|
+
});
|
|
2281
|
+
return await micro.send(res, 200, {
|
|
2282
|
+
status: "error",
|
|
2283
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2284
|
+
});
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
1711
2287
|
// StatusMockService endpoints
|
|
1712
|
-
router$
|
|
2288
|
+
router$a.post("/api/v1/mock/status_list", async (req, res) => {
|
|
1713
2289
|
try {
|
|
1714
2290
|
const request = await micro.json(req);
|
|
1715
2291
|
const { requestId, serviceName } = request;
|
|
@@ -1737,7 +2313,7 @@ router$8.post("/api/v1/mock/status_list", async (req, res) => {
|
|
|
1737
2313
|
});
|
|
1738
2314
|
}
|
|
1739
2315
|
});
|
|
1740
|
-
router$
|
|
2316
|
+
router$a.post("/api/v1/mock/status_one/:id", async (req, res) => {
|
|
1741
2317
|
try {
|
|
1742
2318
|
const request = await micro.json(req);
|
|
1743
2319
|
const { requestId, serviceName } = request;
|
|
@@ -1766,12 +2342,97 @@ router$8.post("/api/v1/mock/status_one/:id", async (req, res) => {
|
|
|
1766
2342
|
});
|
|
1767
2343
|
}
|
|
1768
2344
|
});
|
|
2345
|
+
// HeatMockService endpoints
|
|
2346
|
+
router$a.post("/api/v1/mock/heat_data", async (req, res) => {
|
|
2347
|
+
try {
|
|
2348
|
+
const request = await micro.json(req);
|
|
2349
|
+
const { requestId, serviceName } = request;
|
|
2350
|
+
const data = await ioc.heatMockService.getStrategyHeatData();
|
|
2351
|
+
const result = {
|
|
2352
|
+
data,
|
|
2353
|
+
status: "ok",
|
|
2354
|
+
error: "",
|
|
2355
|
+
requestId,
|
|
2356
|
+
serviceName,
|
|
2357
|
+
};
|
|
2358
|
+
ioc.loggerService.log("/api/v1/mock/heat_data ok", {
|
|
2359
|
+
request,
|
|
2360
|
+
result: omit(result, "data"),
|
|
2361
|
+
});
|
|
2362
|
+
return await micro.send(res, 200, result);
|
|
2363
|
+
}
|
|
2364
|
+
catch (error) {
|
|
2365
|
+
ioc.loggerService.log("/api/v1/mock/heat_data error", {
|
|
2366
|
+
error: functoolsKit.errorData(error),
|
|
2367
|
+
});
|
|
2368
|
+
return await micro.send(res, 200, {
|
|
2369
|
+
status: "error",
|
|
2370
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2371
|
+
});
|
|
2372
|
+
}
|
|
2373
|
+
});
|
|
2374
|
+
router$a.post("/api/v1/mock/heat_report", async (req, res) => {
|
|
2375
|
+
try {
|
|
2376
|
+
const request = await micro.json(req);
|
|
2377
|
+
const { requestId, serviceName } = request;
|
|
2378
|
+
const data = await ioc.heatMockService.getStrategyHeatReport();
|
|
2379
|
+
const result = {
|
|
2380
|
+
data,
|
|
2381
|
+
status: "ok",
|
|
2382
|
+
error: "",
|
|
2383
|
+
requestId,
|
|
2384
|
+
serviceName,
|
|
2385
|
+
};
|
|
2386
|
+
ioc.loggerService.log("/api/v1/mock/heat_report ok", {
|
|
2387
|
+
request,
|
|
2388
|
+
result: omit(result, "data"),
|
|
2389
|
+
});
|
|
2390
|
+
return await micro.send(res, 200, result);
|
|
2391
|
+
}
|
|
2392
|
+
catch (error) {
|
|
2393
|
+
ioc.loggerService.log("/api/v1/mock/heat_report error", {
|
|
2394
|
+
error: functoolsKit.errorData(error),
|
|
2395
|
+
});
|
|
2396
|
+
return await micro.send(res, 200, {
|
|
2397
|
+
status: "error",
|
|
2398
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2399
|
+
});
|
|
2400
|
+
}
|
|
2401
|
+
});
|
|
2402
|
+
router$a.post("/api/v1/mock/status_info", async (req, res) => {
|
|
2403
|
+
try {
|
|
2404
|
+
const request = await micro.json(req);
|
|
2405
|
+
const { requestId, serviceName } = request;
|
|
2406
|
+
const data = await ioc.statusMockService.getStatusInfo();
|
|
2407
|
+
const result = {
|
|
2408
|
+
data,
|
|
2409
|
+
status: "ok",
|
|
2410
|
+
error: "",
|
|
2411
|
+
requestId,
|
|
2412
|
+
serviceName,
|
|
2413
|
+
};
|
|
2414
|
+
ioc.loggerService.log("/api/v1/mock/status_info ok", {
|
|
2415
|
+
request,
|
|
2416
|
+
result: omit(result, "data"),
|
|
2417
|
+
});
|
|
2418
|
+
return await micro.send(res, 200, result);
|
|
2419
|
+
}
|
|
2420
|
+
catch (error) {
|
|
2421
|
+
ioc.loggerService.log("/api/v1/mock/status_info error", {
|
|
2422
|
+
error: functoolsKit.errorData(error),
|
|
2423
|
+
});
|
|
2424
|
+
return await micro.send(res, 200, {
|
|
2425
|
+
status: "error",
|
|
2426
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2427
|
+
});
|
|
2428
|
+
}
|
|
2429
|
+
});
|
|
1769
2430
|
|
|
1770
|
-
const router$
|
|
2431
|
+
const router$9 = Router({
|
|
1771
2432
|
params: true,
|
|
1772
2433
|
});
|
|
1773
2434
|
// ExchangeViewService endpoints
|
|
1774
|
-
router$
|
|
2435
|
+
router$9.post("/api/v1/view/candles_signal", async (req, res) => {
|
|
1775
2436
|
try {
|
|
1776
2437
|
const request = await micro.json(req);
|
|
1777
2438
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -1799,7 +2460,7 @@ router$7.post("/api/v1/view/candles_signal", async (req, res) => {
|
|
|
1799
2460
|
});
|
|
1800
2461
|
}
|
|
1801
2462
|
});
|
|
1802
|
-
router$
|
|
2463
|
+
router$9.post("/api/v1/view/candles_point", async (req, res) => {
|
|
1803
2464
|
try {
|
|
1804
2465
|
const request = await micro.json(req);
|
|
1805
2466
|
const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
|
|
@@ -1832,7 +2493,7 @@ router$7.post("/api/v1/view/candles_point", async (req, res) => {
|
|
|
1832
2493
|
});
|
|
1833
2494
|
}
|
|
1834
2495
|
});
|
|
1835
|
-
router$
|
|
2496
|
+
router$9.post("/api/v1/view/candles_live", async (req, res) => {
|
|
1836
2497
|
try {
|
|
1837
2498
|
const request = await micro.json(req);
|
|
1838
2499
|
const { signalId, interval, requestId, serviceName } = request;
|
|
@@ -1860,8 +2521,36 @@ router$7.post("/api/v1/view/candles_live", async (req, res) => {
|
|
|
1860
2521
|
});
|
|
1861
2522
|
}
|
|
1862
2523
|
});
|
|
2524
|
+
router$9.post("/api/v1/view/candles_last", async (req, res) => {
|
|
2525
|
+
try {
|
|
2526
|
+
const request = await micro.json(req);
|
|
2527
|
+
const { symbol, interval, requestId, serviceName } = request;
|
|
2528
|
+
const data = await ioc.exchangeViewService.getLastCandles(symbol, interval);
|
|
2529
|
+
const result = {
|
|
2530
|
+
data,
|
|
2531
|
+
status: "ok",
|
|
2532
|
+
error: "",
|
|
2533
|
+
requestId,
|
|
2534
|
+
serviceName,
|
|
2535
|
+
};
|
|
2536
|
+
ioc.loggerService.log("/api/v1/view/candles_last ok", {
|
|
2537
|
+
request,
|
|
2538
|
+
result: omit(result, "data"),
|
|
2539
|
+
});
|
|
2540
|
+
return await micro.send(res, 200, result);
|
|
2541
|
+
}
|
|
2542
|
+
catch (error) {
|
|
2543
|
+
ioc.loggerService.log("/api/v1/view/candles_last error", {
|
|
2544
|
+
error: functoolsKit.errorData(error),
|
|
2545
|
+
});
|
|
2546
|
+
return await micro.send(res, 200, {
|
|
2547
|
+
status: "error",
|
|
2548
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2549
|
+
});
|
|
2550
|
+
}
|
|
2551
|
+
});
|
|
1863
2552
|
// NotificationViewService endpoints
|
|
1864
|
-
router$
|
|
2553
|
+
router$9.post("/api/v1/view/notification_list", async (req, res) => {
|
|
1865
2554
|
try {
|
|
1866
2555
|
const request = await micro.json(req);
|
|
1867
2556
|
const { requestId, serviceName } = request;
|
|
@@ -1889,7 +2578,7 @@ router$7.post("/api/v1/view/notification_list", async (req, res) => {
|
|
|
1889
2578
|
});
|
|
1890
2579
|
}
|
|
1891
2580
|
});
|
|
1892
|
-
router$
|
|
2581
|
+
router$9.post("/api/v1/view/notification_one/:id", async (req, res) => {
|
|
1893
2582
|
try {
|
|
1894
2583
|
const request = await micro.json(req);
|
|
1895
2584
|
const { requestId, serviceName } = request;
|
|
@@ -1918,7 +2607,7 @@ router$7.post("/api/v1/view/notification_one/:id", async (req, res) => {
|
|
|
1918
2607
|
});
|
|
1919
2608
|
}
|
|
1920
2609
|
});
|
|
1921
|
-
router$
|
|
2610
|
+
router$9.post("/api/v1/view/notification_filter", async (req, res) => {
|
|
1922
2611
|
try {
|
|
1923
2612
|
const request = await micro.json(req);
|
|
1924
2613
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -1947,7 +2636,7 @@ router$7.post("/api/v1/view/notification_filter", async (req, res) => {
|
|
|
1947
2636
|
}
|
|
1948
2637
|
});
|
|
1949
2638
|
// StorageViewService endpoints
|
|
1950
|
-
router$
|
|
2639
|
+
router$9.post("/api/v1/view/storage_one/:id", async (req, res) => {
|
|
1951
2640
|
try {
|
|
1952
2641
|
const request = await micro.json(req);
|
|
1953
2642
|
const { requestId, serviceName } = request;
|
|
@@ -1976,7 +2665,7 @@ router$7.post("/api/v1/view/storage_one/:id", async (req, res) => {
|
|
|
1976
2665
|
});
|
|
1977
2666
|
}
|
|
1978
2667
|
});
|
|
1979
|
-
router$
|
|
2668
|
+
router$9.post("/api/v1/view/storage_list/live", async (req, res) => {
|
|
1980
2669
|
try {
|
|
1981
2670
|
const request = await micro.json(req);
|
|
1982
2671
|
const { requestId, serviceName } = request;
|
|
@@ -2004,7 +2693,7 @@ router$7.post("/api/v1/view/storage_list/live", async (req, res) => {
|
|
|
2004
2693
|
});
|
|
2005
2694
|
}
|
|
2006
2695
|
});
|
|
2007
|
-
router$
|
|
2696
|
+
router$9.post("/api/v1/view/storage_list/backtest", async (req, res) => {
|
|
2008
2697
|
try {
|
|
2009
2698
|
const request = await micro.json(req);
|
|
2010
2699
|
const { requestId, serviceName } = request;
|
|
@@ -2033,7 +2722,7 @@ router$7.post("/api/v1/view/storage_list/backtest", async (req, res) => {
|
|
|
2033
2722
|
}
|
|
2034
2723
|
});
|
|
2035
2724
|
// LogViewService endpoints
|
|
2036
|
-
router$
|
|
2725
|
+
router$9.post("/api/v1/view/log_list", async (req, res) => {
|
|
2037
2726
|
try {
|
|
2038
2727
|
const request = await micro.json(req);
|
|
2039
2728
|
const { requestId, serviceName } = request;
|
|
@@ -2061,7 +2750,7 @@ router$7.post("/api/v1/view/log_list", async (req, res) => {
|
|
|
2061
2750
|
});
|
|
2062
2751
|
}
|
|
2063
2752
|
});
|
|
2064
|
-
router$
|
|
2753
|
+
router$9.post("/api/v1/view/log_one/:id", async (req, res) => {
|
|
2065
2754
|
try {
|
|
2066
2755
|
const request = await micro.json(req);
|
|
2067
2756
|
const { requestId, serviceName } = request;
|
|
@@ -2090,7 +2779,7 @@ router$7.post("/api/v1/view/log_one/:id", async (req, res) => {
|
|
|
2090
2779
|
});
|
|
2091
2780
|
}
|
|
2092
2781
|
});
|
|
2093
|
-
router$
|
|
2782
|
+
router$9.post("/api/v1/view/log_filter", async (req, res) => {
|
|
2094
2783
|
try {
|
|
2095
2784
|
const request = await micro.json(req);
|
|
2096
2785
|
const { requestId, serviceName, filterData, limit, offset } = request;
|
|
@@ -2118,8 +2807,66 @@ router$7.post("/api/v1/view/log_filter", async (req, res) => {
|
|
|
2118
2807
|
});
|
|
2119
2808
|
}
|
|
2120
2809
|
});
|
|
2810
|
+
// SignalViewService endpoints
|
|
2811
|
+
router$9.post("/api/v1/view/signal_last_update/:id", async (req, res) => {
|
|
2812
|
+
try {
|
|
2813
|
+
const request = await micro.json(req);
|
|
2814
|
+
const { requestId, serviceName } = request;
|
|
2815
|
+
const signalId = req.params.id;
|
|
2816
|
+
const data = await ioc.signalViewService.getLastUpdateTimestamp(signalId);
|
|
2817
|
+
const result = {
|
|
2818
|
+
data,
|
|
2819
|
+
status: "ok",
|
|
2820
|
+
error: "",
|
|
2821
|
+
requestId,
|
|
2822
|
+
serviceName,
|
|
2823
|
+
};
|
|
2824
|
+
ioc.loggerService.log("/api/v1/view/signal_last_update/:id ok", {
|
|
2825
|
+
request,
|
|
2826
|
+
result: omit(result, "data"),
|
|
2827
|
+
});
|
|
2828
|
+
return await micro.send(res, 200, result);
|
|
2829
|
+
}
|
|
2830
|
+
catch (error) {
|
|
2831
|
+
ioc.loggerService.log("/api/v1/view/signal_last_update/:id error", {
|
|
2832
|
+
error: functoolsKit.errorData(error),
|
|
2833
|
+
});
|
|
2834
|
+
return await micro.send(res, 200, {
|
|
2835
|
+
status: "error",
|
|
2836
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2837
|
+
});
|
|
2838
|
+
}
|
|
2839
|
+
});
|
|
2840
|
+
router$9.post("/api/v1/view/signal_pending", async (req, res) => {
|
|
2841
|
+
try {
|
|
2842
|
+
const request = await micro.json(req);
|
|
2843
|
+
const { symbol, requestId, serviceName } = request;
|
|
2844
|
+
const data = await ioc.signalViewService.getPendingSignal(symbol);
|
|
2845
|
+
const result = {
|
|
2846
|
+
data,
|
|
2847
|
+
status: "ok",
|
|
2848
|
+
error: "",
|
|
2849
|
+
requestId,
|
|
2850
|
+
serviceName,
|
|
2851
|
+
};
|
|
2852
|
+
ioc.loggerService.log("/api/v1/view/signal_pending ok", {
|
|
2853
|
+
request,
|
|
2854
|
+
result: omit(result, "data"),
|
|
2855
|
+
});
|
|
2856
|
+
return await micro.send(res, 200, result);
|
|
2857
|
+
}
|
|
2858
|
+
catch (error) {
|
|
2859
|
+
ioc.loggerService.log("/api/v1/view/signal_pending error", {
|
|
2860
|
+
error: functoolsKit.errorData(error),
|
|
2861
|
+
});
|
|
2862
|
+
return await micro.send(res, 200, {
|
|
2863
|
+
status: "error",
|
|
2864
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2865
|
+
});
|
|
2866
|
+
}
|
|
2867
|
+
});
|
|
2121
2868
|
// StatusViewService endpoints
|
|
2122
|
-
router$
|
|
2869
|
+
router$9.post("/api/v1/view/status_list", async (req, res) => {
|
|
2123
2870
|
try {
|
|
2124
2871
|
const request = await micro.json(req);
|
|
2125
2872
|
const { requestId, serviceName } = request;
|
|
@@ -2147,7 +2894,7 @@ router$7.post("/api/v1/view/status_list", async (req, res) => {
|
|
|
2147
2894
|
});
|
|
2148
2895
|
}
|
|
2149
2896
|
});
|
|
2150
|
-
router$
|
|
2897
|
+
router$9.post("/api/v1/view/status_one/:id", async (req, res) => {
|
|
2151
2898
|
try {
|
|
2152
2899
|
const request = await micro.json(req);
|
|
2153
2900
|
const { requestId, serviceName } = request;
|
|
@@ -2176,6 +2923,91 @@ router$7.post("/api/v1/view/status_one/:id", async (req, res) => {
|
|
|
2176
2923
|
});
|
|
2177
2924
|
}
|
|
2178
2925
|
});
|
|
2926
|
+
// HeatViewService endpoints
|
|
2927
|
+
router$9.post("/api/v1/view/heat_data", async (req, res) => {
|
|
2928
|
+
try {
|
|
2929
|
+
const request = await micro.json(req);
|
|
2930
|
+
const { requestId, serviceName } = request;
|
|
2931
|
+
const data = await ioc.heatViewService.getStrategyHeatData();
|
|
2932
|
+
const result = {
|
|
2933
|
+
data,
|
|
2934
|
+
status: "ok",
|
|
2935
|
+
error: "",
|
|
2936
|
+
requestId,
|
|
2937
|
+
serviceName,
|
|
2938
|
+
};
|
|
2939
|
+
ioc.loggerService.log("/api/v1/view/heat_data ok", {
|
|
2940
|
+
request,
|
|
2941
|
+
result: omit(result, "data"),
|
|
2942
|
+
});
|
|
2943
|
+
return await micro.send(res, 200, result);
|
|
2944
|
+
}
|
|
2945
|
+
catch (error) {
|
|
2946
|
+
ioc.loggerService.log("/api/v1/view/heat_data error", {
|
|
2947
|
+
error: functoolsKit.errorData(error),
|
|
2948
|
+
});
|
|
2949
|
+
return await micro.send(res, 200, {
|
|
2950
|
+
status: "error",
|
|
2951
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2952
|
+
});
|
|
2953
|
+
}
|
|
2954
|
+
});
|
|
2955
|
+
router$9.post("/api/v1/view/heat_report", async (req, res) => {
|
|
2956
|
+
try {
|
|
2957
|
+
const request = await micro.json(req);
|
|
2958
|
+
const { requestId, serviceName } = request;
|
|
2959
|
+
const data = await ioc.heatViewService.getStrategyHeatReport();
|
|
2960
|
+
const result = {
|
|
2961
|
+
data,
|
|
2962
|
+
status: "ok",
|
|
2963
|
+
error: "",
|
|
2964
|
+
requestId,
|
|
2965
|
+
serviceName,
|
|
2966
|
+
};
|
|
2967
|
+
ioc.loggerService.log("/api/v1/view/heat_report ok", {
|
|
2968
|
+
request,
|
|
2969
|
+
result: omit(result, "data"),
|
|
2970
|
+
});
|
|
2971
|
+
return await micro.send(res, 200, result);
|
|
2972
|
+
}
|
|
2973
|
+
catch (error) {
|
|
2974
|
+
ioc.loggerService.log("/api/v1/view/heat_report error", {
|
|
2975
|
+
error: functoolsKit.errorData(error),
|
|
2976
|
+
});
|
|
2977
|
+
return await micro.send(res, 200, {
|
|
2978
|
+
status: "error",
|
|
2979
|
+
error: functoolsKit.getErrorMessage(error),
|
|
2980
|
+
});
|
|
2981
|
+
}
|
|
2982
|
+
});
|
|
2983
|
+
router$9.post("/api/v1/view/status_info", async (req, res) => {
|
|
2984
|
+
try {
|
|
2985
|
+
const request = await micro.json(req);
|
|
2986
|
+
const { requestId, serviceName } = request;
|
|
2987
|
+
const data = await ioc.statusViewService.getStatusInfo();
|
|
2988
|
+
const result = {
|
|
2989
|
+
data,
|
|
2990
|
+
status: "ok",
|
|
2991
|
+
error: "",
|
|
2992
|
+
requestId,
|
|
2993
|
+
serviceName,
|
|
2994
|
+
};
|
|
2995
|
+
ioc.loggerService.log("/api/v1/view/status_info ok", {
|
|
2996
|
+
request,
|
|
2997
|
+
result: omit(result, "data"),
|
|
2998
|
+
});
|
|
2999
|
+
return await micro.send(res, 200, result);
|
|
3000
|
+
}
|
|
3001
|
+
catch (error) {
|
|
3002
|
+
ioc.loggerService.log("/api/v1/view/status_info error", {
|
|
3003
|
+
error: functoolsKit.errorData(error),
|
|
3004
|
+
});
|
|
3005
|
+
return await micro.send(res, 200, {
|
|
3006
|
+
status: "error",
|
|
3007
|
+
error: functoolsKit.getErrorMessage(error),
|
|
3008
|
+
});
|
|
3009
|
+
}
|
|
3010
|
+
});
|
|
2179
3011
|
|
|
2180
3012
|
const require$2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));
|
|
2181
3013
|
function getModulesPath() {
|
|
@@ -2184,7 +3016,7 @@ function getModulesPath() {
|
|
|
2184
3016
|
return path.join(basePath, "../../../");
|
|
2185
3017
|
}
|
|
2186
3018
|
|
|
2187
|
-
const router$
|
|
3019
|
+
const router$8 = Router({
|
|
2188
3020
|
params: true,
|
|
2189
3021
|
});
|
|
2190
3022
|
// getModulesPath
|
|
@@ -2201,7 +3033,7 @@ const ASSET_32 = CC_ENABLE_MOCK
|
|
|
2201
3033
|
const cache128 = new Map();
|
|
2202
3034
|
const cache32 = new Map();
|
|
2203
3035
|
const cacheSvg = new Map();
|
|
2204
|
-
router$
|
|
3036
|
+
router$8.get("/icon/128/:filename", async (req, res) => {
|
|
2205
3037
|
const filename = req.params.filename;
|
|
2206
3038
|
// Check cache first
|
|
2207
3039
|
if (cache128.has(filename)) {
|
|
@@ -2217,7 +3049,7 @@ router$6.get("/icon/128/:filename", async (req, res) => {
|
|
|
2217
3049
|
}
|
|
2218
3050
|
return await micro.send(res, 404, "File not found (128)");
|
|
2219
3051
|
});
|
|
2220
|
-
router$
|
|
3052
|
+
router$8.get("/icon/32/:filename", async (req, res) => {
|
|
2221
3053
|
const filename = req.params.filename;
|
|
2222
3054
|
// Check cache first
|
|
2223
3055
|
if (cache32.has(filename)) {
|
|
@@ -2233,7 +3065,7 @@ router$6.get("/icon/32/:filename", async (req, res) => {
|
|
|
2233
3065
|
}
|
|
2234
3066
|
return await micro.send(res, 404, "File not found (32)");
|
|
2235
3067
|
});
|
|
2236
|
-
router$
|
|
3068
|
+
router$8.get("/icon/svg/:filename", async (req, res) => {
|
|
2237
3069
|
const filename = req.params.filename;
|
|
2238
3070
|
// Check cache first
|
|
2239
3071
|
if (cacheSvg.has(filename)) {
|
|
@@ -2249,7 +3081,7 @@ router$6.get("/icon/svg/:filename", async (req, res) => {
|
|
|
2249
3081
|
}
|
|
2250
3082
|
return await micro.send(res, 404, "File not found (svg)");
|
|
2251
3083
|
});
|
|
2252
|
-
router$
|
|
3084
|
+
router$8.get("/icon/:filename", async (req, res) => {
|
|
2253
3085
|
const filename = req.params.filename;
|
|
2254
3086
|
// Check cache first
|
|
2255
3087
|
if (cache32.has(filename)) {
|
|
@@ -2266,10 +3098,10 @@ router$6.get("/icon/:filename", async (req, res) => {
|
|
|
2266
3098
|
return await micro.send(res, 404, "File not found (root)");
|
|
2267
3099
|
});
|
|
2268
3100
|
|
|
2269
|
-
const router$
|
|
3101
|
+
const router$7 = Router({
|
|
2270
3102
|
params: true,
|
|
2271
3103
|
});
|
|
2272
|
-
router$
|
|
3104
|
+
router$7.post("/api/v1/dict/symbol/list", async (req, res) => {
|
|
2273
3105
|
try {
|
|
2274
3106
|
const request = await micro.json(req);
|
|
2275
3107
|
const { requestId, serviceName } = request;
|
|
@@ -2297,7 +3129,7 @@ router$5.post("/api/v1/dict/symbol/list", async (req, res) => {
|
|
|
2297
3129
|
});
|
|
2298
3130
|
}
|
|
2299
3131
|
});
|
|
2300
|
-
router$
|
|
3132
|
+
router$7.post("/api/v1/dict/symbol/map", async (req, res) => {
|
|
2301
3133
|
try {
|
|
2302
3134
|
const request = await micro.json(req);
|
|
2303
3135
|
const { requestId, serviceName } = request;
|
|
@@ -2325,7 +3157,7 @@ router$5.post("/api/v1/dict/symbol/map", async (req, res) => {
|
|
|
2325
3157
|
});
|
|
2326
3158
|
}
|
|
2327
3159
|
});
|
|
2328
|
-
router$
|
|
3160
|
+
router$7.post("/api/v1/dict/symbol/one", async (req, res) => {
|
|
2329
3161
|
try {
|
|
2330
3162
|
const request = await micro.json(req);
|
|
2331
3163
|
const { requestId, serviceName, id } = request;
|
|
@@ -2354,10 +3186,10 @@ router$5.post("/api/v1/dict/symbol/one", async (req, res) => {
|
|
|
2354
3186
|
}
|
|
2355
3187
|
});
|
|
2356
3188
|
|
|
2357
|
-
const router$
|
|
3189
|
+
const router$6 = Router({
|
|
2358
3190
|
params: true,
|
|
2359
3191
|
});
|
|
2360
|
-
router$
|
|
3192
|
+
router$6.post("/api/v1/markdown_mock/strategy_data", async (req, res) => {
|
|
2361
3193
|
try {
|
|
2362
3194
|
const request = await micro.json(req);
|
|
2363
3195
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2371,7 +3203,7 @@ router$4.post("/api/v1/markdown_mock/strategy_data", async (req, res) => {
|
|
|
2371
3203
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2372
3204
|
}
|
|
2373
3205
|
});
|
|
2374
|
-
router$
|
|
3206
|
+
router$6.post("/api/v1/markdown_mock/strategy_report", async (req, res) => {
|
|
2375
3207
|
try {
|
|
2376
3208
|
const request = await micro.json(req);
|
|
2377
3209
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2385,7 +3217,7 @@ router$4.post("/api/v1/markdown_mock/strategy_report", async (req, res) => {
|
|
|
2385
3217
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2386
3218
|
}
|
|
2387
3219
|
});
|
|
2388
|
-
router$
|
|
3220
|
+
router$6.post("/api/v1/markdown_mock/backtest_data", async (req, res) => {
|
|
2389
3221
|
try {
|
|
2390
3222
|
const request = await micro.json(req);
|
|
2391
3223
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2399,7 +3231,7 @@ router$4.post("/api/v1/markdown_mock/backtest_data", async (req, res) => {
|
|
|
2399
3231
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2400
3232
|
}
|
|
2401
3233
|
});
|
|
2402
|
-
router$
|
|
3234
|
+
router$6.post("/api/v1/markdown_mock/backtest_report", async (req, res) => {
|
|
2403
3235
|
try {
|
|
2404
3236
|
const request = await micro.json(req);
|
|
2405
3237
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2413,7 +3245,7 @@ router$4.post("/api/v1/markdown_mock/backtest_report", async (req, res) => {
|
|
|
2413
3245
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2414
3246
|
}
|
|
2415
3247
|
});
|
|
2416
|
-
router$
|
|
3248
|
+
router$6.post("/api/v1/markdown_mock/live_data", async (req, res) => {
|
|
2417
3249
|
try {
|
|
2418
3250
|
const request = await micro.json(req);
|
|
2419
3251
|
const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
|
|
@@ -2427,7 +3259,7 @@ router$4.post("/api/v1/markdown_mock/live_data", async (req, res) => {
|
|
|
2427
3259
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2428
3260
|
}
|
|
2429
3261
|
});
|
|
2430
|
-
router$
|
|
3262
|
+
router$6.post("/api/v1/markdown_mock/live_report", async (req, res) => {
|
|
2431
3263
|
try {
|
|
2432
3264
|
const request = await micro.json(req);
|
|
2433
3265
|
const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
|
|
@@ -2441,7 +3273,7 @@ router$4.post("/api/v1/markdown_mock/live_report", async (req, res) => {
|
|
|
2441
3273
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2442
3274
|
}
|
|
2443
3275
|
});
|
|
2444
|
-
router$
|
|
3276
|
+
router$6.post("/api/v1/markdown_mock/breakeven_data", async (req, res) => {
|
|
2445
3277
|
try {
|
|
2446
3278
|
const request = await micro.json(req);
|
|
2447
3279
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2455,7 +3287,7 @@ router$4.post("/api/v1/markdown_mock/breakeven_data", async (req, res) => {
|
|
|
2455
3287
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2456
3288
|
}
|
|
2457
3289
|
});
|
|
2458
|
-
router$
|
|
3290
|
+
router$6.post("/api/v1/markdown_mock/breakeven_report", async (req, res) => {
|
|
2459
3291
|
try {
|
|
2460
3292
|
const request = await micro.json(req);
|
|
2461
3293
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2469,7 +3301,7 @@ router$4.post("/api/v1/markdown_mock/breakeven_report", async (req, res) => {
|
|
|
2469
3301
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2470
3302
|
}
|
|
2471
3303
|
});
|
|
2472
|
-
router$
|
|
3304
|
+
router$6.post("/api/v1/markdown_mock/risk_data", async (req, res) => {
|
|
2473
3305
|
try {
|
|
2474
3306
|
const request = await micro.json(req);
|
|
2475
3307
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2483,7 +3315,7 @@ router$4.post("/api/v1/markdown_mock/risk_data", async (req, res) => {
|
|
|
2483
3315
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2484
3316
|
}
|
|
2485
3317
|
});
|
|
2486
|
-
router$
|
|
3318
|
+
router$6.post("/api/v1/markdown_mock/risk_report", async (req, res) => {
|
|
2487
3319
|
try {
|
|
2488
3320
|
const request = await micro.json(req);
|
|
2489
3321
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2497,7 +3329,7 @@ router$4.post("/api/v1/markdown_mock/risk_report", async (req, res) => {
|
|
|
2497
3329
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2498
3330
|
}
|
|
2499
3331
|
});
|
|
2500
|
-
router$
|
|
3332
|
+
router$6.post("/api/v1/markdown_mock/partial_data", async (req, res) => {
|
|
2501
3333
|
try {
|
|
2502
3334
|
const request = await micro.json(req);
|
|
2503
3335
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2511,7 +3343,7 @@ router$4.post("/api/v1/markdown_mock/partial_data", async (req, res) => {
|
|
|
2511
3343
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2512
3344
|
}
|
|
2513
3345
|
});
|
|
2514
|
-
router$
|
|
3346
|
+
router$6.post("/api/v1/markdown_mock/partial_report", async (req, res) => {
|
|
2515
3347
|
try {
|
|
2516
3348
|
const request = await micro.json(req);
|
|
2517
3349
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2525,7 +3357,7 @@ router$4.post("/api/v1/markdown_mock/partial_report", async (req, res) => {
|
|
|
2525
3357
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2526
3358
|
}
|
|
2527
3359
|
});
|
|
2528
|
-
router$
|
|
3360
|
+
router$6.post("/api/v1/markdown_mock/highest_profit_data", async (req, res) => {
|
|
2529
3361
|
try {
|
|
2530
3362
|
const request = await micro.json(req);
|
|
2531
3363
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2539,7 +3371,7 @@ router$4.post("/api/v1/markdown_mock/highest_profit_data", async (req, res) => {
|
|
|
2539
3371
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2540
3372
|
}
|
|
2541
3373
|
});
|
|
2542
|
-
router$
|
|
3374
|
+
router$6.post("/api/v1/markdown_mock/highest_profit_report", async (req, res) => {
|
|
2543
3375
|
try {
|
|
2544
3376
|
const request = await micro.json(req);
|
|
2545
3377
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2553,7 +3385,7 @@ router$4.post("/api/v1/markdown_mock/highest_profit_report", async (req, res) =>
|
|
|
2553
3385
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2554
3386
|
}
|
|
2555
3387
|
});
|
|
2556
|
-
router$
|
|
3388
|
+
router$6.post("/api/v1/markdown_mock/schedule_data", async (req, res) => {
|
|
2557
3389
|
try {
|
|
2558
3390
|
const request = await micro.json(req);
|
|
2559
3391
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2567,7 +3399,7 @@ router$4.post("/api/v1/markdown_mock/schedule_data", async (req, res) => {
|
|
|
2567
3399
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2568
3400
|
}
|
|
2569
3401
|
});
|
|
2570
|
-
router$
|
|
3402
|
+
router$6.post("/api/v1/markdown_mock/schedule_report", async (req, res) => {
|
|
2571
3403
|
try {
|
|
2572
3404
|
const request = await micro.json(req);
|
|
2573
3405
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2581,7 +3413,7 @@ router$4.post("/api/v1/markdown_mock/schedule_report", async (req, res) => {
|
|
|
2581
3413
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2582
3414
|
}
|
|
2583
3415
|
});
|
|
2584
|
-
router$
|
|
3416
|
+
router$6.post("/api/v1/markdown_mock/performance_data", async (req, res) => {
|
|
2585
3417
|
try {
|
|
2586
3418
|
const request = await micro.json(req);
|
|
2587
3419
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2595,7 +3427,7 @@ router$4.post("/api/v1/markdown_mock/performance_data", async (req, res) => {
|
|
|
2595
3427
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2596
3428
|
}
|
|
2597
3429
|
});
|
|
2598
|
-
router$
|
|
3430
|
+
router$6.post("/api/v1/markdown_mock/performance_report", async (req, res) => {
|
|
2599
3431
|
try {
|
|
2600
3432
|
const request = await micro.json(req);
|
|
2601
3433
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2609,7 +3441,7 @@ router$4.post("/api/v1/markdown_mock/performance_report", async (req, res) => {
|
|
|
2609
3441
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2610
3442
|
}
|
|
2611
3443
|
});
|
|
2612
|
-
router$
|
|
3444
|
+
router$6.post("/api/v1/markdown_mock/sync_data", async (req, res) => {
|
|
2613
3445
|
try {
|
|
2614
3446
|
const request = await micro.json(req);
|
|
2615
3447
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2623,7 +3455,7 @@ router$4.post("/api/v1/markdown_mock/sync_data", async (req, res) => {
|
|
|
2623
3455
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2624
3456
|
}
|
|
2625
3457
|
});
|
|
2626
|
-
router$
|
|
3458
|
+
router$6.post("/api/v1/markdown_mock/sync_report", async (req, res) => {
|
|
2627
3459
|
try {
|
|
2628
3460
|
const request = await micro.json(req);
|
|
2629
3461
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2637,7 +3469,7 @@ router$4.post("/api/v1/markdown_mock/sync_report", async (req, res) => {
|
|
|
2637
3469
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2638
3470
|
}
|
|
2639
3471
|
});
|
|
2640
|
-
router$
|
|
3472
|
+
router$6.post("/api/v1/markdown_mock/heat_data", async (req, res) => {
|
|
2641
3473
|
try {
|
|
2642
3474
|
const request = await micro.json(req);
|
|
2643
3475
|
const { requestId, serviceName, strategyName, exchangeName, frameName } = request;
|
|
@@ -2651,7 +3483,7 @@ router$4.post("/api/v1/markdown_mock/heat_data", async (req, res) => {
|
|
|
2651
3483
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2652
3484
|
}
|
|
2653
3485
|
});
|
|
2654
|
-
router$
|
|
3486
|
+
router$6.post("/api/v1/markdown_mock/heat_report", async (req, res) => {
|
|
2655
3487
|
try {
|
|
2656
3488
|
const request = await micro.json(req);
|
|
2657
3489
|
const { requestId, serviceName, strategyName, exchangeName, frameName } = request;
|
|
@@ -2665,7 +3497,7 @@ router$4.post("/api/v1/markdown_mock/heat_report", async (req, res) => {
|
|
|
2665
3497
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2666
3498
|
}
|
|
2667
3499
|
});
|
|
2668
|
-
router$
|
|
3500
|
+
router$6.post("/api/v1/markdown_mock/walker_data", async (req, res) => {
|
|
2669
3501
|
try {
|
|
2670
3502
|
const request = await micro.json(req);
|
|
2671
3503
|
const { requestId, serviceName, symbol, walkerName } = request;
|
|
@@ -2679,7 +3511,7 @@ router$4.post("/api/v1/markdown_mock/walker_data", async (req, res) => {
|
|
|
2679
3511
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2680
3512
|
}
|
|
2681
3513
|
});
|
|
2682
|
-
router$
|
|
3514
|
+
router$6.post("/api/v1/markdown_mock/walker_report", async (req, res) => {
|
|
2683
3515
|
try {
|
|
2684
3516
|
const request = await micro.json(req);
|
|
2685
3517
|
const { requestId, serviceName, symbol, walkerName } = request;
|
|
@@ -2694,10 +3526,10 @@ router$4.post("/api/v1/markdown_mock/walker_report", async (req, res) => {
|
|
|
2694
3526
|
}
|
|
2695
3527
|
});
|
|
2696
3528
|
|
|
2697
|
-
const router$
|
|
3529
|
+
const router$5 = Router({
|
|
2698
3530
|
params: true,
|
|
2699
3531
|
});
|
|
2700
|
-
router$
|
|
3532
|
+
router$5.post("/api/v1/markdown_view/strategy_data", async (req, res) => {
|
|
2701
3533
|
try {
|
|
2702
3534
|
const request = await micro.json(req);
|
|
2703
3535
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2711,7 +3543,7 @@ router$3.post("/api/v1/markdown_view/strategy_data", async (req, res) => {
|
|
|
2711
3543
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2712
3544
|
}
|
|
2713
3545
|
});
|
|
2714
|
-
router$
|
|
3546
|
+
router$5.post("/api/v1/markdown_view/strategy_report", async (req, res) => {
|
|
2715
3547
|
try {
|
|
2716
3548
|
const request = await micro.json(req);
|
|
2717
3549
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2725,7 +3557,7 @@ router$3.post("/api/v1/markdown_view/strategy_report", async (req, res) => {
|
|
|
2725
3557
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2726
3558
|
}
|
|
2727
3559
|
});
|
|
2728
|
-
router$
|
|
3560
|
+
router$5.post("/api/v1/markdown_view/backtest_data", async (req, res) => {
|
|
2729
3561
|
try {
|
|
2730
3562
|
const request = await micro.json(req);
|
|
2731
3563
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2739,7 +3571,7 @@ router$3.post("/api/v1/markdown_view/backtest_data", async (req, res) => {
|
|
|
2739
3571
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2740
3572
|
}
|
|
2741
3573
|
});
|
|
2742
|
-
router$
|
|
3574
|
+
router$5.post("/api/v1/markdown_view/backtest_report", async (req, res) => {
|
|
2743
3575
|
try {
|
|
2744
3576
|
const request = await micro.json(req);
|
|
2745
3577
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
|
|
@@ -2753,7 +3585,7 @@ router$3.post("/api/v1/markdown_view/backtest_report", async (req, res) => {
|
|
|
2753
3585
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2754
3586
|
}
|
|
2755
3587
|
});
|
|
2756
|
-
router$
|
|
3588
|
+
router$5.post("/api/v1/markdown_view/live_data", async (req, res) => {
|
|
2757
3589
|
try {
|
|
2758
3590
|
const request = await micro.json(req);
|
|
2759
3591
|
const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
|
|
@@ -2767,7 +3599,7 @@ router$3.post("/api/v1/markdown_view/live_data", async (req, res) => {
|
|
|
2767
3599
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2768
3600
|
}
|
|
2769
3601
|
});
|
|
2770
|
-
router$
|
|
3602
|
+
router$5.post("/api/v1/markdown_view/live_report", async (req, res) => {
|
|
2771
3603
|
try {
|
|
2772
3604
|
const request = await micro.json(req);
|
|
2773
3605
|
const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
|
|
@@ -2781,7 +3613,7 @@ router$3.post("/api/v1/markdown_view/live_report", async (req, res) => {
|
|
|
2781
3613
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2782
3614
|
}
|
|
2783
3615
|
});
|
|
2784
|
-
router$
|
|
3616
|
+
router$5.post("/api/v1/markdown_view/breakeven_data", async (req, res) => {
|
|
2785
3617
|
try {
|
|
2786
3618
|
const request = await micro.json(req);
|
|
2787
3619
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2795,7 +3627,7 @@ router$3.post("/api/v1/markdown_view/breakeven_data", async (req, res) => {
|
|
|
2795
3627
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2796
3628
|
}
|
|
2797
3629
|
});
|
|
2798
|
-
router$
|
|
3630
|
+
router$5.post("/api/v1/markdown_view/breakeven_report", async (req, res) => {
|
|
2799
3631
|
try {
|
|
2800
3632
|
const request = await micro.json(req);
|
|
2801
3633
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2809,7 +3641,7 @@ router$3.post("/api/v1/markdown_view/breakeven_report", async (req, res) => {
|
|
|
2809
3641
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2810
3642
|
}
|
|
2811
3643
|
});
|
|
2812
|
-
router$
|
|
3644
|
+
router$5.post("/api/v1/markdown_view/risk_data", async (req, res) => {
|
|
2813
3645
|
try {
|
|
2814
3646
|
const request = await micro.json(req);
|
|
2815
3647
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2823,7 +3655,7 @@ router$3.post("/api/v1/markdown_view/risk_data", async (req, res) => {
|
|
|
2823
3655
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2824
3656
|
}
|
|
2825
3657
|
});
|
|
2826
|
-
router$
|
|
3658
|
+
router$5.post("/api/v1/markdown_view/risk_report", async (req, res) => {
|
|
2827
3659
|
try {
|
|
2828
3660
|
const request = await micro.json(req);
|
|
2829
3661
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2837,7 +3669,7 @@ router$3.post("/api/v1/markdown_view/risk_report", async (req, res) => {
|
|
|
2837
3669
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2838
3670
|
}
|
|
2839
3671
|
});
|
|
2840
|
-
router$
|
|
3672
|
+
router$5.post("/api/v1/markdown_view/partial_data", async (req, res) => {
|
|
2841
3673
|
try {
|
|
2842
3674
|
const request = await micro.json(req);
|
|
2843
3675
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2851,7 +3683,7 @@ router$3.post("/api/v1/markdown_view/partial_data", async (req, res) => {
|
|
|
2851
3683
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2852
3684
|
}
|
|
2853
3685
|
});
|
|
2854
|
-
router$
|
|
3686
|
+
router$5.post("/api/v1/markdown_view/partial_report", async (req, res) => {
|
|
2855
3687
|
try {
|
|
2856
3688
|
const request = await micro.json(req);
|
|
2857
3689
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2865,7 +3697,7 @@ router$3.post("/api/v1/markdown_view/partial_report", async (req, res) => {
|
|
|
2865
3697
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2866
3698
|
}
|
|
2867
3699
|
});
|
|
2868
|
-
router$
|
|
3700
|
+
router$5.post("/api/v1/markdown_view/highest_profit_data", async (req, res) => {
|
|
2869
3701
|
try {
|
|
2870
3702
|
const request = await micro.json(req);
|
|
2871
3703
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2879,7 +3711,7 @@ router$3.post("/api/v1/markdown_view/highest_profit_data", async (req, res) => {
|
|
|
2879
3711
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2880
3712
|
}
|
|
2881
3713
|
});
|
|
2882
|
-
router$
|
|
3714
|
+
router$5.post("/api/v1/markdown_view/highest_profit_report", async (req, res) => {
|
|
2883
3715
|
try {
|
|
2884
3716
|
const request = await micro.json(req);
|
|
2885
3717
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2893,7 +3725,7 @@ router$3.post("/api/v1/markdown_view/highest_profit_report", async (req, res) =>
|
|
|
2893
3725
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2894
3726
|
}
|
|
2895
3727
|
});
|
|
2896
|
-
router$
|
|
3728
|
+
router$5.post("/api/v1/markdown_view/schedule_data", async (req, res) => {
|
|
2897
3729
|
try {
|
|
2898
3730
|
const request = await micro.json(req);
|
|
2899
3731
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2907,7 +3739,7 @@ router$3.post("/api/v1/markdown_view/schedule_data", async (req, res) => {
|
|
|
2907
3739
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2908
3740
|
}
|
|
2909
3741
|
});
|
|
2910
|
-
router$
|
|
3742
|
+
router$5.post("/api/v1/markdown_view/schedule_report", async (req, res) => {
|
|
2911
3743
|
try {
|
|
2912
3744
|
const request = await micro.json(req);
|
|
2913
3745
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2921,7 +3753,7 @@ router$3.post("/api/v1/markdown_view/schedule_report", async (req, res) => {
|
|
|
2921
3753
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2922
3754
|
}
|
|
2923
3755
|
});
|
|
2924
|
-
router$
|
|
3756
|
+
router$5.post("/api/v1/markdown_view/performance_data", async (req, res) => {
|
|
2925
3757
|
try {
|
|
2926
3758
|
const request = await micro.json(req);
|
|
2927
3759
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2935,7 +3767,7 @@ router$3.post("/api/v1/markdown_view/performance_data", async (req, res) => {
|
|
|
2935
3767
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2936
3768
|
}
|
|
2937
3769
|
});
|
|
2938
|
-
router$
|
|
3770
|
+
router$5.post("/api/v1/markdown_view/performance_report", async (req, res) => {
|
|
2939
3771
|
try {
|
|
2940
3772
|
const request = await micro.json(req);
|
|
2941
3773
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2949,7 +3781,7 @@ router$3.post("/api/v1/markdown_view/performance_report", async (req, res) => {
|
|
|
2949
3781
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2950
3782
|
}
|
|
2951
3783
|
});
|
|
2952
|
-
router$
|
|
3784
|
+
router$5.post("/api/v1/markdown_view/sync_data", async (req, res) => {
|
|
2953
3785
|
try {
|
|
2954
3786
|
const request = await micro.json(req);
|
|
2955
3787
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2963,7 +3795,7 @@ router$3.post("/api/v1/markdown_view/sync_data", async (req, res) => {
|
|
|
2963
3795
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2964
3796
|
}
|
|
2965
3797
|
});
|
|
2966
|
-
router$
|
|
3798
|
+
router$5.post("/api/v1/markdown_view/sync_report", async (req, res) => {
|
|
2967
3799
|
try {
|
|
2968
3800
|
const request = await micro.json(req);
|
|
2969
3801
|
const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2977,7 +3809,7 @@ router$3.post("/api/v1/markdown_view/sync_report", async (req, res) => {
|
|
|
2977
3809
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2978
3810
|
}
|
|
2979
3811
|
});
|
|
2980
|
-
router$
|
|
3812
|
+
router$5.post("/api/v1/markdown_view/heat_data", async (req, res) => {
|
|
2981
3813
|
try {
|
|
2982
3814
|
const request = await micro.json(req);
|
|
2983
3815
|
const { requestId, serviceName, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -2991,7 +3823,7 @@ router$3.post("/api/v1/markdown_view/heat_data", async (req, res) => {
|
|
|
2991
3823
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
2992
3824
|
}
|
|
2993
3825
|
});
|
|
2994
|
-
router$
|
|
3826
|
+
router$5.post("/api/v1/markdown_view/heat_report", async (req, res) => {
|
|
2995
3827
|
try {
|
|
2996
3828
|
const request = await micro.json(req);
|
|
2997
3829
|
const { requestId, serviceName, strategyName, exchangeName, frameName, backtest } = request;
|
|
@@ -3005,7 +3837,7 @@ router$3.post("/api/v1/markdown_view/heat_report", async (req, res) => {
|
|
|
3005
3837
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3006
3838
|
}
|
|
3007
3839
|
});
|
|
3008
|
-
router$
|
|
3840
|
+
router$5.post("/api/v1/markdown_view/walker_data", async (req, res) => {
|
|
3009
3841
|
try {
|
|
3010
3842
|
const request = await micro.json(req);
|
|
3011
3843
|
const { requestId, serviceName, symbol, walkerName } = request;
|
|
@@ -3019,7 +3851,7 @@ router$3.post("/api/v1/markdown_view/walker_data", async (req, res) => {
|
|
|
3019
3851
|
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3020
3852
|
}
|
|
3021
3853
|
});
|
|
3022
|
-
router$
|
|
3854
|
+
router$5.post("/api/v1/markdown_view/walker_report", async (req, res) => {
|
|
3023
3855
|
try {
|
|
3024
3856
|
const request = await micro.json(req);
|
|
3025
3857
|
const { requestId, serviceName, symbol, walkerName } = request;
|
|
@@ -3034,6 +3866,70 @@ router$3.post("/api/v1/markdown_view/walker_report", async (req, res) => {
|
|
|
3034
3866
|
}
|
|
3035
3867
|
});
|
|
3036
3868
|
|
|
3869
|
+
const router$4 = Router({
|
|
3870
|
+
params: true,
|
|
3871
|
+
});
|
|
3872
|
+
router$4.post("/api/v1/explorer_mock/tree", async (req, res) => {
|
|
3873
|
+
try {
|
|
3874
|
+
const request = await micro.json(req);
|
|
3875
|
+
const { requestId, serviceName } = request;
|
|
3876
|
+
const data = await ioc.explorerMockService.getTree();
|
|
3877
|
+
const result = { data, status: "ok", error: "", requestId, serviceName };
|
|
3878
|
+
ioc.loggerService.log("/api/v1/explorer_mock/tree ok", { request, result: omit(result, "data") });
|
|
3879
|
+
return await micro.send(res, 200, result);
|
|
3880
|
+
}
|
|
3881
|
+
catch (error) {
|
|
3882
|
+
ioc.loggerService.log("/api/v1/explorer_mock/tree error", { error: functoolsKit.errorData(error) });
|
|
3883
|
+
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3884
|
+
}
|
|
3885
|
+
});
|
|
3886
|
+
router$4.post("/api/v1/explorer_mock/node", async (req, res) => {
|
|
3887
|
+
try {
|
|
3888
|
+
const request = await micro.json(req);
|
|
3889
|
+
const { requestId, serviceName, path } = request;
|
|
3890
|
+
const data = await ioc.explorerMockService.getNode(path);
|
|
3891
|
+
const result = { data, status: "ok", error: "", requestId, serviceName };
|
|
3892
|
+
ioc.loggerService.log("/api/v1/explorer_mock/node ok", { request, result: omit(result, "data") });
|
|
3893
|
+
return await micro.send(res, 200, result);
|
|
3894
|
+
}
|
|
3895
|
+
catch (error) {
|
|
3896
|
+
ioc.loggerService.log("/api/v1/explorer_mock/node error", { error: functoolsKit.errorData(error) });
|
|
3897
|
+
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3898
|
+
}
|
|
3899
|
+
});
|
|
3900
|
+
|
|
3901
|
+
const router$3 = Router({
|
|
3902
|
+
params: true,
|
|
3903
|
+
});
|
|
3904
|
+
router$3.post("/api/v1/explorer_view/tree", async (req, res) => {
|
|
3905
|
+
try {
|
|
3906
|
+
const request = await micro.json(req);
|
|
3907
|
+
const { requestId, serviceName } = request;
|
|
3908
|
+
const data = await ioc.explorerViewService.getTree();
|
|
3909
|
+
const result = { data, status: "ok", error: "", requestId, serviceName };
|
|
3910
|
+
ioc.loggerService.log("/api/v1/explorer_view/tree ok", { request, result: omit(result, "data") });
|
|
3911
|
+
return await micro.send(res, 200, result);
|
|
3912
|
+
}
|
|
3913
|
+
catch (error) {
|
|
3914
|
+
ioc.loggerService.log("/api/v1/explorer_view/tree error", { error: functoolsKit.errorData(error) });
|
|
3915
|
+
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3916
|
+
}
|
|
3917
|
+
});
|
|
3918
|
+
router$3.post("/api/v1/explorer_view/node", async (req, res) => {
|
|
3919
|
+
try {
|
|
3920
|
+
const request = await micro.json(req);
|
|
3921
|
+
const { requestId, serviceName, path } = request;
|
|
3922
|
+
const data = await ioc.explorerViewService.getNode(path);
|
|
3923
|
+
const result = { data, status: "ok", error: "", requestId, serviceName };
|
|
3924
|
+
ioc.loggerService.log("/api/v1/explorer_view/node ok", { request, result: omit(result, "data") });
|
|
3925
|
+
return await micro.send(res, 200, result);
|
|
3926
|
+
}
|
|
3927
|
+
catch (error) {
|
|
3928
|
+
ioc.loggerService.log("/api/v1/explorer_view/node error", { error: functoolsKit.errorData(error) });
|
|
3929
|
+
return await micro.send(res, 200, { status: "error", error: functoolsKit.getErrorMessage(error) });
|
|
3930
|
+
}
|
|
3931
|
+
});
|
|
3932
|
+
|
|
3037
3933
|
const router$2 = Router({
|
|
3038
3934
|
params: true,
|
|
3039
3935
|
});
|
|
@@ -3105,25 +4001,31 @@ const router = Router({
|
|
|
3105
4001
|
params: true,
|
|
3106
4002
|
});
|
|
3107
4003
|
router.all("/api/v1/health/*", (req, res) => {
|
|
3108
|
-
return router$
|
|
4004
|
+
return router$b(req, res, finalhandler(req, res));
|
|
3109
4005
|
});
|
|
3110
4006
|
router.all("/api/v1/mock/*", (req, res) => {
|
|
3111
|
-
return router$
|
|
4007
|
+
return router$a(req, res, finalhandler(req, res));
|
|
3112
4008
|
});
|
|
3113
4009
|
router.all("/api/v1/view/*", (req, res) => {
|
|
3114
|
-
return router$
|
|
4010
|
+
return router$9(req, res, finalhandler(req, res));
|
|
3115
4011
|
});
|
|
3116
4012
|
router.all("/api/v1/markdown_mock/*", (req, res) => {
|
|
3117
|
-
return router$
|
|
4013
|
+
return router$6(req, res, finalhandler(req, res));
|
|
3118
4014
|
});
|
|
3119
4015
|
router.all("/api/v1/markdown_view/*", (req, res) => {
|
|
4016
|
+
return router$5(req, res, finalhandler(req, res));
|
|
4017
|
+
});
|
|
4018
|
+
router.all("/api/v1/explorer_mock/*", (req, res) => {
|
|
4019
|
+
return router$4(req, res, finalhandler(req, res));
|
|
4020
|
+
});
|
|
4021
|
+
router.all("/api/v1/explorer_view/*", (req, res) => {
|
|
3120
4022
|
return router$3(req, res, finalhandler(req, res));
|
|
3121
4023
|
});
|
|
3122
4024
|
router.all("/icon/*", (req, res) => {
|
|
3123
|
-
return router$
|
|
4025
|
+
return router$8(req, res, finalhandler(req, res));
|
|
3124
4026
|
});
|
|
3125
4027
|
router.all("/api/v1/dict/*", (req, res) => {
|
|
3126
|
-
return router$
|
|
4028
|
+
return router$7(req, res, finalhandler(req, res));
|
|
3127
4029
|
});
|
|
3128
4030
|
router.all("/api/v1/global/*", (req, res) => {
|
|
3129
4031
|
return router$2(req, res, finalhandler(req, res));
|