snss-types 1.0.6 → 1.0.8

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.
@@ -45,11 +45,11 @@ interface SceneItemMeta {
45
45
  satellites_json?: SceneSatellitesData;
46
46
  nodes_json?: SceneNodesData;
47
47
  links_json?: SceneLinksData;
48
+ metrics_json?: SceneMetricsData;
49
+ evaluation_json?: SceneEvaluationData;
48
50
  tasks_json?: SceneTasksData;
49
51
  flows_json?: SceneFlowsData;
50
52
  timeline_json?: SceneTimelineData;
51
- metrics_json?: SceneMetricsData;
52
- evaluation_json?: SceneEvaluationData;
53
53
  }
54
54
  /**
55
55
  * 场景角色类型
@@ -58,6 +58,71 @@ interface SceneItemMeta {
58
58
  * - final: 最终优化版本
59
59
  */
60
60
  type SceneRole = 'baseline' | 'iteration' | 'final';
61
+ /**
62
+ * 场景任务实体(querySceneTasks 返回的列表项)
63
+ */
64
+ interface SceneTaskEntityData {
65
+ /** 案例ID */
66
+ case_id: string;
67
+ /** 场景ID */
68
+ scene_id: string;
69
+ /** 任务ID */
70
+ task_id: string;
71
+ /** 任务名称 */
72
+ task_name: string;
73
+ /** 任务类型 */
74
+ task_type: string;
75
+ /** 优先级 */
76
+ priority: string;
77
+ /** 关联的业务流ID列表(逗号分隔) */
78
+ flow_ids: string;
79
+ /** 开始时间(秒) */
80
+ start_time_s: number;
81
+ /** 结束时间(秒) */
82
+ end_time_s: number;
83
+ }
84
+ /**
85
+ * 场景业务流实体(querySceneFlows 返回的列表项)
86
+ */
87
+ interface SceneFlowEntityData {
88
+ /** 案例ID */
89
+ case_id: string;
90
+ /** 场景ID */
91
+ scene_id: string;
92
+ /** 所属任务ID */
93
+ task_id: string;
94
+ /** 业务流ID */
95
+ flow_id: string;
96
+ /** 业务流名称 */
97
+ flow_name: string;
98
+ /** 业务类型 */
99
+ service_type: string;
100
+ /** 优先级 */
101
+ priority: string;
102
+ /** 源节点ID */
103
+ src_node_id: string;
104
+ /** 目标节点ID */
105
+ dst_node_id: string;
106
+ /** 开始时间(秒) */
107
+ start_time_s: number;
108
+ /** 结束时间(秒) */
109
+ end_time_s: number;
110
+ }
111
+ /**
112
+ * 场景时间轴实体(querySceneTimelines 返回的列表项)
113
+ */
114
+ interface SceneTimelineEntityData {
115
+ /** 案例ID */
116
+ case_id: string;
117
+ /** 场景ID */
118
+ scene_id: string;
119
+ /** 帧号 */
120
+ frame_no: number;
121
+ /** 时间戳(秒) */
122
+ timestamp_s: number;
123
+ /** JSON 字符串,可解析为 SceneTimelineFrame */
124
+ json_str: string;
125
+ }
61
126
  /**
62
127
  * 时间配置
63
128
  */
@@ -215,6 +280,135 @@ type SceneLinkType = 'ISL' | 'IOL' | 'GSL' | 'BACKHAUL';
215
280
  * 节点类型
216
281
  */
217
282
  type SceneLinkNodeType = 'satellite' | 'gateway' | 'user_terminal' | 'control_center' | 'other';
283
+ /**
284
+ * 概要统计
285
+ */
286
+ interface SceneMetricsSummary {
287
+ active_flow_total: number;
288
+ high_priority_flow_total: number;
289
+ avg_delay_ms: number;
290
+ avg_loss_rate: number;
291
+ avg_throughput_mbps: number;
292
+ congested_link_total: number;
293
+ }
294
+ /**
295
+ * 时序数据点
296
+ */
297
+ interface SceneTimeseriesPoint {
298
+ timestamp_s: number;
299
+ active_flow_count: number;
300
+ network_throughput_mbps: number;
301
+ avg_delay_ms: number;
302
+ avg_loss_rate: number;
303
+ congested_link_count: number;
304
+ }
305
+ /**
306
+ * 图表配置
307
+ */
308
+ interface SceneChartConfig {
309
+ chart_id: string;
310
+ chart_name: string;
311
+ chart_type: string;
312
+ x_field: string;
313
+ y_fields: string[];
314
+ unit: string;
315
+ }
316
+ /**
317
+ * 图表资源
318
+ */
319
+ interface SceneFigureAsset {
320
+ figure_id: string;
321
+ figure_name: string;
322
+ figure_type: string;
323
+ file_path: string;
324
+ description: string;
325
+ }
326
+ /**
327
+ * 指标数据
328
+ */
329
+ interface SceneMetricsData {
330
+ summary: SceneMetricsSummary;
331
+ timeseries: SceneTimeseriesPoint[];
332
+ charts: SceneChartConfig[];
333
+ figure_assets: SceneFigureAsset[];
334
+ }
335
+ /**
336
+ * 评估方法类型
337
+ */
338
+ type SceneEvaluationMethod = 'AHP_ENTROPY';
339
+ /**
340
+ * 指标方向类型
341
+ */
342
+ type SceneMetricDirection = 'benefit' | 'cost';
343
+ /**
344
+ * 评估模型
345
+ */
346
+ interface SceneEvaluationModel {
347
+ method: SceneEvaluationMethod;
348
+ }
349
+ /**
350
+ * 细分指标
351
+ */
352
+ interface SceneMetric {
353
+ metric_id: string;
354
+ metric_name: string;
355
+ direction: SceneMetricDirection;
356
+ value: number;
357
+ normalized_value: number;
358
+ unit: string;
359
+ }
360
+ /**
361
+ * 评估维度
362
+ */
363
+ interface SceneEvaluationDimension {
364
+ dimension_id: string;
365
+ dimension_name: string;
366
+ score: number;
367
+ ahp_weight: number;
368
+ entropy_weight: number;
369
+ combined_weight: number;
370
+ metrics: SceneMetric[];
371
+ }
372
+ /**
373
+ * 最终得分
374
+ */
375
+ interface SceneFinalScore {
376
+ score: number;
377
+ score_scale: string;
378
+ }
379
+ /**
380
+ * 评估图表配置
381
+ */
382
+ interface SceneEvaluationChart {
383
+ chart_id: string;
384
+ chart_name: string;
385
+ chart_type: string;
386
+ label_field: string;
387
+ value_field: string;
388
+ unit: string;
389
+ }
390
+ /**
391
+ * 评估图表资源
392
+ */
393
+ interface SceneEvaluationFigureAsset {
394
+ figure_id: string;
395
+ figure_name: string;
396
+ figure_type: string;
397
+ file_path: string;
398
+ description: string;
399
+ }
400
+ /**
401
+ * 评估结果
402
+ */
403
+ interface SceneEvaluationData {
404
+ scene_id: string;
405
+ scene_name: string;
406
+ evaluation_model: SceneEvaluationModel;
407
+ dimensions: SceneEvaluationDimension[];
408
+ final_score: SceneFinalScore;
409
+ charts: SceneEvaluationChart[];
410
+ figure_assets: SceneEvaluationFigureAsset[];
411
+ }
218
412
  /**
219
413
  * 任务列表
220
414
  */
@@ -346,140 +540,31 @@ interface SceneTaskState {
346
540
  status: string;
347
541
  active_flow_ids: string[];
348
542
  }
543
+
349
544
  /**
350
- * 概要统计
351
- */
352
- interface SceneMetricsSummary {
353
- active_flow_total: number;
354
- high_priority_flow_total: number;
355
- avg_delay_ms: number;
356
- avg_loss_rate: number;
357
- avg_throughput_mbps: number;
358
- congested_link_total: number;
359
- }
360
- /**
361
- * 时序数据点
362
- */
363
- interface SceneTimeseriesPoint {
364
- timestamp_s: number;
365
- active_flow_count: number;
366
- network_throughput_mbps: number;
367
- avg_delay_ms: number;
368
- avg_loss_rate: number;
369
- congested_link_count: number;
370
- }
371
- /**
372
- * 图表配置
373
- */
374
- interface SceneChartConfig {
375
- chart_id: string;
376
- chart_name: string;
377
- chart_type: string;
378
- x_field: string;
379
- y_fields: string[];
380
- unit: string;
381
- }
382
- /**
383
- * 图表资源
384
- */
385
- interface SceneFigureAsset {
386
- figure_id: string;
387
- figure_name: string;
388
- figure_type: string;
389
- file_path: string;
390
- description: string;
391
- }
392
- /**
393
- * 指标数据
394
- */
395
- interface SceneMetricsData {
396
- summary: SceneMetricsSummary;
397
- timeseries: SceneTimeseriesPoint[];
398
- charts: SceneChartConfig[];
399
- figure_assets: SceneFigureAsset[];
400
- }
401
- /**
402
- * 评估方法类型
403
- */
404
- type SceneEvaluationMethod = 'AHP_ENTROPY';
405
- /**
406
- * 指标方向类型
407
- */
408
- type SceneMetricDirection = 'benefit' | 'cost';
409
- /**
410
- * 评估模型
411
- */
412
- interface SceneEvaluationModel {
413
- method: SceneEvaluationMethod;
414
- }
415
- /**
416
- * 细分指标
417
- */
418
- interface SceneMetric {
419
- metric_id: string;
420
- metric_name: string;
421
- direction: SceneMetricDirection;
422
- value: number;
423
- normalized_value: number;
424
- unit: string;
425
- }
426
- /**
427
- * 评估维度
428
- */
429
- interface SceneEvaluationDimension {
430
- dimension_id: string;
431
- dimension_name: string;
432
- score: number;
433
- ahp_weight: number;
434
- entropy_weight: number;
435
- combined_weight: number;
436
- metrics: SceneMetric[];
437
- }
438
- /**
439
- * 最终得分
440
- */
441
- interface SceneFinalScore {
442
- score: number;
443
- score_scale: string;
444
- }
445
- /**
446
- * 评估图表配置
545
+ * 案例类型
447
546
  */
448
- interface SceneEvaluationChart {
449
- chart_id: string;
450
- chart_name: string;
451
- chart_type: string;
452
- label_field: string;
453
- value_field: string;
454
- unit: string;
455
- }
547
+ type CaseType = 'architecture_optimization';
456
548
  /**
457
- * 评估图表资源
549
+ * 案例库树结构对象
458
550
  */
459
- interface SceneEvaluationFigureAsset {
460
- figure_id: string;
461
- figure_name: string;
462
- figure_type: string;
463
- file_path: string;
464
- description: string;
551
+ interface CaseItem {
552
+ label: string;
553
+ value: string;
554
+ meta: CaseItemMeta;
555
+ children: SceneItem[];
556
+ isLeaf?: boolean;
557
+ isOnline?: boolean;
558
+ [x: string]: any;
465
559
  }
466
560
  /**
467
- * 评估结果
561
+ * 案例库树结构对象元数据
468
562
  */
469
- interface SceneEvaluationData {
470
- scene_id: string;
471
- scene_name: string;
472
- evaluation_model: SceneEvaluationModel;
473
- dimensions: SceneEvaluationDimension[];
474
- final_score: SceneFinalScore;
475
- charts: SceneEvaluationChart[];
476
- figure_assets: SceneEvaluationFigureAsset[];
563
+ interface CaseItemMeta {
564
+ case_json?: CaseJsonData;
565
+ evaluation_summary_json?: CaseEvaluationSummaryJsonData;
566
+ optimization_trace_json?: OptimizationTraceJsonData;
477
567
  }
478
-
479
- /**
480
- * 案例类型
481
- */
482
- type CaseType = 'architecture_optimization';
483
568
  /**
484
569
  * 优化评估案例
485
570
  */
@@ -494,30 +579,13 @@ interface CaseJsonData {
494
579
  description: string;
495
580
  /** 默认展示的场景ID */
496
581
  default_scene_id: string;
582
+ /** 是否为实时模式 */
583
+ is_realtime_mode: boolean;
497
584
  /** 场景顺序列表(按迭代顺序排列的 scene_id 数组) */
498
585
  scene_order: string[];
499
586
  /** 场景详情列表 */
500
587
  scenes: CaseSceneInfo[];
501
588
  }
502
- /**
503
- * 案例库树结构对象
504
- */
505
- interface CaseItem {
506
- label: string;
507
- value: string;
508
- meta: CaseItemMeta;
509
- children: SceneItem[];
510
- isLeaf?: boolean;
511
- isOnline?: boolean;
512
- [x: string]: any;
513
- }
514
- /**
515
- * 案例库树结构对象元数据
516
- */
517
- interface CaseItemMeta {
518
- case_json?: CaseJsonData;
519
- evaluation_summary_json?: CaseEvaluationSummaryJsonData;
520
- }
521
589
  /**
522
590
  * 案例库多维度评估结果
523
591
  */
@@ -556,6 +624,91 @@ interface CaseSceneDimensionScore {
556
624
  network_complexity: number;
557
625
  [x: string]: number;
558
626
  }
627
+ /**
628
+ * 网络架构优化搜索过程记录(case 级文件 optimization_trace.json)
629
+ */
630
+ interface OptimizationTraceJsonData {
631
+ /** 案例唯一标识 */
632
+ case_id: string;
633
+ /** 优化终止目标 */
634
+ optimization_goal: OptimizationGoal;
635
+ /** 前端主线展示的场景序列(仅包含初始场景和每轮被选中的最优场景) */
636
+ main_scene_path: string[];
637
+ /** 逐轮优化记录 */
638
+ rounds: OptimizationRound[];
639
+ /** 最终优化得到的场景编号 */
640
+ final_selected_scene_id: string;
641
+ /** 优化停止原因 */
642
+ stop_reason: string;
643
+ }
644
+ /**
645
+ * 优化目标
646
+ */
647
+ interface OptimizationGoal {
648
+ /** 目标类型,如 "completed_task_count" */
649
+ goal_type: string;
650
+ /** 目标任务完成数量 */
651
+ target_completed_task_count?: number;
652
+ /** 目标任务完成率 */
653
+ target_completion_rate?: number;
654
+ }
655
+ /**
656
+ * 单轮优化记录
657
+ */
658
+ interface OptimizationRound {
659
+ /** 优化轮次编号 */
660
+ round_id: string;
661
+ /** 优化轮次序号(从 1 开始) */
662
+ round_index: number;
663
+ /** 本轮候选方案列表 */
664
+ candidate_results: OptimizationCandidate[];
665
+ /** 本轮起点场景 ID */
666
+ base_scene_id: string;
667
+ /** 本轮起点场景的评估结果 */
668
+ base_result: OptimizationEvaluationResult;
669
+ /** 本轮最终选中的优化方向 */
670
+ selected_action_direction_id: string;
671
+ /** 本轮最优方案落成后的主线场景编号 */
672
+ selected_next_scene_id: string;
673
+ /** 选择该候选方案的原因 */
674
+ selection_reason: string;
675
+ /** 选中该候选方案后是否已满足优化目标 */
676
+ is_goal_satisfied_after_selection: boolean;
677
+ }
678
+ /**
679
+ * 候选优化方案
680
+ */
681
+ interface OptimizationCandidate {
682
+ /** 候选方案名称 */
683
+ candidate_scene_name: string;
684
+ /** 优化方向编号 */
685
+ action_direction_id: string;
686
+ /** 优化方向名称 */
687
+ action_direction_name: string;
688
+ /** 相对本轮起点场景的主要配置变化摘要 */
689
+ change_summary: string;
690
+ /** 该候选方案的评估结果 */
691
+ evaluation_result: OptimizationEvaluationResult;
692
+ /** 本轮排名 */
693
+ rank: number;
694
+ /** 是否被选为本轮最优方案 */
695
+ is_selected: boolean;
696
+ }
697
+ /**
698
+ * 优化轮次中的评估结果(起点场景或候选方案的评估摘要)
699
+ */
700
+ interface OptimizationEvaluationResult {
701
+ /** 综合最终得分 */
702
+ final_score: number;
703
+ /** 各维度得分详情 */
704
+ dimension_scores: CaseSceneDimensionScore;
705
+ /** 完成的任务数量 */
706
+ completed_task_count: number;
707
+ /** 任务完成率 */
708
+ task_completion_rate: number;
709
+ /** 有效服务容量(Mbps) */
710
+ effective_service_capacity_mbps: number;
711
+ }
559
712
 
560
713
  declare class DirPathDto {
561
714
  dir: string;
@@ -581,11 +734,11 @@ declare class SendMessageDto {
581
734
  * 基础响应结构
582
735
  * 所有 API 响应的通用格式
583
736
  */
584
- interface BaseResponse {
737
+ interface BaseResponse<T = any> {
585
738
  /** 状态码,通常 200 表示成功,其他表示错误 */
586
739
  code: number;
587
740
  /** 响应数据,可选 */
588
- data?: any;
741
+ data?: T;
589
742
  /** 响应消息或错误描述 */
590
743
  message: string;
591
744
  }
@@ -637,11 +790,18 @@ interface FigureAssetsImageResponse extends BaseResponse {
637
790
  /** base64格式的图片数据 */
638
791
  data?: FigureAssetsImageResponseData;
639
792
  }
793
+ /** 图片数据结构 */
640
794
  interface FigureAssetsImageResponseData {
641
795
  base64: string;
642
796
  mimeType: string;
643
797
  fileSize: number;
644
798
  fileName: string;
645
799
  }
800
+ /** websocket上传进度数据结构 */
801
+ interface WsUploadProgressData {
802
+ clientId: string;
803
+ message: string;
804
+ end: boolean;
805
+ }
646
806
 
647
- export { type BaseResponse, type CaseEvaluationSummaryJsonData, type CaseItem, type CaseItemMeta, type CaseJsonData, type CaseSceneDimensionScore, type CaseSceneEvaluation, type CaseSceneInfo, type CaseTreeResponse, type CaseType, DirPathDto, type FigureAssetsImageResponse, type FigureAssetsImageResponseData, InitCaseCacheDto, ModelDto, ModelEntity, type ModelResponse, type SceneBulkConfigRule, type SceneChartConfig, type SceneConstellation, type SceneConstellationType, type SceneConstellationsData, type SceneEvaluationChart, type SceneEvaluationData, type SceneEvaluationDimension, type SceneEvaluationFigureAsset, type SceneEvaluationMethod, type SceneEvaluationModel, type SceneFigureAsset, type SceneFinalScore, type SceneFlow, type SceneFlowPriority, type SceneFlowState, type SceneFlowsData, type SceneGeoPosition, type SceneItem, type SceneItemMeta, type SceneItemMetaResponse, type SceneLink, type SceneLinkNodeType, type SceneLinkState, type SceneLinkType, type SceneLinksData, type SceneManifestData, type SceneManifestTime, type SceneMetric, type SceneMetricDirection, type SceneMetricsData, type SceneMetricsSummary, type SceneNode, type SceneNodeDisplayOptions, type SceneNodeGatewayCapacity, type SceneNodeMobilityModel, type SceneNodeTerminalType, type SceneNodeType, type SceneNodesData, type SceneRole, type SceneSatellite, type SceneSatelliteTLE, type SceneSatelliteType, type SceneSatellitesData, type SceneServiceType, type SceneTask, type SceneTaskPriority, type SceneTaskState, type SceneTaskType, type SceneTasksData, type SceneTimelineData, type SceneTimelineFrame, type SceneTimeseriesPoint, type SceneUserState, type SceneVelocityWGS, SendMessageDto, type UploadFileResponse, type UploadFileResponseData };
807
+ export { type BaseResponse, type CaseEvaluationSummaryJsonData, type CaseItem, type CaseItemMeta, type CaseJsonData, type CaseSceneDimensionScore, type CaseSceneEvaluation, type CaseSceneInfo, type CaseTreeResponse, type CaseType, DirPathDto, type FigureAssetsImageResponse, type FigureAssetsImageResponseData, InitCaseCacheDto, ModelDto, ModelEntity, type ModelResponse, type OptimizationCandidate, type OptimizationEvaluationResult, type OptimizationGoal, type OptimizationRound, type OptimizationTraceJsonData, type SceneBulkConfigRule, type SceneChartConfig, type SceneConstellation, type SceneConstellationType, type SceneConstellationsData, type SceneEvaluationChart, type SceneEvaluationData, type SceneEvaluationDimension, type SceneEvaluationFigureAsset, type SceneEvaluationMethod, type SceneEvaluationModel, type SceneFigureAsset, type SceneFinalScore, type SceneFlow, type SceneFlowEntityData, type SceneFlowPriority, type SceneFlowState, type SceneFlowsData, type SceneGeoPosition, type SceneItem, type SceneItemMeta, type SceneItemMetaResponse, type SceneLink, type SceneLinkNodeType, type SceneLinkState, type SceneLinkType, type SceneLinksData, type SceneManifestData, type SceneManifestTime, type SceneMetric, type SceneMetricDirection, type SceneMetricsData, type SceneMetricsSummary, type SceneNode, type SceneNodeDisplayOptions, type SceneNodeGatewayCapacity, type SceneNodeMobilityModel, type SceneNodeTerminalType, type SceneNodeType, type SceneNodesData, type SceneRole, type SceneSatellite, type SceneSatelliteTLE, type SceneSatelliteType, type SceneSatellitesData, type SceneServiceType, type SceneTask, type SceneTaskEntityData, type SceneTaskPriority, type SceneTaskState, type SceneTaskType, type SceneTasksData, type SceneTimelineData, type SceneTimelineEntityData, type SceneTimelineFrame, type SceneTimeseriesPoint, type SceneUserState, type SceneVelocityWGS, SendMessageDto, type UploadFileResponse, type UploadFileResponseData, type WsUploadProgressData };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/dto/DirPathDto.ts","../src/dto/InitCaseCacheDto.ts","../src/dto/ModelDto.ts","../src/dto/SendMessageDto.ts","../src/entity/ModelEntity.ts"],"sourcesContent":["import { ModelEntity } from '@/entity/ModelEntity'\r\nimport { CaseItem } from './case'\r\nimport { SceneItemMeta } from './scene'\r\n\r\nexport * from '@/dto/DirPathDto'\r\nexport * from '@/dto/InitCaseCacheDto'\r\nexport * from '@/dto/ModelDto'\r\nexport * from '@/dto/SendMessageDto'\r\nexport * from '@/entity/ModelEntity'\r\nexport * from './case'\r\nexport * from './scene'\r\n\r\n/**\r\n * 基础响应结构\r\n * 所有 API 响应的通用格式\r\n */\r\nexport interface BaseResponse {\r\n /** 状态码,通常 200 表示成功,其他表示错误 */\r\n code: number\r\n /** 响应数据,可选 */\r\n data?: any\r\n /** 响应消息或错误描述 */\r\n message: string\r\n}\r\n\r\n/**\r\n * 库树结构响应\r\n * 用于返回层级化的树形结构数据(如目录树、模型库树等)\r\n */\r\nexport interface CaseTreeResponse extends BaseResponse {\r\n /** 树形节点数组 */\r\n data?: CaseItem[]\r\n}\r\n\r\n/**\r\n * 场景详细信息响应\r\n * 通过场景文件夹路径查询并返回场景详细信息\r\n */\r\nexport interface SceneItemMetaResponse extends BaseResponse {\r\n /** 树形节点数组 */\r\n data?: SceneItemMeta\r\n}\r\n\r\n/**\r\n * JSON 文件上传响应\r\n * 用于返回上传后的文件详细信息\r\n */\r\nexport interface UploadFileResponse extends BaseResponse {\r\n /** 上传文件的具体信息 */\r\n data?: UploadFileResponseData\r\n}\r\nexport interface UploadFileResponseData {\r\n /** 原始文件名 */\r\n originalName: string\r\n /** 文件大小(字节) */\r\n size: number\r\n uploadPath: string\r\n unzipPath?: string\r\n}\r\n\r\n/**\r\n * 模型响应\r\n * 用于返回单个模型、模型列表或空值\r\n */\r\nexport interface ModelResponse extends BaseResponse {\r\n /** 模型实体数据,可能是单个对象、数组或 null */\r\n data?: ModelEntity | ModelEntity[] | null\r\n}\r\n\r\n/**\r\n * 模型图片响应\r\n * 用于返回模型图片的 base64 数据\r\n */\r\nexport interface FigureAssetsImageResponse extends BaseResponse {\r\n /** base64格式的图片数据 */\r\n data?: FigureAssetsImageResponseData\r\n}\r\nexport interface FigureAssetsImageResponseData {\r\n base64: string\r\n mimeType: string\r\n fileSize: number\r\n fileName: string\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\nexport class DirPathDto {\n @ApiProperty({ description: '相对路径或绝对路径', default: '/dataset/cases' })\n dir!: string\n\n @ApiProperty({\n description: '是否为绝对路径,可选参数',\n default: false,\n })\n isAbsolutePath?: boolean\n}\n","import { ApiProperty } from '@nestjs/swagger'\r\nimport { DirPathDto } from './DirPathDto'\r\nexport class InitCaseCacheDto {\r\n @ApiProperty({\r\n description:\r\n '目标目录路径(isAbsolutePath 为 false 是相对于后端部署包的根目录\"/dataset/cases\",isAbsolutePath为 true 是绝对路径\"D:\\\\XXX\")',\r\n type: [DirPathDto], // 这里必须指定类型\r\n example: [\r\n {\r\n dir: '/dataset/cases',\r\n isAbsolutePath: false,\r\n },\r\n // ,\r\n // {\r\n // dir: 'D:\\\\test',\r\n // isAbsolutePath: true,\r\n // },\r\n ],\r\n })\r\n dirPaths?: Array<DirPathDto>\r\n\r\n @ApiProperty({\r\n description: '文件名模糊匹配关键词,可选参数',\r\n default: '',\r\n })\r\n fileName?: string\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\r\n\r\nexport class ModelDto {\r\n @ApiProperty({ description: '模型名称', default: '' })\r\n name!: string\r\n\r\n @ApiProperty({\r\n description: '模型文件 URL(相对路径或完整 URL)',\r\n default: '',\r\n })\r\n url!: string\r\n\r\n @ApiProperty({\r\n description: '示意图片 URL(相对路径或完整 URL)',\r\n default: '',\r\n })\r\n imageUrl!: string\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\nexport class SendMessageDto {\n @ApiProperty({ description: '要发送的消息内容' })\n @IsString() // 限制必须是字符串\n @IsNotEmpty() // 限制不能为空\n msg!: string\n}\n","import {\r\n Entity,\r\n PrimaryGeneratedColumn,\r\n Column,\r\n UpdateDateColumn,\r\n} from 'typeorm'\r\n\r\n@Entity() // 默认映射的数据库表名为 model-entity\r\nexport class ModelEntity {\r\n @PrimaryGeneratedColumn() // 自动生成主键值(不用你手动赋值)\r\n id!: number\r\n\r\n @Column()\r\n name!: string // 模型名称\r\n\r\n @Column()\r\n url!: string // 模型url\r\n\r\n @Column()\r\n imageUrl!: string // 示意图片url\r\n\r\n // 每次执行 save 操作更新该实体时,该字段会自动更新为当前时间戳\r\n @UpdateDateColumn()\r\n updateTime!: Date\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA4B;AACrB,IAAM,aAAN,MAAiB;AAAA,EAEtB;AAAA,EAMA;AACF;AAPE;AAAA,MADC,4BAAY,EAAE,aAAa,0DAAa,SAAS,iBAAiB,CAAC;AAAA,GADzD,WAEX;AAMA;AAAA,MAJC,4BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAPU,WAQX;;;ACTF,IAAAA,kBAA4B;AAErB,IAAM,mBAAN,MAAuB;AAAA,EAiB5B;AAAA,EAMA;AACF;AAPE;AAAA,MAhBC,6BAAY;AAAA,IACX,aACE;AAAA,IACF,MAAM,CAAC,UAAU;AAAA;AAAA,IACjB,SAAS;AAAA,MACP;AAAA,QACE,KAAK;AAAA,QACL,gBAAgB;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AAAA,EACF,CAAC;AAAA,GAhBU,iBAiBX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAtBU,iBAuBX;;;ACzBF,IAAAC,kBAA4B;AAErB,IAAM,WAAN,MAAe;AAAA,EAEpB;AAAA,EAMA;AAAA,EAMA;AACF;AAbE;AAAA,MADC,6BAAY,EAAE,aAAa,4BAAQ,SAAS,GAAG,CAAC;AAAA,GADtC,SAEX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAPU,SAQX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAbU,SAcX;;;AChBF,IAAAC,kBAA4B;AAC5B,6BAAqC;AAC9B,IAAM,iBAAN,MAAqB;AAAA;AAAA,EAI1B;AACF;AADE;AAAA,MAHC,6BAAY,EAAE,aAAa,mDAAW,CAAC;AAAA,MACvC,iCAAS;AAAA,MACT,mCAAW;AAAA,GAHD,eAIX;;;ACNF,qBAKO;AAGA,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEvB;AAAA,EAGA;AAAA,EAGA;AAAA,EAGA;AAAA,EAIA;AACF;AAdE;AAAA,MADC,uCAAuB;AAAA,GADb,YAEX;AAGA;AAAA,MADC,uBAAO;AAAA,GAJG,YAKX;AAGA;AAAA,MADC,uBAAO;AAAA,GAPG,YAQX;AAGA;AAAA,MADC,uBAAO;AAAA,GAVG,YAWX;AAIA;AAAA,MADC,iCAAiB;AAAA,GAdP,YAeX;AAfW,cAAN;AAAA,MADN,uBAAO;AAAA,GACK;","names":["import_swagger","import_swagger","import_swagger"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/dto/DirPathDto.ts","../src/dto/InitCaseCacheDto.ts","../src/dto/ModelDto.ts","../src/dto/SendMessageDto.ts","../src/entity/ModelEntity.ts"],"sourcesContent":["import { ModelEntity } from '@/entity/ModelEntity'\r\nimport { CaseItem } from './case'\r\nimport { SceneItemMeta } from './scene'\r\n\r\nexport * from '@/dto/DirPathDto'\r\nexport * from '@/dto/InitCaseCacheDto'\r\nexport * from '@/dto/ModelDto'\r\nexport * from '@/dto/SendMessageDto'\r\nexport * from '@/entity/ModelEntity'\r\nexport * from './case'\r\nexport * from './scene'\r\n\r\n/**\r\n * 基础响应结构\r\n * 所有 API 响应的通用格式\r\n */\r\nexport interface BaseResponse<T = any> {\r\n /** 状态码,通常 200 表示成功,其他表示错误 */\r\n code: number\r\n /** 响应数据,可选 */\r\n data?: T\r\n /** 响应消息或错误描述 */\r\n message: string\r\n}\r\n\r\n/**\r\n * 库树结构响应\r\n * 用于返回层级化的树形结构数据(如目录树、模型库树等)\r\n */\r\nexport interface CaseTreeResponse extends BaseResponse {\r\n /** 树形节点数组 */\r\n data?: CaseItem[]\r\n}\r\n\r\n/**\r\n * 场景详细信息响应\r\n * 通过场景文件夹路径查询并返回场景详细信息\r\n */\r\nexport interface SceneItemMetaResponse extends BaseResponse {\r\n /** 树形节点数组 */\r\n data?: SceneItemMeta\r\n}\r\n\r\n/**\r\n * JSON 文件上传响应\r\n * 用于返回上传后的文件详细信息\r\n */\r\nexport interface UploadFileResponse extends BaseResponse {\r\n /** 上传文件的具体信息 */\r\n data?: UploadFileResponseData\r\n}\r\nexport interface UploadFileResponseData {\r\n /** 原始文件名 */\r\n originalName: string\r\n /** 文件大小(字节) */\r\n size: number\r\n uploadPath: string\r\n unzipPath?: string\r\n}\r\n\r\n/**\r\n * 模型响应\r\n * 用于返回单个模型、模型列表或空值\r\n */\r\nexport interface ModelResponse extends BaseResponse {\r\n /** 模型实体数据,可能是单个对象、数组或 null */\r\n data?: ModelEntity | ModelEntity[] | null\r\n}\r\n\r\n/**\r\n * 模型图片响应\r\n * 用于返回模型图片的 base64 数据\r\n */\r\nexport interface FigureAssetsImageResponse extends BaseResponse {\r\n /** base64格式的图片数据 */\r\n data?: FigureAssetsImageResponseData\r\n}\r\n\r\n/** 图片数据结构 */\r\nexport interface FigureAssetsImageResponseData {\r\n base64: string\r\n mimeType: string\r\n fileSize: number\r\n fileName: string\r\n}\r\n\r\n/** websocket上传进度数据结构 */\r\nexport interface WsUploadProgressData {\r\n clientId: string\r\n message: string\r\n end: boolean\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\nexport class DirPathDto {\n @ApiProperty({ description: '相对路径或绝对路径', default: '/dataset/cases' })\n dir!: string\n\n @ApiProperty({\n description: '是否为绝对路径,可选参数',\n default: false,\n })\n isAbsolutePath?: boolean\n}\n","import { ApiProperty } from '@nestjs/swagger'\r\nimport { DirPathDto } from './DirPathDto'\r\nexport class InitCaseCacheDto {\r\n @ApiProperty({\r\n description:\r\n '目标目录路径(isAbsolutePath 为 false 是相对于后端部署包的根目录\"/dataset/cases\",isAbsolutePath为 true 是绝对路径\"D:\\\\XXX\")',\r\n type: [DirPathDto], // 这里必须指定类型\r\n example: [\r\n {\r\n dir: '/dataset/cases',\r\n isAbsolutePath: false,\r\n },\r\n // ,\r\n // {\r\n // dir: 'D:\\\\test',\r\n // isAbsolutePath: true,\r\n // },\r\n ],\r\n })\r\n dirPaths?: Array<DirPathDto>\r\n\r\n @ApiProperty({\r\n description: '文件名模糊匹配关键词,可选参数',\r\n default: '',\r\n })\r\n fileName?: string\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\r\n\r\nexport class ModelDto {\r\n @ApiProperty({ description: '模型名称', default: '' })\r\n name!: string\r\n\r\n @ApiProperty({\r\n description: '模型文件 URL(相对路径或完整 URL)',\r\n default: '',\r\n })\r\n url!: string\r\n\r\n @ApiProperty({\r\n description: '示意图片 URL(相对路径或完整 URL)',\r\n default: '',\r\n })\r\n imageUrl!: string\r\n}\r\n","import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\nexport class SendMessageDto {\n @ApiProperty({ description: '要发送的消息内容' })\n @IsString() // 限制必须是字符串\n @IsNotEmpty() // 限制不能为空\n msg!: string\n}\n","import {\r\n Entity,\r\n PrimaryGeneratedColumn,\r\n Column,\r\n UpdateDateColumn,\r\n} from 'typeorm'\r\n\r\n@Entity() // 默认映射的数据库表名为 model-entity\r\nexport class ModelEntity {\r\n @PrimaryGeneratedColumn() // 自动生成主键值(不用你手动赋值)\r\n id!: number\r\n\r\n @Column()\r\n name!: string // 模型名称\r\n\r\n @Column()\r\n url!: string // 模型url\r\n\r\n @Column()\r\n imageUrl!: string // 示意图片url\r\n\r\n // 每次执行 save 操作更新该实体时,该字段会自动更新为当前时间戳\r\n @UpdateDateColumn()\r\n updateTime!: Date\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA4B;AACrB,IAAM,aAAN,MAAiB;AAAA,EAEtB;AAAA,EAMA;AACF;AAPE;AAAA,MADC,4BAAY,EAAE,aAAa,0DAAa,SAAS,iBAAiB,CAAC;AAAA,GADzD,WAEX;AAMA;AAAA,MAJC,4BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAPU,WAQX;;;ACTF,IAAAA,kBAA4B;AAErB,IAAM,mBAAN,MAAuB;AAAA,EAiB5B;AAAA,EAMA;AACF;AAPE;AAAA,MAhBC,6BAAY;AAAA,IACX,aACE;AAAA,IACF,MAAM,CAAC,UAAU;AAAA;AAAA,IACjB,SAAS;AAAA,MACP;AAAA,QACE,KAAK;AAAA,QACL,gBAAgB;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AAAA,EACF,CAAC;AAAA,GAhBU,iBAiBX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAtBU,iBAuBX;;;ACzBF,IAAAC,kBAA4B;AAErB,IAAM,WAAN,MAAe;AAAA,EAEpB;AAAA,EAMA;AAAA,EAMA;AACF;AAbE;AAAA,MADC,6BAAY,EAAE,aAAa,4BAAQ,SAAS,GAAG,CAAC;AAAA,GADtC,SAEX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAPU,SAQX;AAMA;AAAA,MAJC,6BAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AAAA,GAbU,SAcX;;;AChBF,IAAAC,kBAA4B;AAC5B,6BAAqC;AAC9B,IAAM,iBAAN,MAAqB;AAAA;AAAA,EAI1B;AACF;AADE;AAAA,MAHC,6BAAY,EAAE,aAAa,mDAAW,CAAC;AAAA,MACvC,iCAAS;AAAA,MACT,mCAAW;AAAA,GAHD,eAIX;;;ACNF,qBAKO;AAGA,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEvB;AAAA,EAGA;AAAA,EAGA;AAAA,EAGA;AAAA,EAIA;AACF;AAdE;AAAA,MADC,uCAAuB;AAAA,GADb,YAEX;AAGA;AAAA,MADC,uBAAO;AAAA,GAJG,YAKX;AAGA;AAAA,MADC,uBAAO;AAAA,GAPG,YAQX;AAGA;AAAA,MADC,uBAAO;AAAA,GAVG,YAWX;AAIA;AAAA,MADC,iCAAiB;AAAA,GAdP,YAeX;AAfW,cAAN;AAAA,MADN,uBAAO;AAAA,GACK;","names":["import_swagger","import_swagger","import_swagger"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snss-types",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "label": "卫星网络仿真文件解析数据传输服务",
5
5
  "description": "基于 Nestjs 的 服务端接口,提供文件数据处理解析传输等服务接口",
6
6
  "private": false,
@@ -14,9 +14,9 @@
14
14
  "scripts": {
15
15
  "dev": "nest start --watch",
16
16
  "build:server": "nest build",
17
+ "start": "node dist/src/main.js",
17
18
  "build:types": "tsup --config tsup.config.ts",
18
19
  "publish:types": "npm publish",
19
- "start": "node dist/src/main.js",
20
20
  "pm2:start": "npx pm2 start ecosystem.config.js --name nest-app",
21
21
  "pm2:save": "npx pm2 save",
22
22
  "pm2:list": "npx pm2 list",
@@ -33,12 +33,14 @@
33
33
  "@nestjs/common": "^11.0.17",
34
34
  "@nestjs/config": "^4.0.4",
35
35
  "@nestjs/core": "^11.1.21",
36
+ "@nestjs/event-emitter": "^3.1.0",
36
37
  "@nestjs/platform-express": "^11.1.11",
37
38
  "@nestjs/platform-socket.io": "^11.1.19",
38
39
  "@nestjs/platform-ws": "^11.1.19",
39
40
  "@nestjs/swagger": "^11.4.2",
40
41
  "@nestjs/typeorm": "^11.0.1",
41
42
  "@nestjs/websockets": "^11.1.19",
43
+ "class-transformer": "^0.5.1",
42
44
  "class-validator": "^0.15.1",
43
45
  "cross-zip": "^4.0.1",
44
46
  "dotenv": "^17.4.2",
@@ -85,4 +87,4 @@
85
87
  "@swc/core"
86
88
  ]
87
89
  }
88
- }
90
+ }