@backtest-kit/ui 5.5.3 → 5.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/build/index.cjs +1135 -46
  2. package/build/index.mjs +1136 -47
  3. package/build/modules/frontend/build/assets/{Background-BnanDjno.js → Background-B8kVLoJC.js} +1 -1
  4. package/build/modules/frontend/build/assets/{IconPhoto-Cf_hSu3z.js → IconPhoto-yqTcSjsj.js} +1 -1
  5. package/build/modules/frontend/build/assets/{KeyboardArrowLeft-C5vKOcAm.js → KeyboardArrowLeft-NcptneCW.js} +1 -1
  6. package/build/modules/frontend/build/assets/{Refresh-AyInXuzX.js → Refresh-B-6VzYmL.js} +1 -1
  7. package/build/modules/frontend/build/assets/hasRouteMatch-Cap76DHx.js +1 -0
  8. package/build/modules/frontend/build/assets/html2canvas-AeHV6o40.js +1 -0
  9. package/build/modules/frontend/build/assets/{index-DkX_NvhV.js → index-3FabZvCh.js} +1 -1
  10. package/build/modules/frontend/build/assets/{index-yCZPy3N-.js → index-BSt5rIe0.js} +9 -9
  11. package/build/modules/frontend/build/assets/index-BfdHWVzz.js +1331 -0
  12. package/build/modules/frontend/build/assets/{index-CXkLpGEW.js → index-BjR0gQPx.js} +1 -1
  13. package/build/modules/frontend/build/assets/index-Bov2Mvu5.js +1 -0
  14. package/build/modules/frontend/build/assets/{index-CE-T-vGF.js → index-DTb7GKw2.js} +1 -1
  15. package/build/modules/frontend/build/assets/{index-DoIVKvQl.js → index-eGg7QpVp.js} +1 -1
  16. package/build/modules/frontend/build/assets/index-mEY60b54.js +1 -0
  17. package/build/modules/frontend/build/assets/index.es-BkDLGtAB.js +16 -0
  18. package/build/modules/frontend/build/assets/markdownit-_uLqTUbF.js +1 -0
  19. package/build/modules/frontend/build/assets/purify.es-DpMHVkxQ.js +2 -0
  20. package/build/modules/frontend/build/index.html +1 -1
  21. package/package.json +3 -3
  22. package/types.d.ts +84 -0
  23. package/build/modules/frontend/build/assets/index-Cq_yjKn2.js +0 -1
  24. package/build/modules/frontend/build/assets/index-DLUKIYme.js +0 -1
package/build/index.mjs CHANGED
@@ -6,7 +6,7 @@ import finalhandler from 'finalhandler';
6
6
  import serveHandler from 'serve-handler';
7
7
  import os from 'os';
8
8
  import { createActivator } from 'di-kit';
9
- import { alignToInterval, Exchange, Notification, Storage, Log, Live, lib } from 'backtest-kit';
9
+ import { alignToInterval, Exchange, Notification, Storage, Log, Live, Strategy, Backtest, Breakeven, Risk, Partial, HighestProfit, Schedule, Performance, Sync, Heat, Walker, lib } from 'backtest-kit';
10
10
  import fs, { readdir, readFile } from 'fs/promises';
11
11
  import path, { join, dirname } from 'path';
12
12
  import { createRequire } from 'module';
@@ -17,10 +17,10 @@ const CC_WWWROOT_HOST = process.env.CC_WWWROOT_HOST || "0.0.0.0";
17
17
  const CC_WWWROOT_PORT = parseInt(process.env.CC_WWWROOT_PORT) || 60050;
18
18
  const CC_ENABLE_MOCK = !!parseInt(process.env.CC_ENABLE_MOCK) || false;
19
19
 
20
- const router$7 = Router({
20
+ const router$9 = Router({
21
21
  params: true,
22
22
  });
23
- router$7.get("/api/v1/health/health_check", async (req, res) => {
23
+ router$9.get("/api/v1/health/health_check", async (req, res) => {
24
24
  const [cpuLoad] = os.loadavg();
25
25
  return await micro.send(res, 200, {
26
26
  uptime: process.uptime(),
@@ -59,6 +59,8 @@ const connectionServices$1 = {
59
59
  };
60
60
  const metaServices$1 = {
61
61
  symbolMetaService: Symbol("symbolMetaService"),
62
+ backtestMetaService: Symbol("backtestMetaService"),
63
+ liveMetaService: Symbol("liveMetaService"),
62
64
  };
63
65
  const mockServices$1 = {
64
66
  notificationMockService: Symbol("notificationMockService"),
@@ -66,6 +68,7 @@ const mockServices$1 = {
66
68
  exchangeMockService: Symbol("exchangeMockService"),
67
69
  logMockService: Symbol("logMockService"),
68
70
  statusMockService: Symbol("statusMockService"),
71
+ markdownMockService: Symbol("markdownMockService"),
69
72
  };
70
73
  const viewServices$1 = {
71
74
  notificationViewService: Symbol("notificationViewService"),
@@ -73,6 +76,7 @@ const viewServices$1 = {
73
76
  exchangeViewService: Symbol("exchangeViewService"),
74
77
  logViewService: Symbol("logViewService"),
75
78
  statusViewService: Symbol("statusViewService"),
79
+ markdownViewService: Symbol("markdownViewService"),
76
80
  };
77
81
  const TYPES = {
78
82
  ...baseServices$1,
@@ -432,6 +436,147 @@ class StatusMockService {
432
436
  }
433
437
  }
434
438
 
439
+ const MOCK_DIR = "./mock/markdown";
440
+ const makeReader = (fileName) => singleshot(() => fs.readFile(path.join(MOCK_DIR, fileName), "utf-8"));
441
+ const makeDataReader = (fileName) => singleshot(async () => JSON.parse(await fs.readFile(path.join(MOCK_DIR, "data", fileName), "utf-8")));
442
+ const readBacktest = makeReader("backtest.md");
443
+ const readStrategy = makeReader("strategy.md");
444
+ const readLive = makeReader("live.md");
445
+ const readBreakeven = makeReader("breakeven.md");
446
+ const readRisk = makeReader("risk.md");
447
+ const readPartial = makeReader("partial.md");
448
+ const readHighestProfit = makeReader("highest_profit.md");
449
+ const readSchedule = makeReader("schedule.md");
450
+ const readPerformance = makeReader("performance.md");
451
+ const readSync = makeReader("sync.md");
452
+ const readHeat = makeReader("heat.md");
453
+ const readWalker = makeReader("walker.md");
454
+ const readBacktestData = makeDataReader("backtest.json");
455
+ const readStrategyData = makeDataReader("strategy.json");
456
+ const readLiveData = makeDataReader("live.json");
457
+ const readBreakevenData = makeDataReader("breakeven.json");
458
+ const readRiskData = makeDataReader("risk.json");
459
+ const readPartialData = makeDataReader("partial.json");
460
+ const readHighestProfitData = makeDataReader("highest_profit.json");
461
+ const readScheduleData = makeDataReader("schedule.json");
462
+ const readPerformanceData = makeDataReader("performance.json");
463
+ const readSyncData = makeDataReader("sync.json");
464
+ const readHeatData = makeDataReader("heat.json");
465
+ const readWalkerData = makeDataReader("walker.json");
466
+ class MarkdownMockService {
467
+ constructor() {
468
+ this.loggerService = inject(TYPES.loggerService);
469
+ // Strategy
470
+ this.getStrategyData = async (symbol, strategyName, exchangeName, frameName) => {
471
+ this.loggerService.log("markdownMockService getStrategyData", { symbol, strategyName, exchangeName, frameName });
472
+ return readStrategyData();
473
+ };
474
+ this.getStrategyReport = async (symbol, strategyName, exchangeName, frameName) => {
475
+ this.loggerService.log("markdownMockService getStrategyReport", { symbol, strategyName, exchangeName, frameName });
476
+ return readStrategy();
477
+ };
478
+ // Backtest
479
+ this.getBacktestData = async (symbol, strategyName, exchangeName, frameName) => {
480
+ this.loggerService.log("markdownMockService getBacktestData", { symbol, strategyName, exchangeName, frameName });
481
+ return readBacktestData();
482
+ };
483
+ this.getBacktestReport = async (symbol, strategyName, exchangeName, frameName) => {
484
+ this.loggerService.log("markdownMockService getBacktestReport", { symbol, strategyName, exchangeName, frameName });
485
+ return readBacktest();
486
+ };
487
+ // Live
488
+ this.getLiveData = async (symbol, strategyName, exchangeName) => {
489
+ this.loggerService.log("markdownMockService getLiveData", { symbol, strategyName, exchangeName });
490
+ return readLiveData();
491
+ };
492
+ this.getLiveReport = async (symbol, strategyName, exchangeName) => {
493
+ this.loggerService.log("markdownMockService getLiveReport", { symbol, strategyName, exchangeName });
494
+ return readLive();
495
+ };
496
+ // Breakeven
497
+ this.getBreakevenData = async (symbol, strategyName, exchangeName, frameName) => {
498
+ this.loggerService.log("markdownMockService getBreakevenData", { symbol, strategyName, exchangeName, frameName });
499
+ return readBreakevenData();
500
+ };
501
+ this.getBreakevenReport = async (symbol, strategyName, exchangeName, frameName) => {
502
+ this.loggerService.log("markdownMockService getBreakevenReport", { symbol, strategyName, exchangeName, frameName });
503
+ return readBreakeven();
504
+ };
505
+ // Risk
506
+ this.getRiskData = async (symbol, strategyName, exchangeName, frameName) => {
507
+ this.loggerService.log("markdownMockService getRiskData", { symbol, strategyName, exchangeName, frameName });
508
+ return readRiskData();
509
+ };
510
+ this.getRiskReport = async (symbol, strategyName, exchangeName, frameName) => {
511
+ this.loggerService.log("markdownMockService getRiskReport", { symbol, strategyName, exchangeName, frameName });
512
+ return readRisk();
513
+ };
514
+ // Partial
515
+ this.getPartialData = async (symbol, strategyName, exchangeName, frameName) => {
516
+ this.loggerService.log("markdownMockService getPartialData", { symbol, strategyName, exchangeName, frameName });
517
+ return readPartialData();
518
+ };
519
+ this.getPartialReport = async (symbol, strategyName, exchangeName, frameName) => {
520
+ this.loggerService.log("markdownMockService getPartialReport", { symbol, strategyName, exchangeName, frameName });
521
+ return readPartial();
522
+ };
523
+ // HighestProfit
524
+ this.getHighestProfitData = async (symbol, strategyName, exchangeName, frameName) => {
525
+ this.loggerService.log("markdownMockService getHighestProfitData", { symbol, strategyName, exchangeName, frameName });
526
+ return readHighestProfitData();
527
+ };
528
+ this.getHighestProfitReport = async (symbol, strategyName, exchangeName, frameName) => {
529
+ this.loggerService.log("markdownMockService getHighestProfitReport", { symbol, strategyName, exchangeName, frameName });
530
+ return readHighestProfit();
531
+ };
532
+ // Schedule
533
+ this.getScheduleData = async (symbol, strategyName, exchangeName, frameName) => {
534
+ this.loggerService.log("markdownMockService getScheduleData", { symbol, strategyName, exchangeName, frameName });
535
+ return readScheduleData();
536
+ };
537
+ this.getScheduleReport = async (symbol, strategyName, exchangeName, frameName) => {
538
+ this.loggerService.log("markdownMockService getScheduleReport", { symbol, strategyName, exchangeName, frameName });
539
+ return readSchedule();
540
+ };
541
+ // Performance
542
+ this.getPerformanceData = async (symbol, strategyName, exchangeName, frameName) => {
543
+ this.loggerService.log("markdownMockService getPerformanceData", { symbol, strategyName, exchangeName, frameName });
544
+ return readPerformanceData();
545
+ };
546
+ this.getPerformanceReport = async (symbol, strategyName, exchangeName, frameName) => {
547
+ this.loggerService.log("markdownMockService getPerformanceReport", { symbol, strategyName, exchangeName, frameName });
548
+ return readPerformance();
549
+ };
550
+ // Sync
551
+ this.getSyncData = async (symbol, strategyName, exchangeName, frameName) => {
552
+ this.loggerService.log("markdownMockService getSyncData", { symbol, strategyName, exchangeName, frameName });
553
+ return readSyncData();
554
+ };
555
+ this.getSyncReport = async (symbol, strategyName, exchangeName, frameName) => {
556
+ this.loggerService.log("markdownMockService getSyncReport", { symbol, strategyName, exchangeName, frameName });
557
+ return readSync();
558
+ };
559
+ // Heat
560
+ this.getHeatData = async (strategyName, exchangeName, frameName) => {
561
+ this.loggerService.log("markdownMockService getHeatData", { strategyName, exchangeName, frameName });
562
+ return readHeatData();
563
+ };
564
+ this.getHeatReport = async (strategyName, exchangeName, frameName) => {
565
+ this.loggerService.log("markdownMockService getHeatReport", { strategyName, exchangeName, frameName });
566
+ return readHeat();
567
+ };
568
+ // Walker
569
+ this.getWalkerData = async (symbol, walkerName) => {
570
+ this.loggerService.log("markdownMockService getWalkerData", { symbol, walkerName });
571
+ return readWalkerData();
572
+ };
573
+ this.getWalkerReport = async (symbol, walkerName) => {
574
+ this.loggerService.log("markdownMockService getWalkerReport", { symbol, walkerName });
575
+ return readWalker();
576
+ };
577
+ }
578
+ }
579
+
435
580
  const DEFAULT_LIMIT$1 = 25;
436
581
  const DEFAULT_OFFSET$1 = 0;
437
582
  const CREATE_FILTER_LIST_FN$1 = (filterData) => Object.keys(filterData).map((key) => (row) => new RegExp(filterData[key], "i").test(row[key]));
@@ -778,6 +923,193 @@ class StatusViewService {
778
923
  }
779
924
  }
780
925
 
926
+ class MarkdownViewService {
927
+ constructor() {
928
+ this.loggerService = inject(TYPES.loggerService);
929
+ this.markdownMockService = inject(TYPES.markdownMockService);
930
+ // Strategy
931
+ this.getStrategyData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
932
+ this.loggerService.log("markdownViewService getStrategyData", { symbol, strategyName, exchangeName, frameName, backtest });
933
+ if (CC_ENABLE_MOCK) {
934
+ return await this.markdownMockService.getStrategyData(symbol, strategyName, exchangeName, frameName);
935
+ }
936
+ return await Strategy.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
937
+ };
938
+ this.getStrategyReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
939
+ this.loggerService.log("markdownViewService getStrategyReport", { symbol, strategyName, exchangeName, frameName, backtest });
940
+ if (CC_ENABLE_MOCK) {
941
+ return await this.markdownMockService.getStrategyReport(symbol, strategyName, exchangeName, frameName);
942
+ }
943
+ return await Strategy.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
944
+ };
945
+ // Backtest
946
+ this.getBacktestData = async (symbol, strategyName, exchangeName, frameName) => {
947
+ this.loggerService.log("markdownViewService getBacktestData", { symbol, strategyName, exchangeName, frameName });
948
+ if (CC_ENABLE_MOCK) {
949
+ return await this.markdownMockService.getBacktestData(symbol, strategyName, exchangeName, frameName);
950
+ }
951
+ return await Backtest.getData(symbol, { strategyName, exchangeName, frameName });
952
+ };
953
+ this.getBacktestReport = async (symbol, strategyName, exchangeName, frameName) => {
954
+ this.loggerService.log("markdownViewService getBacktestReport", { symbol, strategyName, exchangeName, frameName });
955
+ if (CC_ENABLE_MOCK) {
956
+ return await this.markdownMockService.getBacktestReport(symbol, strategyName, exchangeName, frameName);
957
+ }
958
+ return await Backtest.getReport(symbol, { strategyName, exchangeName, frameName });
959
+ };
960
+ // Live
961
+ this.getLiveData = async (symbol, strategyName, exchangeName) => {
962
+ this.loggerService.log("markdownViewService getLiveData", { symbol, strategyName, exchangeName });
963
+ if (CC_ENABLE_MOCK) {
964
+ return await this.markdownMockService.getLiveData(symbol, strategyName, exchangeName);
965
+ }
966
+ return await Live.getData(symbol, { strategyName, exchangeName });
967
+ };
968
+ this.getLiveReport = async (symbol, strategyName, exchangeName) => {
969
+ this.loggerService.log("markdownViewService getLiveReport", { symbol, strategyName, exchangeName });
970
+ if (CC_ENABLE_MOCK) {
971
+ return await this.markdownMockService.getLiveReport(symbol, strategyName, exchangeName);
972
+ }
973
+ return await Live.getReport(symbol, { strategyName, exchangeName });
974
+ };
975
+ // Breakeven
976
+ this.getBreakevenData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
977
+ this.loggerService.log("markdownViewService getBreakevenData", { symbol, strategyName, exchangeName, frameName, backtest });
978
+ if (CC_ENABLE_MOCK) {
979
+ return await this.markdownMockService.getBreakevenData(symbol, strategyName, exchangeName, frameName);
980
+ }
981
+ return await Breakeven.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
982
+ };
983
+ this.getBreakevenReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
984
+ this.loggerService.log("markdownViewService getBreakevenReport", { symbol, strategyName, exchangeName, frameName, backtest });
985
+ if (CC_ENABLE_MOCK) {
986
+ return await this.markdownMockService.getBreakevenReport(symbol, strategyName, exchangeName, frameName);
987
+ }
988
+ return await Breakeven.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
989
+ };
990
+ // Risk
991
+ this.getRiskData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
992
+ this.loggerService.log("markdownViewService getRiskData", { symbol, strategyName, exchangeName, frameName, backtest });
993
+ if (CC_ENABLE_MOCK) {
994
+ return await this.markdownMockService.getRiskData(symbol, strategyName, exchangeName, frameName);
995
+ }
996
+ return await Risk.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
997
+ };
998
+ this.getRiskReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
999
+ this.loggerService.log("markdownViewService getRiskReport", { symbol, strategyName, exchangeName, frameName, backtest });
1000
+ if (CC_ENABLE_MOCK) {
1001
+ return await this.markdownMockService.getRiskReport(symbol, strategyName, exchangeName, frameName);
1002
+ }
1003
+ return await Risk.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1004
+ };
1005
+ // Partial
1006
+ this.getPartialData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1007
+ this.loggerService.log("markdownViewService getPartialData", { symbol, strategyName, exchangeName, frameName, backtest });
1008
+ if (CC_ENABLE_MOCK) {
1009
+ return await this.markdownMockService.getPartialData(symbol, strategyName, exchangeName, frameName);
1010
+ }
1011
+ return await Partial.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
1012
+ };
1013
+ this.getPartialReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1014
+ this.loggerService.log("markdownViewService getPartialReport", { symbol, strategyName, exchangeName, frameName, backtest });
1015
+ if (CC_ENABLE_MOCK) {
1016
+ return await this.markdownMockService.getPartialReport(symbol, strategyName, exchangeName, frameName);
1017
+ }
1018
+ return await Partial.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1019
+ };
1020
+ // HighestProfit
1021
+ this.getHighestProfitData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1022
+ this.loggerService.log("markdownViewService getHighestProfitData", { symbol, strategyName, exchangeName, frameName, backtest });
1023
+ if (CC_ENABLE_MOCK) {
1024
+ return await this.markdownMockService.getHighestProfitData(symbol, strategyName, exchangeName, frameName);
1025
+ }
1026
+ return await HighestProfit.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
1027
+ };
1028
+ this.getHighestProfitReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1029
+ this.loggerService.log("markdownViewService getHighestProfitReport", { symbol, strategyName, exchangeName, frameName, backtest });
1030
+ if (CC_ENABLE_MOCK) {
1031
+ return await this.markdownMockService.getHighestProfitReport(symbol, strategyName, exchangeName, frameName);
1032
+ }
1033
+ return await HighestProfit.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1034
+ };
1035
+ // Schedule
1036
+ this.getScheduleData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1037
+ this.loggerService.log("markdownViewService getScheduleData", { symbol, strategyName, exchangeName, frameName, backtest });
1038
+ if (CC_ENABLE_MOCK) {
1039
+ return await this.markdownMockService.getScheduleData(symbol, strategyName, exchangeName, frameName);
1040
+ }
1041
+ return await Schedule.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
1042
+ };
1043
+ this.getScheduleReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1044
+ this.loggerService.log("markdownViewService getScheduleReport", { symbol, strategyName, exchangeName, frameName, backtest });
1045
+ if (CC_ENABLE_MOCK) {
1046
+ return await this.markdownMockService.getScheduleReport(symbol, strategyName, exchangeName, frameName);
1047
+ }
1048
+ return await Schedule.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1049
+ };
1050
+ // Performance
1051
+ this.getPerformanceData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1052
+ this.loggerService.log("markdownViewService getPerformanceData", { symbol, strategyName, exchangeName, frameName, backtest });
1053
+ if (CC_ENABLE_MOCK) {
1054
+ return await this.markdownMockService.getPerformanceData(symbol, strategyName, exchangeName, frameName);
1055
+ }
1056
+ return await Performance.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
1057
+ };
1058
+ this.getPerformanceReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1059
+ this.loggerService.log("markdownViewService getPerformanceReport", { symbol, strategyName, exchangeName, frameName, backtest });
1060
+ if (CC_ENABLE_MOCK) {
1061
+ return await this.markdownMockService.getPerformanceReport(symbol, strategyName, exchangeName, frameName);
1062
+ }
1063
+ return await Performance.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1064
+ };
1065
+ // Sync
1066
+ this.getSyncData = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1067
+ this.loggerService.log("markdownViewService getSyncData", { symbol, strategyName, exchangeName, frameName, backtest });
1068
+ if (CC_ENABLE_MOCK) {
1069
+ return await this.markdownMockService.getSyncData(symbol, strategyName, exchangeName, frameName);
1070
+ }
1071
+ return await Sync.getData(symbol, { strategyName, exchangeName, frameName }, backtest);
1072
+ };
1073
+ this.getSyncReport = async (symbol, strategyName, exchangeName, frameName, backtest = false) => {
1074
+ this.loggerService.log("markdownViewService getSyncReport", { symbol, strategyName, exchangeName, frameName, backtest });
1075
+ if (CC_ENABLE_MOCK) {
1076
+ return await this.markdownMockService.getSyncReport(symbol, strategyName, exchangeName, frameName);
1077
+ }
1078
+ return await Sync.getReport(symbol, { strategyName, exchangeName, frameName }, backtest);
1079
+ };
1080
+ // Heat
1081
+ this.getHeatData = async (strategyName, exchangeName, frameName, backtest = false) => {
1082
+ this.loggerService.log("markdownViewService getHeatData", { strategyName, exchangeName, frameName, backtest });
1083
+ if (CC_ENABLE_MOCK) {
1084
+ return await this.markdownMockService.getHeatData(strategyName, exchangeName, frameName);
1085
+ }
1086
+ return await Heat.getData({ strategyName, exchangeName, frameName }, backtest);
1087
+ };
1088
+ this.getHeatReport = async (strategyName, exchangeName, frameName, backtest = false) => {
1089
+ this.loggerService.log("markdownViewService getHeatReport", { strategyName, exchangeName, frameName, backtest });
1090
+ if (CC_ENABLE_MOCK) {
1091
+ return await this.markdownMockService.getHeatReport(strategyName, exchangeName, frameName);
1092
+ }
1093
+ return await Heat.getReport({ strategyName, exchangeName, frameName }, backtest);
1094
+ };
1095
+ // Walker
1096
+ this.getWalkerData = async (symbol, walkerName) => {
1097
+ this.loggerService.log("markdownViewService getWalkerData", { symbol, walkerName });
1098
+ if (CC_ENABLE_MOCK) {
1099
+ return await this.markdownMockService.getWalkerData(symbol, walkerName);
1100
+ }
1101
+ return await Walker.getData(symbol, { walkerName });
1102
+ };
1103
+ this.getWalkerReport = async (symbol, walkerName) => {
1104
+ this.loggerService.log("markdownViewService getWalkerReport", { symbol, walkerName });
1105
+ if (CC_ENABLE_MOCK) {
1106
+ return await this.markdownMockService.getWalkerReport(symbol, walkerName);
1107
+ }
1108
+ return await Walker.getReport(symbol, { walkerName });
1109
+ };
1110
+ }
1111
+ }
1112
+
781
1113
  const symbol_list = [
782
1114
  {
783
1115
  icon: "/icon/btc.png",
@@ -919,6 +1251,41 @@ class PriceConnectionService {
919
1251
  }
920
1252
  }
921
1253
 
1254
+ const BACKTEST_LIST = [
1255
+ { id: "mock-backtest-1", symbol: "BTCUSDT", strategyName: "mock-strategy", exchangeName: "binance", frameName: "1m", status: "done" },
1256
+ { id: "mock-backtest-2", symbol: "ETHUSDT", strategyName: "mock-strategy", exchangeName: "binance", frameName: "1m", status: "running" },
1257
+ { id: "mock-backtest-3", symbol: "BNBUSDT", strategyName: "mock-strategy", exchangeName: "binance", frameName: "1m", status: "idle" },
1258
+ ];
1259
+ class BacktestMetaService {
1260
+ constructor() {
1261
+ this.loggerService = inject(TYPES.loggerService);
1262
+ this.list = async () => {
1263
+ this.loggerService.log("backtestMetaService list");
1264
+ if (CC_ENABLE_MOCK) {
1265
+ return BACKTEST_LIST;
1266
+ }
1267
+ return await Backtest.list();
1268
+ };
1269
+ }
1270
+ }
1271
+
1272
+ const LIVE_LIST = [
1273
+ { id: "mock-live-1", symbol: "BTCUSDT", strategyName: "mock-strategy", exchangeName: "binance", status: "running" },
1274
+ { id: "mock-live-2", symbol: "ETHUSDT", strategyName: "mock-strategy", exchangeName: "binance", status: "idle" },
1275
+ ];
1276
+ class LiveMetaService {
1277
+ constructor() {
1278
+ this.loggerService = inject(TYPES.loggerService);
1279
+ this.list = async () => {
1280
+ this.loggerService.log("liveMetaService list");
1281
+ if (CC_ENABLE_MOCK) {
1282
+ return LIVE_LIST;
1283
+ }
1284
+ return await Live.list();
1285
+ };
1286
+ }
1287
+ }
1288
+
922
1289
  {
923
1290
  provide(TYPES.loggerService, () => new LoggerService());
924
1291
  provide(TYPES.exchangeService, () => new ExchangeService());
@@ -928,7 +1295,9 @@ class PriceConnectionService {
928
1295
  provide(TYPES.priceConnectionService, () => new PriceConnectionService());
929
1296
  }
930
1297
  {
1298
+ provide(TYPES.liveMetaService, () => new LiveMetaService());
931
1299
  provide(TYPES.symbolMetaService, () => new SymbolMetaService());
1300
+ provide(TYPES.backtestMetaService, () => new BacktestMetaService());
932
1301
  }
933
1302
  {
934
1303
  provide(TYPES.notificationMockService, () => new NotificationMockService());
@@ -936,6 +1305,7 @@ class PriceConnectionService {
936
1305
  provide(TYPES.exchangeMockService, () => new ExchangeMockService());
937
1306
  provide(TYPES.logMockService, () => new LogMockService());
938
1307
  provide(TYPES.statusMockService, () => new StatusMockService());
1308
+ provide(TYPES.markdownMockService, () => new MarkdownMockService());
939
1309
  }
940
1310
  {
941
1311
  provide(TYPES.notificationViewService, () => new NotificationViewService());
@@ -943,6 +1313,7 @@ class PriceConnectionService {
943
1313
  provide(TYPES.exchangeViewService, () => new ExchangeViewService());
944
1314
  provide(TYPES.logViewService, () => new LogViewService());
945
1315
  provide(TYPES.statusViewService, () => new StatusViewService());
1316
+ provide(TYPES.markdownViewService, () => new MarkdownViewService());
946
1317
  }
947
1318
 
948
1319
  const baseServices = {
@@ -954,7 +1325,9 @@ const connectionServices = {
954
1325
  priceConnectionService: inject(TYPES.priceConnectionService),
955
1326
  };
956
1327
  const metaServices = {
1328
+ liveMetaService: inject(TYPES.liveMetaService),
957
1329
  symbolMetaService: inject(TYPES.symbolMetaService),
1330
+ backtestMetaService: inject(TYPES.backtestMetaService),
958
1331
  };
959
1332
  const mockServices = {
960
1333
  notificationMockService: inject(TYPES.notificationMockService),
@@ -962,6 +1335,7 @@ const mockServices = {
962
1335
  exchangeMockService: inject(TYPES.exchangeMockService),
963
1336
  logMockService: inject(TYPES.logMockService),
964
1337
  statusMockService: inject(TYPES.statusMockService),
1338
+ markdownMockService: inject(TYPES.markdownMockService),
965
1339
  };
966
1340
  const viewServices = {
967
1341
  notificationViewService: inject(TYPES.notificationViewService),
@@ -969,6 +1343,7 @@ const viewServices = {
969
1343
  exchangeViewService: inject(TYPES.exchangeViewService),
970
1344
  logViewService: inject(TYPES.logViewService),
971
1345
  statusViewService: inject(TYPES.statusViewService),
1346
+ markdownViewService: inject(TYPES.markdownViewService),
972
1347
  };
973
1348
  const ioc = {
974
1349
  ...baseServices,
@@ -979,11 +1354,11 @@ const ioc = {
979
1354
  };
980
1355
  init();
981
1356
 
982
- const router$6 = Router({
1357
+ const router$8 = Router({
983
1358
  params: true,
984
1359
  });
985
1360
  // ExchangeMockService endpoints
986
- router$6.post("/api/v1/mock/candles_signal", async (req, res) => {
1361
+ router$8.post("/api/v1/mock/candles_signal", async (req, res) => {
987
1362
  try {
988
1363
  const request = await micro.json(req);
989
1364
  const { signalId, interval, requestId, serviceName } = request;
@@ -1011,7 +1386,7 @@ router$6.post("/api/v1/mock/candles_signal", async (req, res) => {
1011
1386
  });
1012
1387
  }
1013
1388
  });
1014
- router$6.post("/api/v1/mock/candles_point", async (req, res) => {
1389
+ router$8.post("/api/v1/mock/candles_point", async (req, res) => {
1015
1390
  try {
1016
1391
  const request = await micro.json(req);
1017
1392
  const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
@@ -1045,7 +1420,7 @@ router$6.post("/api/v1/mock/candles_point", async (req, res) => {
1045
1420
  }
1046
1421
  });
1047
1422
  // NotificationMockService endpoints
1048
- router$6.post("/api/v1/mock/notification_list", async (req, res) => {
1423
+ router$8.post("/api/v1/mock/notification_list", async (req, res) => {
1049
1424
  try {
1050
1425
  const request = await micro.json(req);
1051
1426
  const { requestId, serviceName } = request;
@@ -1073,7 +1448,7 @@ router$6.post("/api/v1/mock/notification_list", async (req, res) => {
1073
1448
  });
1074
1449
  }
1075
1450
  });
1076
- router$6.post("/api/v1/mock/notification_one/:id", async (req, res) => {
1451
+ router$8.post("/api/v1/mock/notification_one/:id", async (req, res) => {
1077
1452
  try {
1078
1453
  const request = await micro.json(req);
1079
1454
  const { requestId, serviceName } = request;
@@ -1102,7 +1477,7 @@ router$6.post("/api/v1/mock/notification_one/:id", async (req, res) => {
1102
1477
  });
1103
1478
  }
1104
1479
  });
1105
- router$6.post("/api/v1/mock/notification_filter", async (req, res) => {
1480
+ router$8.post("/api/v1/mock/notification_filter", async (req, res) => {
1106
1481
  try {
1107
1482
  const request = await micro.json(req);
1108
1483
  const { requestId, serviceName, filterData, limit, offset } = request;
@@ -1131,7 +1506,7 @@ router$6.post("/api/v1/mock/notification_filter", async (req, res) => {
1131
1506
  }
1132
1507
  });
1133
1508
  // StorageMockService endpoints
1134
- router$6.post("/api/v1/mock/storage_one/:id", async (req, res) => {
1509
+ router$8.post("/api/v1/mock/storage_one/:id", async (req, res) => {
1135
1510
  try {
1136
1511
  const request = await micro.json(req);
1137
1512
  const { requestId, serviceName } = request;
@@ -1160,7 +1535,7 @@ router$6.post("/api/v1/mock/storage_one/:id", async (req, res) => {
1160
1535
  });
1161
1536
  }
1162
1537
  });
1163
- router$6.post("/api/v1/mock/storage_list/live", async (req, res) => {
1538
+ router$8.post("/api/v1/mock/storage_list/live", async (req, res) => {
1164
1539
  try {
1165
1540
  const request = await micro.json(req);
1166
1541
  const { requestId, serviceName } = request;
@@ -1188,7 +1563,7 @@ router$6.post("/api/v1/mock/storage_list/live", async (req, res) => {
1188
1563
  });
1189
1564
  }
1190
1565
  });
1191
- router$6.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
1566
+ router$8.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
1192
1567
  try {
1193
1568
  const request = await micro.json(req);
1194
1569
  const { requestId, serviceName } = request;
@@ -1217,7 +1592,7 @@ router$6.post("/api/v1/mock/storage_list/backtest", async (req, res) => {
1217
1592
  }
1218
1593
  });
1219
1594
  // LogMockService endpoints
1220
- router$6.post("/api/v1/mock/log_list", async (req, res) => {
1595
+ router$8.post("/api/v1/mock/log_list", async (req, res) => {
1221
1596
  try {
1222
1597
  const request = await micro.json(req);
1223
1598
  const { requestId, serviceName } = request;
@@ -1245,7 +1620,7 @@ router$6.post("/api/v1/mock/log_list", async (req, res) => {
1245
1620
  });
1246
1621
  }
1247
1622
  });
1248
- router$6.post("/api/v1/mock/log_one/:id", async (req, res) => {
1623
+ router$8.post("/api/v1/mock/log_one/:id", async (req, res) => {
1249
1624
  try {
1250
1625
  const request = await micro.json(req);
1251
1626
  const { requestId, serviceName } = request;
@@ -1274,7 +1649,7 @@ router$6.post("/api/v1/mock/log_one/:id", async (req, res) => {
1274
1649
  });
1275
1650
  }
1276
1651
  });
1277
- router$6.post("/api/v1/mock/log_filter", async (req, res) => {
1652
+ router$8.post("/api/v1/mock/log_filter", async (req, res) => {
1278
1653
  try {
1279
1654
  const request = await micro.json(req);
1280
1655
  const { requestId, serviceName, filterData, limit, offset } = request;
@@ -1302,7 +1677,7 @@ router$6.post("/api/v1/mock/log_filter", async (req, res) => {
1302
1677
  });
1303
1678
  }
1304
1679
  });
1305
- router$6.post("/api/v1/mock/candles_live", async (req, res) => {
1680
+ router$8.post("/api/v1/mock/candles_live", async (req, res) => {
1306
1681
  try {
1307
1682
  const request = await micro.json(req);
1308
1683
  const { signalId, interval, requestId, serviceName } = request;
@@ -1331,7 +1706,7 @@ router$6.post("/api/v1/mock/candles_live", async (req, res) => {
1331
1706
  }
1332
1707
  });
1333
1708
  // StatusMockService endpoints
1334
- router$6.post("/api/v1/mock/status_list", async (req, res) => {
1709
+ router$8.post("/api/v1/mock/status_list", async (req, res) => {
1335
1710
  try {
1336
1711
  const request = await micro.json(req);
1337
1712
  const { requestId, serviceName } = request;
@@ -1359,7 +1734,7 @@ router$6.post("/api/v1/mock/status_list", async (req, res) => {
1359
1734
  });
1360
1735
  }
1361
1736
  });
1362
- router$6.post("/api/v1/mock/status_one/:id", async (req, res) => {
1737
+ router$8.post("/api/v1/mock/status_one/:id", async (req, res) => {
1363
1738
  try {
1364
1739
  const request = await micro.json(req);
1365
1740
  const { requestId, serviceName } = request;
@@ -1389,11 +1764,11 @@ router$6.post("/api/v1/mock/status_one/:id", async (req, res) => {
1389
1764
  }
1390
1765
  });
1391
1766
 
1392
- const router$5 = Router({
1767
+ const router$7 = Router({
1393
1768
  params: true,
1394
1769
  });
1395
1770
  // ExchangeViewService endpoints
1396
- router$5.post("/api/v1/view/candles_signal", async (req, res) => {
1771
+ router$7.post("/api/v1/view/candles_signal", async (req, res) => {
1397
1772
  try {
1398
1773
  const request = await micro.json(req);
1399
1774
  const { signalId, interval, requestId, serviceName } = request;
@@ -1421,7 +1796,7 @@ router$5.post("/api/v1/view/candles_signal", async (req, res) => {
1421
1796
  });
1422
1797
  }
1423
1798
  });
1424
- router$5.post("/api/v1/view/candles_point", async (req, res) => {
1799
+ router$7.post("/api/v1/view/candles_point", async (req, res) => {
1425
1800
  try {
1426
1801
  const request = await micro.json(req);
1427
1802
  const { currentTime, interval, requestId, serviceName, symbol, exchangeName } = request;
@@ -1454,7 +1829,7 @@ router$5.post("/api/v1/view/candles_point", async (req, res) => {
1454
1829
  });
1455
1830
  }
1456
1831
  });
1457
- router$5.post("/api/v1/view/candles_live", async (req, res) => {
1832
+ router$7.post("/api/v1/view/candles_live", async (req, res) => {
1458
1833
  try {
1459
1834
  const request = await micro.json(req);
1460
1835
  const { signalId, interval, requestId, serviceName } = request;
@@ -1483,7 +1858,7 @@ router$5.post("/api/v1/view/candles_live", async (req, res) => {
1483
1858
  }
1484
1859
  });
1485
1860
  // NotificationViewService endpoints
1486
- router$5.post("/api/v1/view/notification_list", async (req, res) => {
1861
+ router$7.post("/api/v1/view/notification_list", async (req, res) => {
1487
1862
  try {
1488
1863
  const request = await micro.json(req);
1489
1864
  const { requestId, serviceName } = request;
@@ -1511,7 +1886,7 @@ router$5.post("/api/v1/view/notification_list", async (req, res) => {
1511
1886
  });
1512
1887
  }
1513
1888
  });
1514
- router$5.post("/api/v1/view/notification_one/:id", async (req, res) => {
1889
+ router$7.post("/api/v1/view/notification_one/:id", async (req, res) => {
1515
1890
  try {
1516
1891
  const request = await micro.json(req);
1517
1892
  const { requestId, serviceName } = request;
@@ -1540,7 +1915,7 @@ router$5.post("/api/v1/view/notification_one/:id", async (req, res) => {
1540
1915
  });
1541
1916
  }
1542
1917
  });
1543
- router$5.post("/api/v1/view/notification_filter", async (req, res) => {
1918
+ router$7.post("/api/v1/view/notification_filter", async (req, res) => {
1544
1919
  try {
1545
1920
  const request = await micro.json(req);
1546
1921
  const { requestId, serviceName, filterData, limit, offset } = request;
@@ -1569,7 +1944,7 @@ router$5.post("/api/v1/view/notification_filter", async (req, res) => {
1569
1944
  }
1570
1945
  });
1571
1946
  // StorageViewService endpoints
1572
- router$5.post("/api/v1/view/storage_one/:id", async (req, res) => {
1947
+ router$7.post("/api/v1/view/storage_one/:id", async (req, res) => {
1573
1948
  try {
1574
1949
  const request = await micro.json(req);
1575
1950
  const { requestId, serviceName } = request;
@@ -1598,7 +1973,7 @@ router$5.post("/api/v1/view/storage_one/:id", async (req, res) => {
1598
1973
  });
1599
1974
  }
1600
1975
  });
1601
- router$5.post("/api/v1/view/storage_list/live", async (req, res) => {
1976
+ router$7.post("/api/v1/view/storage_list/live", async (req, res) => {
1602
1977
  try {
1603
1978
  const request = await micro.json(req);
1604
1979
  const { requestId, serviceName } = request;
@@ -1626,7 +2001,7 @@ router$5.post("/api/v1/view/storage_list/live", async (req, res) => {
1626
2001
  });
1627
2002
  }
1628
2003
  });
1629
- router$5.post("/api/v1/view/storage_list/backtest", async (req, res) => {
2004
+ router$7.post("/api/v1/view/storage_list/backtest", async (req, res) => {
1630
2005
  try {
1631
2006
  const request = await micro.json(req);
1632
2007
  const { requestId, serviceName } = request;
@@ -1655,7 +2030,7 @@ router$5.post("/api/v1/view/storage_list/backtest", async (req, res) => {
1655
2030
  }
1656
2031
  });
1657
2032
  // LogViewService endpoints
1658
- router$5.post("/api/v1/view/log_list", async (req, res) => {
2033
+ router$7.post("/api/v1/view/log_list", async (req, res) => {
1659
2034
  try {
1660
2035
  const request = await micro.json(req);
1661
2036
  const { requestId, serviceName } = request;
@@ -1683,7 +2058,7 @@ router$5.post("/api/v1/view/log_list", async (req, res) => {
1683
2058
  });
1684
2059
  }
1685
2060
  });
1686
- router$5.post("/api/v1/view/log_one/:id", async (req, res) => {
2061
+ router$7.post("/api/v1/view/log_one/:id", async (req, res) => {
1687
2062
  try {
1688
2063
  const request = await micro.json(req);
1689
2064
  const { requestId, serviceName } = request;
@@ -1712,7 +2087,7 @@ router$5.post("/api/v1/view/log_one/:id", async (req, res) => {
1712
2087
  });
1713
2088
  }
1714
2089
  });
1715
- router$5.post("/api/v1/view/log_filter", async (req, res) => {
2090
+ router$7.post("/api/v1/view/log_filter", async (req, res) => {
1716
2091
  try {
1717
2092
  const request = await micro.json(req);
1718
2093
  const { requestId, serviceName, filterData, limit, offset } = request;
@@ -1741,7 +2116,7 @@ router$5.post("/api/v1/view/log_filter", async (req, res) => {
1741
2116
  }
1742
2117
  });
1743
2118
  // StatusViewService endpoints
1744
- router$5.post("/api/v1/view/status_list", async (req, res) => {
2119
+ router$7.post("/api/v1/view/status_list", async (req, res) => {
1745
2120
  try {
1746
2121
  const request = await micro.json(req);
1747
2122
  const { requestId, serviceName } = request;
@@ -1769,7 +2144,7 @@ router$5.post("/api/v1/view/status_list", async (req, res) => {
1769
2144
  });
1770
2145
  }
1771
2146
  });
1772
- router$5.post("/api/v1/view/status_one/:id", async (req, res) => {
2147
+ router$7.post("/api/v1/view/status_one/:id", async (req, res) => {
1773
2148
  try {
1774
2149
  const request = await micro.json(req);
1775
2150
  const { requestId, serviceName } = request;
@@ -1806,7 +2181,7 @@ function getModulesPath() {
1806
2181
  return join(basePath, "../../../");
1807
2182
  }
1808
2183
 
1809
- const router$4 = Router({
2184
+ const router$6 = Router({
1810
2185
  params: true,
1811
2186
  });
1812
2187
  // getModulesPath
@@ -1823,7 +2198,7 @@ const ASSET_32 = CC_ENABLE_MOCK
1823
2198
  const cache128 = new Map();
1824
2199
  const cache32 = new Map();
1825
2200
  const cacheSvg = new Map();
1826
- router$4.get("/icon/128/:filename", async (req, res) => {
2201
+ router$6.get("/icon/128/:filename", async (req, res) => {
1827
2202
  const filename = req.params.filename;
1828
2203
  // Check cache first
1829
2204
  if (cache128.has(filename)) {
@@ -1839,7 +2214,7 @@ router$4.get("/icon/128/:filename", async (req, res) => {
1839
2214
  }
1840
2215
  return await micro.send(res, 404, "File not found (128)");
1841
2216
  });
1842
- router$4.get("/icon/32/:filename", async (req, res) => {
2217
+ router$6.get("/icon/32/:filename", async (req, res) => {
1843
2218
  const filename = req.params.filename;
1844
2219
  // Check cache first
1845
2220
  if (cache32.has(filename)) {
@@ -1855,7 +2230,7 @@ router$4.get("/icon/32/:filename", async (req, res) => {
1855
2230
  }
1856
2231
  return await micro.send(res, 404, "File not found (32)");
1857
2232
  });
1858
- router$4.get("/icon/svg/:filename", async (req, res) => {
2233
+ router$6.get("/icon/svg/:filename", async (req, res) => {
1859
2234
  const filename = req.params.filename;
1860
2235
  // Check cache first
1861
2236
  if (cacheSvg.has(filename)) {
@@ -1871,7 +2246,7 @@ router$4.get("/icon/svg/:filename", async (req, res) => {
1871
2246
  }
1872
2247
  return await micro.send(res, 404, "File not found (svg)");
1873
2248
  });
1874
- router$4.get("/icon/:filename", async (req, res) => {
2249
+ router$6.get("/icon/:filename", async (req, res) => {
1875
2250
  const filename = req.params.filename;
1876
2251
  // Check cache first
1877
2252
  if (cache32.has(filename)) {
@@ -1888,10 +2263,10 @@ router$4.get("/icon/:filename", async (req, res) => {
1888
2263
  return await micro.send(res, 404, "File not found (root)");
1889
2264
  });
1890
2265
 
1891
- const router$3 = Router({
2266
+ const router$5 = Router({
1892
2267
  params: true,
1893
2268
  });
1894
- router$3.post("/api/v1/dict/symbol/list", async (req, res) => {
2269
+ router$5.post("/api/v1/dict/symbol/list", async (req, res) => {
1895
2270
  try {
1896
2271
  const request = await micro.json(req);
1897
2272
  const { requestId, serviceName } = request;
@@ -1919,7 +2294,7 @@ router$3.post("/api/v1/dict/symbol/list", async (req, res) => {
1919
2294
  });
1920
2295
  }
1921
2296
  });
1922
- router$3.post("/api/v1/dict/symbol/map", async (req, res) => {
2297
+ router$5.post("/api/v1/dict/symbol/map", async (req, res) => {
1923
2298
  try {
1924
2299
  const request = await micro.json(req);
1925
2300
  const { requestId, serviceName } = request;
@@ -1947,7 +2322,7 @@ router$3.post("/api/v1/dict/symbol/map", async (req, res) => {
1947
2322
  });
1948
2323
  }
1949
2324
  });
1950
- router$3.post("/api/v1/dict/symbol/one", async (req, res) => {
2325
+ router$5.post("/api/v1/dict/symbol/one", async (req, res) => {
1951
2326
  try {
1952
2327
  const request = await micro.json(req);
1953
2328
  const { requestId, serviceName, id } = request;
@@ -1976,6 +2351,686 @@ router$3.post("/api/v1/dict/symbol/one", async (req, res) => {
1976
2351
  }
1977
2352
  });
1978
2353
 
2354
+ const router$4 = Router({
2355
+ params: true,
2356
+ });
2357
+ router$4.post("/api/v1/markdown_mock/strategy_data", async (req, res) => {
2358
+ try {
2359
+ const request = await micro.json(req);
2360
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2361
+ const data = await ioc.markdownMockService.getStrategyData(symbol, strategyName, exchangeName, frameName);
2362
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2363
+ ioc.loggerService.log("/api/v1/markdown_mock/strategy_data ok", { request, result: omit(result, "data") });
2364
+ return await micro.send(res, 200, result);
2365
+ }
2366
+ catch (error) {
2367
+ ioc.loggerService.log("/api/v1/markdown_mock/strategy_data error", { error: errorData(error) });
2368
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2369
+ }
2370
+ });
2371
+ router$4.post("/api/v1/markdown_mock/strategy_report", async (req, res) => {
2372
+ try {
2373
+ const request = await micro.json(req);
2374
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2375
+ const data = await ioc.markdownMockService.getStrategyReport(symbol, strategyName, exchangeName, frameName);
2376
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2377
+ ioc.loggerService.log("/api/v1/markdown_mock/strategy_report ok", { request, result: omit(result, "data") });
2378
+ return await micro.send(res, 200, result);
2379
+ }
2380
+ catch (error) {
2381
+ ioc.loggerService.log("/api/v1/markdown_mock/strategy_report error", { error: errorData(error) });
2382
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2383
+ }
2384
+ });
2385
+ router$4.post("/api/v1/markdown_mock/backtest_data", async (req, res) => {
2386
+ try {
2387
+ const request = await micro.json(req);
2388
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2389
+ const data = await ioc.markdownMockService.getBacktestData(symbol, strategyName, exchangeName, frameName);
2390
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2391
+ ioc.loggerService.log("/api/v1/markdown_mock/backtest_data ok", { request, result: omit(result, "data") });
2392
+ return await micro.send(res, 200, result);
2393
+ }
2394
+ catch (error) {
2395
+ ioc.loggerService.log("/api/v1/markdown_mock/backtest_data error", { error: errorData(error) });
2396
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2397
+ }
2398
+ });
2399
+ router$4.post("/api/v1/markdown_mock/backtest_report", async (req, res) => {
2400
+ try {
2401
+ const request = await micro.json(req);
2402
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2403
+ const data = await ioc.markdownMockService.getBacktestReport(symbol, strategyName, exchangeName, frameName);
2404
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2405
+ ioc.loggerService.log("/api/v1/markdown_mock/backtest_report ok", { request, result: omit(result, "data") });
2406
+ return await micro.send(res, 200, result);
2407
+ }
2408
+ catch (error) {
2409
+ ioc.loggerService.log("/api/v1/markdown_mock/backtest_report error", { error: errorData(error) });
2410
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2411
+ }
2412
+ });
2413
+ router$4.post("/api/v1/markdown_mock/live_data", async (req, res) => {
2414
+ try {
2415
+ const request = await micro.json(req);
2416
+ const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
2417
+ const data = await ioc.markdownMockService.getLiveData(symbol, strategyName, exchangeName);
2418
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2419
+ ioc.loggerService.log("/api/v1/markdown_mock/live_data ok", { request, result: omit(result, "data") });
2420
+ return await micro.send(res, 200, result);
2421
+ }
2422
+ catch (error) {
2423
+ ioc.loggerService.log("/api/v1/markdown_mock/live_data error", { error: errorData(error) });
2424
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2425
+ }
2426
+ });
2427
+ router$4.post("/api/v1/markdown_mock/live_report", async (req, res) => {
2428
+ try {
2429
+ const request = await micro.json(req);
2430
+ const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
2431
+ const data = await ioc.markdownMockService.getLiveReport(symbol, strategyName, exchangeName);
2432
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2433
+ ioc.loggerService.log("/api/v1/markdown_mock/live_report ok", { request, result: omit(result, "data") });
2434
+ return await micro.send(res, 200, result);
2435
+ }
2436
+ catch (error) {
2437
+ ioc.loggerService.log("/api/v1/markdown_mock/live_report error", { error: errorData(error) });
2438
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2439
+ }
2440
+ });
2441
+ router$4.post("/api/v1/markdown_mock/breakeven_data", async (req, res) => {
2442
+ try {
2443
+ const request = await micro.json(req);
2444
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2445
+ const data = await ioc.markdownMockService.getBreakevenData(symbol, strategyName, exchangeName, frameName);
2446
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2447
+ ioc.loggerService.log("/api/v1/markdown_mock/breakeven_data ok", { request, result: omit(result, "data") });
2448
+ return await micro.send(res, 200, result);
2449
+ }
2450
+ catch (error) {
2451
+ ioc.loggerService.log("/api/v1/markdown_mock/breakeven_data error", { error: errorData(error) });
2452
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2453
+ }
2454
+ });
2455
+ router$4.post("/api/v1/markdown_mock/breakeven_report", async (req, res) => {
2456
+ try {
2457
+ const request = await micro.json(req);
2458
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2459
+ const data = await ioc.markdownMockService.getBreakevenReport(symbol, strategyName, exchangeName, frameName);
2460
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2461
+ ioc.loggerService.log("/api/v1/markdown_mock/breakeven_report ok", { request, result: omit(result, "data") });
2462
+ return await micro.send(res, 200, result);
2463
+ }
2464
+ catch (error) {
2465
+ ioc.loggerService.log("/api/v1/markdown_mock/breakeven_report error", { error: errorData(error) });
2466
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2467
+ }
2468
+ });
2469
+ router$4.post("/api/v1/markdown_mock/risk_data", async (req, res) => {
2470
+ try {
2471
+ const request = await micro.json(req);
2472
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2473
+ const data = await ioc.markdownMockService.getRiskData(symbol, strategyName, exchangeName, frameName);
2474
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2475
+ ioc.loggerService.log("/api/v1/markdown_mock/risk_data ok", { request, result: omit(result, "data") });
2476
+ return await micro.send(res, 200, result);
2477
+ }
2478
+ catch (error) {
2479
+ ioc.loggerService.log("/api/v1/markdown_mock/risk_data error", { error: errorData(error) });
2480
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2481
+ }
2482
+ });
2483
+ router$4.post("/api/v1/markdown_mock/risk_report", async (req, res) => {
2484
+ try {
2485
+ const request = await micro.json(req);
2486
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2487
+ const data = await ioc.markdownMockService.getRiskReport(symbol, strategyName, exchangeName, frameName);
2488
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2489
+ ioc.loggerService.log("/api/v1/markdown_mock/risk_report ok", { request, result: omit(result, "data") });
2490
+ return await micro.send(res, 200, result);
2491
+ }
2492
+ catch (error) {
2493
+ ioc.loggerService.log("/api/v1/markdown_mock/risk_report error", { error: errorData(error) });
2494
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2495
+ }
2496
+ });
2497
+ router$4.post("/api/v1/markdown_mock/partial_data", async (req, res) => {
2498
+ try {
2499
+ const request = await micro.json(req);
2500
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2501
+ const data = await ioc.markdownMockService.getPartialData(symbol, strategyName, exchangeName, frameName);
2502
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2503
+ ioc.loggerService.log("/api/v1/markdown_mock/partial_data ok", { request, result: omit(result, "data") });
2504
+ return await micro.send(res, 200, result);
2505
+ }
2506
+ catch (error) {
2507
+ ioc.loggerService.log("/api/v1/markdown_mock/partial_data error", { error: errorData(error) });
2508
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2509
+ }
2510
+ });
2511
+ router$4.post("/api/v1/markdown_mock/partial_report", async (req, res) => {
2512
+ try {
2513
+ const request = await micro.json(req);
2514
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2515
+ const data = await ioc.markdownMockService.getPartialReport(symbol, strategyName, exchangeName, frameName);
2516
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2517
+ ioc.loggerService.log("/api/v1/markdown_mock/partial_report ok", { request, result: omit(result, "data") });
2518
+ return await micro.send(res, 200, result);
2519
+ }
2520
+ catch (error) {
2521
+ ioc.loggerService.log("/api/v1/markdown_mock/partial_report error", { error: errorData(error) });
2522
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2523
+ }
2524
+ });
2525
+ router$4.post("/api/v1/markdown_mock/highest_profit_data", async (req, res) => {
2526
+ try {
2527
+ const request = await micro.json(req);
2528
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2529
+ const data = await ioc.markdownMockService.getHighestProfitData(symbol, strategyName, exchangeName, frameName);
2530
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2531
+ ioc.loggerService.log("/api/v1/markdown_mock/highest_profit_data ok", { request, result: omit(result, "data") });
2532
+ return await micro.send(res, 200, result);
2533
+ }
2534
+ catch (error) {
2535
+ ioc.loggerService.log("/api/v1/markdown_mock/highest_profit_data error", { error: errorData(error) });
2536
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2537
+ }
2538
+ });
2539
+ router$4.post("/api/v1/markdown_mock/highest_profit_report", async (req, res) => {
2540
+ try {
2541
+ const request = await micro.json(req);
2542
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2543
+ const data = await ioc.markdownMockService.getHighestProfitReport(symbol, strategyName, exchangeName, frameName);
2544
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2545
+ ioc.loggerService.log("/api/v1/markdown_mock/highest_profit_report ok", { request, result: omit(result, "data") });
2546
+ return await micro.send(res, 200, result);
2547
+ }
2548
+ catch (error) {
2549
+ ioc.loggerService.log("/api/v1/markdown_mock/highest_profit_report error", { error: errorData(error) });
2550
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2551
+ }
2552
+ });
2553
+ router$4.post("/api/v1/markdown_mock/schedule_data", async (req, res) => {
2554
+ try {
2555
+ const request = await micro.json(req);
2556
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2557
+ const data = await ioc.markdownMockService.getScheduleData(symbol, strategyName, exchangeName, frameName);
2558
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2559
+ ioc.loggerService.log("/api/v1/markdown_mock/schedule_data ok", { request, result: omit(result, "data") });
2560
+ return await micro.send(res, 200, result);
2561
+ }
2562
+ catch (error) {
2563
+ ioc.loggerService.log("/api/v1/markdown_mock/schedule_data error", { error: errorData(error) });
2564
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2565
+ }
2566
+ });
2567
+ router$4.post("/api/v1/markdown_mock/schedule_report", async (req, res) => {
2568
+ try {
2569
+ const request = await micro.json(req);
2570
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2571
+ const data = await ioc.markdownMockService.getScheduleReport(symbol, strategyName, exchangeName, frameName);
2572
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2573
+ ioc.loggerService.log("/api/v1/markdown_mock/schedule_report ok", { request, result: omit(result, "data") });
2574
+ return await micro.send(res, 200, result);
2575
+ }
2576
+ catch (error) {
2577
+ ioc.loggerService.log("/api/v1/markdown_mock/schedule_report error", { error: errorData(error) });
2578
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2579
+ }
2580
+ });
2581
+ router$4.post("/api/v1/markdown_mock/performance_data", async (req, res) => {
2582
+ try {
2583
+ const request = await micro.json(req);
2584
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2585
+ const data = await ioc.markdownMockService.getPerformanceData(symbol, strategyName, exchangeName, frameName);
2586
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2587
+ ioc.loggerService.log("/api/v1/markdown_mock/performance_data ok", { request, result: omit(result, "data") });
2588
+ return await micro.send(res, 200, result);
2589
+ }
2590
+ catch (error) {
2591
+ ioc.loggerService.log("/api/v1/markdown_mock/performance_data error", { error: errorData(error) });
2592
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2593
+ }
2594
+ });
2595
+ router$4.post("/api/v1/markdown_mock/performance_report", async (req, res) => {
2596
+ try {
2597
+ const request = await micro.json(req);
2598
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2599
+ const data = await ioc.markdownMockService.getPerformanceReport(symbol, strategyName, exchangeName, frameName);
2600
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2601
+ ioc.loggerService.log("/api/v1/markdown_mock/performance_report ok", { request, result: omit(result, "data") });
2602
+ return await micro.send(res, 200, result);
2603
+ }
2604
+ catch (error) {
2605
+ ioc.loggerService.log("/api/v1/markdown_mock/performance_report error", { error: errorData(error) });
2606
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2607
+ }
2608
+ });
2609
+ router$4.post("/api/v1/markdown_mock/sync_data", async (req, res) => {
2610
+ try {
2611
+ const request = await micro.json(req);
2612
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2613
+ const data = await ioc.markdownMockService.getSyncData(symbol, strategyName, exchangeName, frameName);
2614
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2615
+ ioc.loggerService.log("/api/v1/markdown_mock/sync_data ok", { request, result: omit(result, "data") });
2616
+ return await micro.send(res, 200, result);
2617
+ }
2618
+ catch (error) {
2619
+ ioc.loggerService.log("/api/v1/markdown_mock/sync_data error", { error: errorData(error) });
2620
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2621
+ }
2622
+ });
2623
+ router$4.post("/api/v1/markdown_mock/sync_report", async (req, res) => {
2624
+ try {
2625
+ const request = await micro.json(req);
2626
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2627
+ const data = await ioc.markdownMockService.getSyncReport(symbol, strategyName, exchangeName, frameName);
2628
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2629
+ ioc.loggerService.log("/api/v1/markdown_mock/sync_report ok", { request, result: omit(result, "data") });
2630
+ return await micro.send(res, 200, result);
2631
+ }
2632
+ catch (error) {
2633
+ ioc.loggerService.log("/api/v1/markdown_mock/sync_report error", { error: errorData(error) });
2634
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2635
+ }
2636
+ });
2637
+ router$4.post("/api/v1/markdown_mock/heat_data", async (req, res) => {
2638
+ try {
2639
+ const request = await micro.json(req);
2640
+ const { requestId, serviceName, strategyName, exchangeName, frameName } = request;
2641
+ const data = await ioc.markdownMockService.getHeatData(strategyName, exchangeName, frameName);
2642
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2643
+ ioc.loggerService.log("/api/v1/markdown_mock/heat_data ok", { request, result: omit(result, "data") });
2644
+ return await micro.send(res, 200, result);
2645
+ }
2646
+ catch (error) {
2647
+ ioc.loggerService.log("/api/v1/markdown_mock/heat_data error", { error: errorData(error) });
2648
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2649
+ }
2650
+ });
2651
+ router$4.post("/api/v1/markdown_mock/heat_report", async (req, res) => {
2652
+ try {
2653
+ const request = await micro.json(req);
2654
+ const { requestId, serviceName, strategyName, exchangeName, frameName } = request;
2655
+ const data = await ioc.markdownMockService.getHeatReport(strategyName, exchangeName, frameName);
2656
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2657
+ ioc.loggerService.log("/api/v1/markdown_mock/heat_report ok", { request, result: omit(result, "data") });
2658
+ return await micro.send(res, 200, result);
2659
+ }
2660
+ catch (error) {
2661
+ ioc.loggerService.log("/api/v1/markdown_mock/heat_report error", { error: errorData(error) });
2662
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2663
+ }
2664
+ });
2665
+ router$4.post("/api/v1/markdown_mock/walker_data", async (req, res) => {
2666
+ try {
2667
+ const request = await micro.json(req);
2668
+ const { requestId, serviceName, symbol, walkerName } = request;
2669
+ const data = await ioc.markdownMockService.getWalkerData(symbol, walkerName);
2670
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2671
+ ioc.loggerService.log("/api/v1/markdown_mock/walker_data ok", { request, result: omit(result, "data") });
2672
+ return await micro.send(res, 200, result);
2673
+ }
2674
+ catch (error) {
2675
+ ioc.loggerService.log("/api/v1/markdown_mock/walker_data error", { error: errorData(error) });
2676
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2677
+ }
2678
+ });
2679
+ router$4.post("/api/v1/markdown_mock/walker_report", async (req, res) => {
2680
+ try {
2681
+ const request = await micro.json(req);
2682
+ const { requestId, serviceName, symbol, walkerName } = request;
2683
+ const data = await ioc.markdownMockService.getWalkerReport(symbol, walkerName);
2684
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2685
+ ioc.loggerService.log("/api/v1/markdown_mock/walker_report ok", { request, result: omit(result, "data") });
2686
+ return await micro.send(res, 200, result);
2687
+ }
2688
+ catch (error) {
2689
+ ioc.loggerService.log("/api/v1/markdown_mock/walker_report error", { error: errorData(error) });
2690
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2691
+ }
2692
+ });
2693
+
2694
+ const router$3 = Router({
2695
+ params: true,
2696
+ });
2697
+ router$3.post("/api/v1/markdown_view/strategy_data", async (req, res) => {
2698
+ try {
2699
+ const request = await micro.json(req);
2700
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2701
+ const data = await ioc.markdownViewService.getStrategyData(symbol, strategyName, exchangeName, frameName, backtest);
2702
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2703
+ ioc.loggerService.log("/api/v1/markdown_view/strategy_data ok", { request, result: omit(result, "data") });
2704
+ return await micro.send(res, 200, result);
2705
+ }
2706
+ catch (error) {
2707
+ ioc.loggerService.log("/api/v1/markdown_view/strategy_data error", { error: errorData(error) });
2708
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2709
+ }
2710
+ });
2711
+ router$3.post("/api/v1/markdown_view/strategy_report", async (req, res) => {
2712
+ try {
2713
+ const request = await micro.json(req);
2714
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2715
+ const data = await ioc.markdownViewService.getStrategyReport(symbol, strategyName, exchangeName, frameName, backtest);
2716
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2717
+ ioc.loggerService.log("/api/v1/markdown_view/strategy_report ok", { request, result: omit(result, "data") });
2718
+ return await micro.send(res, 200, result);
2719
+ }
2720
+ catch (error) {
2721
+ ioc.loggerService.log("/api/v1/markdown_view/strategy_report error", { error: errorData(error) });
2722
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2723
+ }
2724
+ });
2725
+ router$3.post("/api/v1/markdown_view/backtest_data", async (req, res) => {
2726
+ try {
2727
+ const request = await micro.json(req);
2728
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2729
+ const data = await ioc.markdownViewService.getBacktestData(symbol, strategyName, exchangeName, frameName);
2730
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2731
+ ioc.loggerService.log("/api/v1/markdown_view/backtest_data ok", { request, result: omit(result, "data") });
2732
+ return await micro.send(res, 200, result);
2733
+ }
2734
+ catch (error) {
2735
+ ioc.loggerService.log("/api/v1/markdown_view/backtest_data error", { error: errorData(error) });
2736
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2737
+ }
2738
+ });
2739
+ router$3.post("/api/v1/markdown_view/backtest_report", async (req, res) => {
2740
+ try {
2741
+ const request = await micro.json(req);
2742
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName } = request;
2743
+ const data = await ioc.markdownViewService.getBacktestReport(symbol, strategyName, exchangeName, frameName);
2744
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2745
+ ioc.loggerService.log("/api/v1/markdown_view/backtest_report ok", { request, result: omit(result, "data") });
2746
+ return await micro.send(res, 200, result);
2747
+ }
2748
+ catch (error) {
2749
+ ioc.loggerService.log("/api/v1/markdown_view/backtest_report error", { error: errorData(error) });
2750
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2751
+ }
2752
+ });
2753
+ router$3.post("/api/v1/markdown_view/live_data", async (req, res) => {
2754
+ try {
2755
+ const request = await micro.json(req);
2756
+ const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
2757
+ const data = await ioc.markdownViewService.getLiveData(symbol, strategyName, exchangeName);
2758
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2759
+ ioc.loggerService.log("/api/v1/markdown_view/live_data ok", { request, result: omit(result, "data") });
2760
+ return await micro.send(res, 200, result);
2761
+ }
2762
+ catch (error) {
2763
+ ioc.loggerService.log("/api/v1/markdown_view/live_data error", { error: errorData(error) });
2764
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2765
+ }
2766
+ });
2767
+ router$3.post("/api/v1/markdown_view/live_report", async (req, res) => {
2768
+ try {
2769
+ const request = await micro.json(req);
2770
+ const { requestId, serviceName, symbol, strategyName, exchangeName } = request;
2771
+ const data = await ioc.markdownViewService.getLiveReport(symbol, strategyName, exchangeName);
2772
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2773
+ ioc.loggerService.log("/api/v1/markdown_view/live_report ok", { request, result: omit(result, "data") });
2774
+ return await micro.send(res, 200, result);
2775
+ }
2776
+ catch (error) {
2777
+ ioc.loggerService.log("/api/v1/markdown_view/live_report error", { error: errorData(error) });
2778
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2779
+ }
2780
+ });
2781
+ router$3.post("/api/v1/markdown_view/breakeven_data", async (req, res) => {
2782
+ try {
2783
+ const request = await micro.json(req);
2784
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2785
+ const data = await ioc.markdownViewService.getBreakevenData(symbol, strategyName, exchangeName, frameName, backtest);
2786
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2787
+ ioc.loggerService.log("/api/v1/markdown_view/breakeven_data ok", { request, result: omit(result, "data") });
2788
+ return await micro.send(res, 200, result);
2789
+ }
2790
+ catch (error) {
2791
+ ioc.loggerService.log("/api/v1/markdown_view/breakeven_data error", { error: errorData(error) });
2792
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2793
+ }
2794
+ });
2795
+ router$3.post("/api/v1/markdown_view/breakeven_report", async (req, res) => {
2796
+ try {
2797
+ const request = await micro.json(req);
2798
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2799
+ const data = await ioc.markdownViewService.getBreakevenReport(symbol, strategyName, exchangeName, frameName, backtest);
2800
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2801
+ ioc.loggerService.log("/api/v1/markdown_view/breakeven_report ok", { request, result: omit(result, "data") });
2802
+ return await micro.send(res, 200, result);
2803
+ }
2804
+ catch (error) {
2805
+ ioc.loggerService.log("/api/v1/markdown_view/breakeven_report error", { error: errorData(error) });
2806
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2807
+ }
2808
+ });
2809
+ router$3.post("/api/v1/markdown_view/risk_data", async (req, res) => {
2810
+ try {
2811
+ const request = await micro.json(req);
2812
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2813
+ const data = await ioc.markdownViewService.getRiskData(symbol, strategyName, exchangeName, frameName, backtest);
2814
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2815
+ ioc.loggerService.log("/api/v1/markdown_view/risk_data ok", { request, result: omit(result, "data") });
2816
+ return await micro.send(res, 200, result);
2817
+ }
2818
+ catch (error) {
2819
+ ioc.loggerService.log("/api/v1/markdown_view/risk_data error", { error: errorData(error) });
2820
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2821
+ }
2822
+ });
2823
+ router$3.post("/api/v1/markdown_view/risk_report", async (req, res) => {
2824
+ try {
2825
+ const request = await micro.json(req);
2826
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2827
+ const data = await ioc.markdownViewService.getRiskReport(symbol, strategyName, exchangeName, frameName, backtest);
2828
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2829
+ ioc.loggerService.log("/api/v1/markdown_view/risk_report ok", { request, result: omit(result, "data") });
2830
+ return await micro.send(res, 200, result);
2831
+ }
2832
+ catch (error) {
2833
+ ioc.loggerService.log("/api/v1/markdown_view/risk_report error", { error: errorData(error) });
2834
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2835
+ }
2836
+ });
2837
+ router$3.post("/api/v1/markdown_view/partial_data", async (req, res) => {
2838
+ try {
2839
+ const request = await micro.json(req);
2840
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2841
+ const data = await ioc.markdownViewService.getPartialData(symbol, strategyName, exchangeName, frameName, backtest);
2842
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2843
+ ioc.loggerService.log("/api/v1/markdown_view/partial_data ok", { request, result: omit(result, "data") });
2844
+ return await micro.send(res, 200, result);
2845
+ }
2846
+ catch (error) {
2847
+ ioc.loggerService.log("/api/v1/markdown_view/partial_data error", { error: errorData(error) });
2848
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2849
+ }
2850
+ });
2851
+ router$3.post("/api/v1/markdown_view/partial_report", async (req, res) => {
2852
+ try {
2853
+ const request = await micro.json(req);
2854
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2855
+ const data = await ioc.markdownViewService.getPartialReport(symbol, strategyName, exchangeName, frameName, backtest);
2856
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2857
+ ioc.loggerService.log("/api/v1/markdown_view/partial_report ok", { request, result: omit(result, "data") });
2858
+ return await micro.send(res, 200, result);
2859
+ }
2860
+ catch (error) {
2861
+ ioc.loggerService.log("/api/v1/markdown_view/partial_report error", { error: errorData(error) });
2862
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2863
+ }
2864
+ });
2865
+ router$3.post("/api/v1/markdown_view/highest_profit_data", async (req, res) => {
2866
+ try {
2867
+ const request = await micro.json(req);
2868
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2869
+ const data = await ioc.markdownViewService.getHighestProfitData(symbol, strategyName, exchangeName, frameName, backtest);
2870
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2871
+ ioc.loggerService.log("/api/v1/markdown_view/highest_profit_data ok", { request, result: omit(result, "data") });
2872
+ return await micro.send(res, 200, result);
2873
+ }
2874
+ catch (error) {
2875
+ ioc.loggerService.log("/api/v1/markdown_view/highest_profit_data error", { error: errorData(error) });
2876
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2877
+ }
2878
+ });
2879
+ router$3.post("/api/v1/markdown_view/highest_profit_report", async (req, res) => {
2880
+ try {
2881
+ const request = await micro.json(req);
2882
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2883
+ const data = await ioc.markdownViewService.getHighestProfitReport(symbol, strategyName, exchangeName, frameName, backtest);
2884
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2885
+ ioc.loggerService.log("/api/v1/markdown_view/highest_profit_report ok", { request, result: omit(result, "data") });
2886
+ return await micro.send(res, 200, result);
2887
+ }
2888
+ catch (error) {
2889
+ ioc.loggerService.log("/api/v1/markdown_view/highest_profit_report error", { error: errorData(error) });
2890
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2891
+ }
2892
+ });
2893
+ router$3.post("/api/v1/markdown_view/schedule_data", async (req, res) => {
2894
+ try {
2895
+ const request = await micro.json(req);
2896
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2897
+ const data = await ioc.markdownViewService.getScheduleData(symbol, strategyName, exchangeName, frameName, backtest);
2898
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2899
+ ioc.loggerService.log("/api/v1/markdown_view/schedule_data ok", { request, result: omit(result, "data") });
2900
+ return await micro.send(res, 200, result);
2901
+ }
2902
+ catch (error) {
2903
+ ioc.loggerService.log("/api/v1/markdown_view/schedule_data error", { error: errorData(error) });
2904
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2905
+ }
2906
+ });
2907
+ router$3.post("/api/v1/markdown_view/schedule_report", async (req, res) => {
2908
+ try {
2909
+ const request = await micro.json(req);
2910
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2911
+ const data = await ioc.markdownViewService.getScheduleReport(symbol, strategyName, exchangeName, frameName, backtest);
2912
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2913
+ ioc.loggerService.log("/api/v1/markdown_view/schedule_report ok", { request, result: omit(result, "data") });
2914
+ return await micro.send(res, 200, result);
2915
+ }
2916
+ catch (error) {
2917
+ ioc.loggerService.log("/api/v1/markdown_view/schedule_report error", { error: errorData(error) });
2918
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2919
+ }
2920
+ });
2921
+ router$3.post("/api/v1/markdown_view/performance_data", async (req, res) => {
2922
+ try {
2923
+ const request = await micro.json(req);
2924
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2925
+ const data = await ioc.markdownViewService.getPerformanceData(symbol, strategyName, exchangeName, frameName, backtest);
2926
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2927
+ ioc.loggerService.log("/api/v1/markdown_view/performance_data ok", { request, result: omit(result, "data") });
2928
+ return await micro.send(res, 200, result);
2929
+ }
2930
+ catch (error) {
2931
+ ioc.loggerService.log("/api/v1/markdown_view/performance_data error", { error: errorData(error) });
2932
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2933
+ }
2934
+ });
2935
+ router$3.post("/api/v1/markdown_view/performance_report", async (req, res) => {
2936
+ try {
2937
+ const request = await micro.json(req);
2938
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2939
+ const data = await ioc.markdownViewService.getPerformanceReport(symbol, strategyName, exchangeName, frameName, backtest);
2940
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2941
+ ioc.loggerService.log("/api/v1/markdown_view/performance_report ok", { request, result: omit(result, "data") });
2942
+ return await micro.send(res, 200, result);
2943
+ }
2944
+ catch (error) {
2945
+ ioc.loggerService.log("/api/v1/markdown_view/performance_report error", { error: errorData(error) });
2946
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2947
+ }
2948
+ });
2949
+ router$3.post("/api/v1/markdown_view/sync_data", async (req, res) => {
2950
+ try {
2951
+ const request = await micro.json(req);
2952
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2953
+ const data = await ioc.markdownViewService.getSyncData(symbol, strategyName, exchangeName, frameName, backtest);
2954
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2955
+ ioc.loggerService.log("/api/v1/markdown_view/sync_data ok", { request, result: omit(result, "data") });
2956
+ return await micro.send(res, 200, result);
2957
+ }
2958
+ catch (error) {
2959
+ ioc.loggerService.log("/api/v1/markdown_view/sync_data error", { error: errorData(error) });
2960
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2961
+ }
2962
+ });
2963
+ router$3.post("/api/v1/markdown_view/sync_report", async (req, res) => {
2964
+ try {
2965
+ const request = await micro.json(req);
2966
+ const { requestId, serviceName, symbol, strategyName, exchangeName, frameName, backtest } = request;
2967
+ const data = await ioc.markdownViewService.getSyncReport(symbol, strategyName, exchangeName, frameName, backtest);
2968
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2969
+ ioc.loggerService.log("/api/v1/markdown_view/sync_report ok", { request, result: omit(result, "data") });
2970
+ return await micro.send(res, 200, result);
2971
+ }
2972
+ catch (error) {
2973
+ ioc.loggerService.log("/api/v1/markdown_view/sync_report error", { error: errorData(error) });
2974
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2975
+ }
2976
+ });
2977
+ router$3.post("/api/v1/markdown_view/heat_data", async (req, res) => {
2978
+ try {
2979
+ const request = await micro.json(req);
2980
+ const { requestId, serviceName, strategyName, exchangeName, frameName, backtest } = request;
2981
+ const data = await ioc.markdownViewService.getHeatData(strategyName, exchangeName, frameName, backtest);
2982
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2983
+ ioc.loggerService.log("/api/v1/markdown_view/heat_data ok", { request, result: omit(result, "data") });
2984
+ return await micro.send(res, 200, result);
2985
+ }
2986
+ catch (error) {
2987
+ ioc.loggerService.log("/api/v1/markdown_view/heat_data error", { error: errorData(error) });
2988
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
2989
+ }
2990
+ });
2991
+ router$3.post("/api/v1/markdown_view/heat_report", async (req, res) => {
2992
+ try {
2993
+ const request = await micro.json(req);
2994
+ const { requestId, serviceName, strategyName, exchangeName, frameName, backtest } = request;
2995
+ const data = await ioc.markdownViewService.getHeatReport(strategyName, exchangeName, frameName, backtest);
2996
+ const result = { data, status: "ok", error: "", requestId, serviceName };
2997
+ ioc.loggerService.log("/api/v1/markdown_view/heat_report ok", { request, result: omit(result, "data") });
2998
+ return await micro.send(res, 200, result);
2999
+ }
3000
+ catch (error) {
3001
+ ioc.loggerService.log("/api/v1/markdown_view/heat_report error", { error: errorData(error) });
3002
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
3003
+ }
3004
+ });
3005
+ router$3.post("/api/v1/markdown_view/walker_data", async (req, res) => {
3006
+ try {
3007
+ const request = await micro.json(req);
3008
+ const { requestId, serviceName, symbol, walkerName } = request;
3009
+ const data = await ioc.markdownViewService.getWalkerData(symbol, walkerName);
3010
+ const result = { data, status: "ok", error: "", requestId, serviceName };
3011
+ ioc.loggerService.log("/api/v1/markdown_view/walker_data ok", { request, result: omit(result, "data") });
3012
+ return await micro.send(res, 200, result);
3013
+ }
3014
+ catch (error) {
3015
+ ioc.loggerService.log("/api/v1/markdown_view/walker_data error", { error: errorData(error) });
3016
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
3017
+ }
3018
+ });
3019
+ router$3.post("/api/v1/markdown_view/walker_report", async (req, res) => {
3020
+ try {
3021
+ const request = await micro.json(req);
3022
+ const { requestId, serviceName, symbol, walkerName } = request;
3023
+ const data = await ioc.markdownViewService.getWalkerReport(symbol, walkerName);
3024
+ const result = { data, status: "ok", error: "", requestId, serviceName };
3025
+ ioc.loggerService.log("/api/v1/markdown_view/walker_report ok", { request, result: omit(result, "data") });
3026
+ return await micro.send(res, 200, result);
3027
+ }
3028
+ catch (error) {
3029
+ ioc.loggerService.log("/api/v1/markdown_view/walker_report error", { error: errorData(error) });
3030
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
3031
+ }
3032
+ });
3033
+
1979
3034
  const router$2 = Router({
1980
3035
  params: true,
1981
3036
  });
@@ -2007,6 +3062,34 @@ router$2.post("/api/v1/global/signal_pending_price", async (req, res) => {
2007
3062
  });
2008
3063
  }
2009
3064
  });
3065
+ router$2.post("/api/v1/global/backtest_list", async (req, res) => {
3066
+ try {
3067
+ const request = await micro.json(req);
3068
+ const { requestId, serviceName } = request;
3069
+ const data = await ioc.backtestMetaService.list();
3070
+ const result = { data, status: "ok", error: "", requestId, serviceName };
3071
+ ioc.loggerService.log("/api/v1/global/backtest_list ok", { request, result: omit(result, "data") });
3072
+ return await micro.send(res, 200, result);
3073
+ }
3074
+ catch (error) {
3075
+ ioc.loggerService.log("/api/v1/global/backtest_list error", { error: errorData(error) });
3076
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
3077
+ }
3078
+ });
3079
+ router$2.post("/api/v1/global/live_list", async (req, res) => {
3080
+ try {
3081
+ const request = await micro.json(req);
3082
+ const { requestId, serviceName } = request;
3083
+ const data = await ioc.liveMetaService.list();
3084
+ const result = { data, status: "ok", error: "", requestId, serviceName };
3085
+ ioc.loggerService.log("/api/v1/global/live_list ok", { request, result: omit(result, "data") });
3086
+ return await micro.send(res, 200, result);
3087
+ }
3088
+ catch (error) {
3089
+ ioc.loggerService.log("/api/v1/global/live_list error", { error: errorData(error) });
3090
+ return await micro.send(res, 200, { status: "error", error: getErrorMessage(error) });
3091
+ }
3092
+ });
2010
3093
 
2011
3094
  const require = createRequire(import.meta.url);
2012
3095
  function getPublicPath() {
@@ -2019,20 +3102,26 @@ const router = Router({
2019
3102
  params: true,
2020
3103
  });
2021
3104
  router.all("/api/v1/health/*", (req, res) => {
2022
- return router$7(req, res, finalhandler(req, res));
3105
+ return router$9(req, res, finalhandler(req, res));
2023
3106
  });
2024
3107
  router.all("/api/v1/mock/*", (req, res) => {
2025
- return router$6(req, res, finalhandler(req, res));
3108
+ return router$8(req, res, finalhandler(req, res));
2026
3109
  });
2027
3110
  router.all("/api/v1/view/*", (req, res) => {
2028
- return router$5(req, res, finalhandler(req, res));
3111
+ return router$7(req, res, finalhandler(req, res));
2029
3112
  });
2030
- router.all("/icon/*", (req, res) => {
3113
+ router.all("/api/v1/markdown_mock/*", (req, res) => {
2031
3114
  return router$4(req, res, finalhandler(req, res));
2032
3115
  });
2033
- router.all("/api/v1/dict/*", (req, res) => {
3116
+ router.all("/api/v1/markdown_view/*", (req, res) => {
2034
3117
  return router$3(req, res, finalhandler(req, res));
2035
3118
  });
3119
+ router.all("/icon/*", (req, res) => {
3120
+ return router$6(req, res, finalhandler(req, res));
3121
+ });
3122
+ router.all("/api/v1/dict/*", (req, res) => {
3123
+ return router$5(req, res, finalhandler(req, res));
3124
+ });
2036
3125
  router.all("/api/v1/global/*", (req, res) => {
2037
3126
  return router$2(req, res, finalhandler(req, res));
2038
3127
  });