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